From ff9fcffeca2bdc37a91e0c2f0cb51f871a3cd7a1 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 24 May 2011 11:02:59 -0400 Subject: EMFolderTree: Add an EAlertSink property. Now EMFolderTree has access to both an EShellBackend and an EAlertSink; everything it needs to build and submit EActivity instances. --- mail/em-folder-tree.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 58 insertions(+), 3 deletions(-) (limited to 'mail/em-folder-tree.c') diff --git a/mail/em-folder-tree.c b/mail/em-folder-tree.c index 613f10dc05..8d856c12e5 100644 --- a/mail/em-folder-tree.c +++ b/mail/em-folder-tree.c @@ -78,6 +78,7 @@ struct _selected_uri { struct _EMFolderTreePrivate { EMailBackend *backend; + EAlertSink *alert_sink; /* selected_uri structures of each path pending selection. */ GSList *select_uris; @@ -119,6 +120,7 @@ struct _EMFolderTreePrivate { enum { PROP_0, + PROP_ALERT_SINK, PROP_BACKEND, PROP_COPY_TARGET_LIST, PROP_ELLIPSIZE, @@ -718,6 +720,16 @@ exit: g_list_free (list); } +static void +folder_tree_set_alert_sink (EMFolderTree *folder_tree, + EAlertSink *alert_sink) +{ + g_return_if_fail (E_IS_ALERT_SINK (alert_sink)); + g_return_if_fail (folder_tree->priv->alert_sink == NULL); + + folder_tree->priv->alert_sink = g_object_ref (alert_sink); +} + static void folder_tree_set_backend (EMFolderTree *folder_tree, EMailBackend *backend) @@ -765,6 +777,12 @@ folder_tree_set_property (GObject *object, GParamSpec *pspec) { switch (property_id) { + case PROP_ALERT_SINK: + folder_tree_set_alert_sink ( + EM_FOLDER_TREE (object), + g_value_get_object (value)); + return; + case PROP_BACKEND: folder_tree_set_backend ( EM_FOLDER_TREE (object), @@ -788,6 +806,13 @@ folder_tree_get_property (GObject *object, GParamSpec *pspec) { switch (property_id) { + case PROP_ALERT_SINK: + g_value_set_object ( + value, + em_folder_tree_get_alert_sink ( + EM_FOLDER_TREE (object))); + return; + case PROP_BACKEND: g_value_set_object ( value, @@ -847,6 +872,11 @@ folder_tree_dispose (GObject *object) priv->autoexpand_id = 0; } + if (priv->alert_sink != NULL) { + g_object_unref (priv->alert_sink); + priv->alert_sink = NULL; + } + if (priv->backend != NULL) { g_object_unref (priv->backend); priv->backend = NULL; @@ -1105,6 +1135,18 @@ folder_tree_class_init (EMFolderTreeClass *class) tree_view_class->test_collapse_row = folder_tree_test_collapse_row; tree_view_class->row_expanded = folder_tree_row_expanded; + g_object_class_install_property ( + object_class, + PROP_ALERT_SINK, + g_param_spec_object ( + "alert-sink", + NULL, + NULL, + E_TYPE_ALERT_SINK, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS)); + g_object_class_install_property ( object_class, PROP_BACKEND, @@ -1114,7 +1156,8 @@ folder_tree_class_init (EMFolderTreeClass *class) NULL, E_TYPE_MAIL_BACKEND, G_PARAM_READWRITE | - G_PARAM_CONSTRUCT_ONLY)); + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS)); /* Inherited from ESelectableInterface */ g_object_class_override_property ( @@ -1704,12 +1747,14 @@ em_folder_tree_get_type (void) } GtkWidget * -em_folder_tree_new (EMailBackend *backend) +em_folder_tree_new (EMailBackend *backend, + EAlertSink *alert_sink) { EMailSession *session; const gchar *data_dir; g_return_val_if_fail (E_IS_MAIL_BACKEND (backend), NULL); + g_return_val_if_fail (E_IS_ALERT_SINK (alert_sink), NULL); session = e_mail_backend_get_session (backend); data_dir = e_shell_backend_get_data_dir (E_SHELL_BACKEND (backend)); @@ -1717,7 +1762,9 @@ em_folder_tree_new (EMailBackend *backend) e_mail_store_init (session, data_dir); return g_object_new ( - EM_TYPE_FOLDER_TREE, "backend", backend, NULL); + EM_TYPE_FOLDER_TREE, + "alert-sink", alert_sink, + "backend", backend, NULL); } PangoEllipsizeMode @@ -1742,6 +1789,14 @@ em_folder_tree_set_ellipsize (EMFolderTree *folder_tree, g_object_notify (G_OBJECT (folder_tree), "ellipsize"); } +EAlertSink * +em_folder_tree_get_alert_sink (EMFolderTree *folder_tree) +{ + g_return_val_if_fail (EM_IS_FOLDER_TREE (folder_tree), NULL); + + return folder_tree->priv->alert_sink; +} + EMailBackend * em_folder_tree_get_backend (EMFolderTree *folder_tree) { -- cgit v1.2.3