|
Packit Service |
de44cd |
/*
|
|
Packit Service |
de44cd |
* This program is free software; you can redistribute it and/or modify it
|
|
Packit Service |
de44cd |
* under the terms of the GNU Lesser General Public License as published by
|
|
Packit Service |
de44cd |
* the Free Software Foundation.
|
|
Packit Service |
de44cd |
*
|
|
Packit Service |
de44cd |
* This program is distributed in the hope that it will be useful, but
|
|
Packit Service |
de44cd |
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
Packit Service |
de44cd |
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
Packit Service |
de44cd |
* for more details.
|
|
Packit Service |
de44cd |
*
|
|
Packit Service |
de44cd |
* You should have received a copy of the GNU Lesser General Public License
|
|
Packit Service |
de44cd |
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
Packit Service |
de44cd |
*
|
|
Packit Service |
de44cd |
*
|
|
Packit Service |
de44cd |
* Authors:
|
|
Packit Service |
de44cd |
* Michael Zucchi <notzed@ximian.com>
|
|
Packit Service |
de44cd |
*
|
|
Packit Service |
de44cd |
* Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
|
|
Packit Service |
de44cd |
*
|
|
Packit Service |
de44cd |
*/
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
#include "evolution-config.h"
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
#include <string.h>
|
|
Packit Service |
de44cd |
#include <stdlib.h>
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
#include "em-event.h"
|
|
Packit Service |
de44cd |
#include "composer/e-msg-composer.h"
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
static EMEvent *em_event;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
G_DEFINE_TYPE (EMEvent, em_event, E_TYPE_EVENT)
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
static void
|
|
Packit Service |
de44cd |
eme_target_free (EEvent *ep,
|
|
Packit Service |
de44cd |
EEventTarget *t)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
switch (t->type) {
|
|
Packit Service |
de44cd |
case EM_EVENT_TARGET_FOLDER: {
|
|
Packit Service |
de44cd |
EMEventTargetFolder *s = (EMEventTargetFolder *) t;
|
|
Packit Service |
de44cd |
if (s->store != NULL)
|
|
Packit Service |
de44cd |
g_object_unref (s->store);
|
|
Packit Service |
de44cd |
g_free (s->folder_name);
|
|
Packit Service |
de44cd |
g_free (s->display_name);
|
|
Packit Service |
de44cd |
g_free (s->msg_uid);
|
|
Packit Service |
de44cd |
g_free (s->msg_sender);
|
|
Packit Service |
de44cd |
g_free (s->msg_subject);
|
|
Packit Service |
de44cd |
break; }
|
|
Packit Service |
de44cd |
case EM_EVENT_TARGET_MESSAGE: {
|
|
Packit Service |
de44cd |
EMEventTargetMessage *s = (EMEventTargetMessage *) t;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
if (s->folder)
|
|
Packit Service |
de44cd |
g_object_unref (s->folder);
|
|
Packit Service |
de44cd |
if (s->message)
|
|
Packit Service |
de44cd |
g_object_unref (s->message);
|
|
Packit Service |
de44cd |
g_free (s->uid);
|
|
Packit Service |
de44cd |
if (s->composer)
|
|
Packit Service |
de44cd |
g_object_unref (s->composer);
|
|
Packit Service |
de44cd |
break; }
|
|
Packit Service |
de44cd |
case EM_EVENT_TARGET_COMPOSER : {
|
|
Packit Service |
de44cd |
EMEventTargetComposer *s = (EMEventTargetComposer *) t;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
if (s->composer)
|
|
Packit Service |
de44cd |
g_object_unref (s->composer);
|
|
Packit Service |
de44cd |
break; }
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
/* Chain up to parent's target_free() method. */
|
|
Packit Service |
de44cd |
E_EVENT_CLASS (em_event_parent_class)->target_free (ep, t);
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
static void
|
|
Packit Service |
de44cd |
em_event_class_init (EMEventClass *class)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
EEventClass *event_class;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
event_class = E_EVENT_CLASS (class);
|
|
Packit Service |
de44cd |
event_class->target_free = eme_target_free;
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
static void
|
|
Packit Service |
de44cd |
em_event_init (EMEvent *event)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
/**
|
|
Packit Service |
de44cd |
* em_event_peek:
|
|
Packit Service |
de44cd |
* @void:
|
|
Packit Service |
de44cd |
*
|
|
Packit Service |
de44cd |
* Get the singular instance of the mail event handler.
|
|
Packit Service |
de44cd |
*
|
|
Packit Service |
de44cd |
* Return value:
|
|
Packit Service |
de44cd |
**/
|
|
Packit Service |
de44cd |
EMEvent *
|
|
Packit Service |
de44cd |
em_event_peek (void)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
if (em_event == NULL) {
|
|
Packit Service |
de44cd |
em_event = g_object_new (EM_TYPE_EVENT, NULL);
|
|
Packit Service |
de44cd |
e_event_construct (
|
|
Packit Service |
de44cd |
&em_event->popup,
|
|
Packit Service |
de44cd |
"org.gnome.evolution.mail.events");
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
return em_event;
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
EMEventTargetFolder *
|
|
Packit Service |
de44cd |
em_event_target_new_folder (EMEvent *eme,
|
|
Packit Service |
de44cd |
CamelStore *store,
|
|
Packit Service |
de44cd |
const gchar *folder_name,
|
|
Packit Service |
de44cd |
guint new,
|
|
Packit Service |
de44cd |
const gchar *msg_uid,
|
|
Packit Service |
de44cd |
const gchar *msg_sender,
|
|
Packit Service |
de44cd |
const gchar *msg_subject)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
EMEventTargetFolder *t;
|
|
Packit Service |
de44cd |
guint32 flags = new ? EM_EVENT_FOLDER_NEWMAIL : 0;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
g_return_val_if_fail (CAMEL_IS_STORE (store), NULL);
|
|
Packit Service |
de44cd |
g_return_val_if_fail (folder_name != NULL, NULL);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
t = e_event_target_new (
|
|
Packit Service |
de44cd |
&eme->popup, EM_EVENT_TARGET_FOLDER, sizeof (*t));
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
t->store = g_object_ref (store);
|
|
Packit Service |
de44cd |
t->folder_name = g_strdup (folder_name);
|
|
Packit Service |
de44cd |
t->target.mask = ~flags;
|
|
Packit Service |
de44cd |
t->new = new;
|
|
Packit Service |
de44cd |
t->msg_uid = g_strdup (msg_uid);
|
|
Packit Service |
de44cd |
t->msg_sender = g_strdup (msg_sender);
|
|
Packit Service |
de44cd |
t->msg_subject = g_strdup (msg_subject);
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
return t;
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
EMEventTargetComposer *
|
|
Packit Service |
de44cd |
em_event_target_new_composer (EMEvent *eme,
|
|
Packit Service |
de44cd |
EMsgComposer *composer,
|
|
Packit Service |
de44cd |
guint32 flags)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
EMEventTargetComposer *t;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
t = e_event_target_new (
|
|
Packit Service |
de44cd |
&eme->popup, EM_EVENT_TARGET_COMPOSER, sizeof (*t));
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
t->composer = g_object_ref (composer);
|
|
Packit Service |
de44cd |
t->target.mask = ~flags;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
return t;
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
EMEventTargetMessage *
|
|
Packit Service |
de44cd |
em_event_target_new_message (EMEvent *eme,
|
|
Packit Service |
de44cd |
CamelFolder *folder,
|
|
Packit Service |
de44cd |
CamelMimeMessage *message,
|
|
Packit Service |
de44cd |
const gchar *uid,
|
|
Packit Service |
de44cd |
guint32 flags,
|
|
Packit Service |
de44cd |
EMsgComposer *composer)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
EMEventTargetMessage *t;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
t = e_event_target_new (
|
|
Packit Service |
de44cd |
&eme->popup, EM_EVENT_TARGET_MESSAGE, sizeof (*t));
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
t->uid = g_strdup (uid);
|
|
Packit Service |
de44cd |
t->folder = folder;
|
|
Packit Service |
de44cd |
if (folder)
|
|
Packit Service |
de44cd |
g_object_ref (folder);
|
|
Packit Service |
de44cd |
t->message = message;
|
|
Packit Service |
de44cd |
if (message)
|
|
Packit Service |
de44cd |
g_object_ref (message);
|
|
Packit Service |
de44cd |
t->target.mask = ~flags;
|
|
Packit Service |
de44cd |
if (composer)
|
|
Packit Service |
de44cd |
t->composer = g_object_ref (G_OBJECT (composer));
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
return t;
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
EMEventTargetSendReceive *
|
|
Packit Service |
de44cd |
em_event_target_new_send_receive (EMEvent *eme,
|
|
Packit Service |
de44cd |
GtkWidget *grid,
|
|
Packit Service |
de44cd |
gpointer data,
|
|
Packit Service |
de44cd |
gint row,
|
|
Packit Service |
de44cd |
guint32 flags)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
EMEventTargetSendReceive *t;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
t = e_event_target_new (
|
|
Packit Service |
de44cd |
&eme->popup, EM_EVENT_TARGET_SEND_RECEIVE, sizeof (*t));
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
t->grid = grid;
|
|
Packit Service |
de44cd |
t->data = data;
|
|
Packit Service |
de44cd |
t->row = row;
|
|
Packit Service |
de44cd |
t->target.mask = ~flags;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
return t;
|
|
Packit Service |
de44cd |
}
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
EMEventTargetCustomIcon *
|
|
Packit Service |
de44cd |
em_event_target_new_custom_icon (EMEvent *eme,
|
|
Packit Service |
de44cd |
GtkTreeStore *store,
|
|
Packit Service |
de44cd |
GtkTreeIter *iter,
|
|
Packit Service |
de44cd |
const gchar *folder_name,
|
|
Packit Service |
de44cd |
guint32 flags)
|
|
Packit Service |
de44cd |
{
|
|
Packit Service |
de44cd |
EMEventTargetCustomIcon *t;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
t = e_event_target_new (
|
|
Packit Service |
de44cd |
&eme->popup, EM_EVENT_TARGET_CUSTOM_ICON, sizeof (*t));
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
t->store = store;
|
|
Packit Service |
de44cd |
t->iter = iter;
|
|
Packit Service |
de44cd |
t->folder_name = folder_name;
|
|
Packit Service |
de44cd |
t->target.mask = ~flags;
|
|
Packit Service |
de44cd |
|
|
Packit Service |
de44cd |
return t;
|
|
Packit Service |
de44cd |
}
|