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-folder-utils.c | |
parent | a98cb0a9820d2119bf10c317e5f6a9d56dd9073c (diff) | |
download | gsoc2013-evolution-7050475f84247fb15e24aa1bb31502106c18815d.tar gsoc2013-evolution-7050475f84247fb15e24aa1bb31502106c18815d.tar.gz gsoc2013-evolution-7050475f84247fb15e24aa1bb31502106c18815d.tar.bz2 gsoc2013-evolution-7050475f84247fb15e24aa1bb31502106c18815d.tar.lz gsoc2013-evolution-7050475f84247fb15e24aa1bb31502106c18815d.tar.xz 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-folder-utils.c')
-rw-r--r-- | mail/em-folder-utils.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index a3f7847768..498167d2b4 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -473,7 +473,7 @@ em_folder_utils_copy_folder (GtkWindow *parent, } /* XXX Do we leak this reference. */ - emft = (EMFolderTree *) em_folder_tree_new (session); + emft = (EMFolderTree *) em_folder_tree_new (backend); emu_restore_folder_tree_state (emft); em_folder_tree_set_excluded_func ( @@ -512,7 +512,7 @@ new_folder_created_cb (CamelStore *store, g_warning ("%s", error->message); g_error_free (error); - } else { + } else if (context->folder_tree != NULL) { gpointer data; gboolean expand_only; @@ -531,10 +531,11 @@ new_folder_created_cb (CamelStore *store, void em_folder_utils_create_folder (GtkWindow *parent, + EMailBackend *backend, EMFolderTree *emft, - EMailSession *session, const gchar *initial_uri) { + EMailSession *session; EMFolderTree *folder_tree; CamelStore *store = NULL; const gchar *folder_uri; @@ -542,14 +543,12 @@ em_folder_utils_create_folder (GtkWindow *parent, GtkWidget *dialog; GError *error = NULL; - /* FIXME The EMailSession argument isn't really necessary. - * We could extract it via em_folder_tree_get_session(). */ - g_return_if_fail (GTK_IS_WINDOW (parent)); - g_return_if_fail (EM_IS_FOLDER_TREE (emft)); - g_return_if_fail (E_IS_MAIL_SESSION (session)); + g_return_if_fail (E_IS_MAIL_BACKEND (backend)); - folder_tree = (EMFolderTree *) em_folder_tree_new (session); + session = e_mail_backend_get_session (backend); + + folder_tree = (EMFolderTree *) em_folder_tree_new (backend); emu_restore_folder_tree_state (folder_tree); dialog = em_folder_selector_create_new ( @@ -584,16 +583,18 @@ em_folder_utils_create_folder (GtkWindow *parent, if (CAMEL_IS_VEE_STORE (store)) { EFilterRule *rule; - rule = em_vfolder_rule_new (session); + rule = em_vfolder_rule_new (backend); e_filter_rule_set_name (rule, folder_name); vfolder_gui_add_rule (EM_VFOLDER_RULE (rule)); } else { AsyncContext *context; context = g_slice_new0 (AsyncContext); - context->folder_tree = g_object_ref (emft); context->folder_uri = g_strdup (folder_uri); + if (EM_IS_FOLDER_TREE (emft)) + context->folder_tree = g_object_ref (emft); + /* FIXME Not passing a GCancellable. */ e_mail_store_create_folder ( store, folder_name, G_PRIORITY_DEFAULT, NULL, |