[evolution] EMailSession: Add "activity-added" signal.



commit df85cb1b7a47f713cb775f648f735e642a1bb71b
Author: Matthew Barnes <mbarnes redhat com>
Date:   Fri Dec 16 06:34:13 2011 -0500

    EMailSession: Add "activity-added" signal.
    
    EMailBackend catches these signals and forwards the EActivity to
    e_shell_backend_add_activity().

 mail/e-mail-backend.c |   10 +++++++++-
 mail/e-mail-session.c |   27 +++++++++++++++++++++++++++
 mail/e-mail-session.h |    6 ++++++
 3 files changed, 42 insertions(+), 1 deletions(-)
---
diff --git a/mail/e-mail-backend.c b/mail/e-mail-backend.c
index 0640c7f..dee2027 100644
--- a/mail/e-mail-backend.c
+++ b/mail/e-mail-backend.c
@@ -776,13 +776,19 @@ mail_backend_constructed (GObject *object)
 	camel_provider_init ();
 
 	priv->session = e_mail_session_new ();
-	folder_cache = e_mail_session_get_folder_cache (priv->session);
 
 	g_object_bind_property (
 		shell, "online",
 		priv->session, "online",
 		G_BINDING_SYNC_CREATE);
 
+	/* Propagate "activity-added" signals from
+	 * the mail session to the shell backend. */
+	g_signal_connect_swapped (
+		priv->session, "activity-added",
+		G_CALLBACK (e_shell_backend_add_activity),
+		shell_backend);
+
 	g_signal_connect (
 		priv->session, "job-started",
 		G_CALLBACK (mail_backend_job_started_cb),
@@ -817,6 +823,8 @@ mail_backend_constructed (GObject *object)
 		G_CALLBACK (mail_backend_quit_requested_cb),
 		shell_backend);
 
+	folder_cache = e_mail_session_get_folder_cache (priv->session);
+
 	g_signal_connect (
 		folder_cache, "folder-deleted",
 		G_CALLBACK (mail_backend_folder_deleted_cb),
diff --git a/mail/e-mail-session.c b/mail/e-mail-session.c
index ba4819d..24fd0be 100644
--- a/mail/e-mail-session.c
+++ b/mail/e-mail-session.c
@@ -117,6 +117,13 @@ enum {
 	PROP_VFOLDER_STORE
 };
 
+enum {
+	ACTIVITY_ADDED,
+	LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL];
+
 static const gchar *local_folder_names[E_MAIL_NUM_LOCAL_FOLDERS] = {
 	N_("Inbox"),		/* E_MAIL_LOCAL_FOLDER_INBOX */
 	N_("Drafts"),		/* E_MAIL_LOCAL_FOLDER_DRAFTS */
@@ -1772,6 +1779,16 @@ e_mail_session_class_init (EMailSessionClass *class)
 			CAMEL_TYPE_STORE,
 			G_PARAM_READABLE |
 			G_PARAM_STATIC_STRINGS));
+
+	signals[ACTIVITY_ADDED] = g_signal_new (
+		"activity-added",
+		G_OBJECT_CLASS_TYPE (class),
+		G_SIGNAL_RUN_LAST,
+		G_STRUCT_OFFSET (EMailSessionClass, activity_added),
+		NULL, NULL,
+		g_cclosure_marshal_VOID__OBJECT,
+		G_TYPE_NONE, 1,
+		E_TYPE_ACTIVITY);
 }
 
 static void
@@ -1826,6 +1843,16 @@ e_mail_session_new (void)
 		NULL);
 }
 
+void
+e_mail_session_add_activity (EMailSession *session,
+                             EActivity *activity)
+{
+	g_return_if_fail (E_IS_MAIL_SESSION (session));
+	g_return_if_fail (E_IS_ACTIVITY (activity));
+
+	g_signal_emit (session, signals[ACTIVITY_ADDED], 0, activity);
+}
+
 EMailAccountStore *
 e_mail_session_get_account_store (EMailSession *session)
 {
diff --git a/mail/e-mail-session.h b/mail/e-mail-session.h
index f810cf6..ccba826 100644
--- a/mail/e-mail-session.h
+++ b/mail/e-mail-session.h
@@ -26,6 +26,7 @@
 #define E_MAIL_SESSION_H
 
 #include <camel/camel.h>
+#include <e-util/e-activity.h>
 #include <mail/e-mail-enums.h>
 #include <mail/e-mail-account-store.h>
 #include <mail/mail-folder-cache.h>
@@ -66,10 +67,15 @@ struct _EMailSession {
 
 struct _EMailSessionClass {
 	CamelSessionClass parent_class;
+
+	void		(*activity_added)	(EMailSession *session,
+						 EActivity *activity);
 };
 
 GType		e_mail_session_get_type		(void);
 EMailSession *	e_mail_session_new		(void);
+void		e_mail_session_add_activity	(EMailSession *session,
+						 EActivity *activity);
 EMailAccountStore *
 		e_mail_session_get_account_store
 						(EMailSession *session);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]