diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2011-05-24 05:09:24 +0800 |
---|---|---|
committer | Rodrigo Moya <rodrigo@gnome-db.org> | 2011-06-30 00:42:19 +0800 |
commit | 7050475f84247fb15e24aa1bb31502106c18815d (patch) | |
tree | 60e500f221d5f97b241045b10806c5c4ddbcc7c1 /mail/em-filter-folder-element.c | |
parent | a98cb0a9820d2119bf10c317e5f6a9d56dd9073c (diff) | |
download | gsoc2013-evolution-7050475f84247fb15e24aa1bb31502106c18815d.tar.gz gsoc2013-evolution-7050475f84247fb15e24aa1bb31502106c18815d.tar.zst gsoc2013-evolution-7050475f84247fb15e24aa1bb31502106c18815d.zip |
EMFolderTree: Store an EMailBackend instead of an EMailSession.
All this so EMFolderTree can submit EActivity instances for async ops.
You can obtain an EMailSession from an EMailBackend, but not vice versa.
Creates lots of pretty ripples in the mail code, but ultimately reduces
complexity. So it's a code cleanup of sorts.
Diffstat (limited to 'mail/em-filter-folder-element.c')
-rw-r--r-- | mail/em-filter-folder-element.c | 65 |
1 files changed, 35 insertions, 30 deletions
diff --git a/mail/em-filter-folder-element.c b/mail/em-filter-folder-element.c index 4a5d3595aa..a7be46431b 100644 --- a/mail/em-filter-folder-element.c +++ b/mail/em-filter-folder-element.c @@ -40,13 +40,13 @@ #include "e-util/e-alert.h" struct _EMFilterFolderElementPrivate { - EMailSession *session; + EMailBackend *backend; gchar *uri; }; enum { PROP_0, - PROP_SESSION + PROP_BACKEND }; static gboolean validate (EFilterElement *fe, EAlert **alert); @@ -64,18 +64,23 @@ G_DEFINE_TYPE ( E_TYPE_FILTER_ELEMENT) static void -filter_folder_element_set_session (EMFilterFolderElement *element, - EMailSession *session) +filter_folder_element_set_backend (EMFilterFolderElement *element, + EMailBackend *backend) { - if (!session) - session = e_mail_backend_get_session ( - E_MAIL_BACKEND (e_shell_get_backend_by_name ( - e_shell_get_default (), "mail"))); + /* FIXME Dirty hack. Backend should be passed in always. */ + if (backend == NULL) { + EShellBackend *shell_backend; + EShell *shell; + + shell = e_shell_get_default (); + shell_backend = e_shell_get_backend_by_name (shell, "mail"); + backend = E_MAIL_BACKEND (shell_backend); + } - g_return_if_fail (E_IS_MAIL_SESSION (session)); - g_return_if_fail (element->priv->session == NULL); + g_return_if_fail (E_IS_MAIL_BACKEND (backend)); + g_return_if_fail (element->priv->backend == NULL); - element->priv->session = g_object_ref (session); + element->priv->backend = g_object_ref (backend); } static void @@ -85,8 +90,8 @@ filter_folder_element_set_property (GObject *object, GParamSpec *pspec) { switch (property_id) { - case PROP_SESSION: - filter_folder_element_set_session ( + case PROP_BACKEND: + filter_folder_element_set_backend ( EM_FILTER_FOLDER_ELEMENT (object), g_value_get_object (value)); return; @@ -102,10 +107,10 @@ filter_folder_element_get_property (GObject *object, GParamSpec *pspec) { switch (property_id) { - case PROP_SESSION: + case PROP_BACKEND: g_value_set_object ( value, - em_filter_folder_element_get_session ( + em_filter_folder_element_get_backend ( EM_FILTER_FOLDER_ELEMENT (object))); return; } @@ -120,9 +125,9 @@ filter_folder_element_dispose (GObject *object) priv = EM_FILTER_FOLDER_ELEMENT (object)->priv; - if (priv->session != NULL) { - g_object_unref (priv->session); - priv->session = NULL; + if (priv->backend != NULL) { + g_object_unref (priv->backend); + priv->backend = NULL; } /* Chain up to parent's dispose() method. */ @@ -168,12 +173,12 @@ em_filter_folder_element_class_init (EMFilterFolderElementClass *class) g_object_class_install_property ( object_class, - PROP_SESSION, + PROP_BACKEND, g_param_spec_object ( - "session", + "backend", NULL, NULL, - E_TYPE_MAIL_SESSION, + E_TYPE_MAIL_BACKEND, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); } @@ -187,21 +192,21 @@ em_filter_folder_element_init (EMFilterFolderElement *element) } EFilterElement * -em_filter_folder_element_new (EMailSession *session) +em_filter_folder_element_new (EMailBackend *backend) { - g_return_val_if_fail (E_IS_MAIL_SESSION (session), NULL); + g_return_val_if_fail (E_IS_MAIL_BACKEND (backend), NULL); return g_object_new ( EM_TYPE_FILTER_FOLDER_ELEMENT, - "session", session, NULL); + "backend", backend, NULL); } -EMailSession * -em_filter_folder_element_get_session (EMFilterFolderElement *element) +EMailBackend * +em_filter_folder_element_get_backend (EMFilterFolderElement *element) { g_return_val_if_fail (EM_IS_FILTER_FOLDER_ELEMENT (element), NULL); - return element->priv->session; + return element->priv->backend; } const gchar * @@ -310,13 +315,13 @@ static GtkWidget * get_widget (EFilterElement *fe) { EMFilterFolderElement *ff = (EMFilterFolderElement *) fe; - EMailSession *session; + EMailBackend *backend; GtkWidget *button; - session = em_filter_folder_element_get_session (ff); + backend = em_filter_folder_element_get_backend (ff); button = em_folder_selection_button_new ( - session, _("Select Folder"), NULL); + backend, _("Select Folder"), NULL); em_folder_selection_button_set_selection ( EM_FOLDER_SELECTION_BUTTON (button), ff->priv->uri); gtk_widget_show (button); |