diff options
Diffstat (limited to 'mail/em-folder-utils.c')
-rw-r--r-- | mail/em-folder-utils.c | 44 |
1 files changed, 29 insertions, 15 deletions
diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index f5378684b0..bdf67ecfa0 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -57,7 +57,6 @@ #include "mail-ops.h" #include "mail-tools.h" #include "mail-config.h" -#include "mail-component.h" #include "mail-vfolder.h" #include "mail-folder-cache.h" @@ -70,6 +69,8 @@ #include "em-folder-selection.h" #include "em-folder-properties.h" +#include "e-mail-shell-backend.h" + #define d(x) extern CamelSession *session; @@ -268,6 +269,7 @@ emfu_copy_folder_selected (const gchar *uri, gpointer data) { struct _copy_folder_data *cfd = data; CamelStore *fromstore = NULL, *tostore = NULL; + CamelStore *local_store; const gchar *tobase = NULL; CamelException ex; CamelURL *url; @@ -279,13 +281,15 @@ emfu_copy_folder_selected (const gchar *uri, gpointer data) camel_exception_init (&ex); + local_store = e_mail_shell_backend_get_local_store (global_mail_shell_backend); + if (!(fromstore = camel_session_get_store (session, cfd->fi->uri, &ex))) { e_error_run(NULL, cfd->delete?"mail:no-move-folder-notexist":"mail:no-copy-folder-notexist", cfd->fi->full_name, uri, ex.desc, NULL); goto fail; } - if (cfd->delete && fromstore == mail_component_peek_local_store (NULL) && emfu_is_special_local_folder (cfd->fi->full_name)) { + if (cfd->delete && fromstore == local_store && emfu_is_special_local_folder (cfd->fi->full_name)) { GtkWidget *w = e_error_new (NULL, "mail:no-rename-special-folder", cfd->fi->full_name, NULL); em_utils_show_error_silent (w); @@ -351,17 +355,24 @@ emfu_copy_folder_exclude(EMFolderTree *tree, GtkTreeModel *model, GtkTreeIter *i /* FIXME: this interface references the folderinfo without copying it */ /* FIXME: these functions must be documented */ void -em_folder_utils_copy_folder(CamelFolderInfo *folderinfo, gint delete) +em_folder_utils_copy_folder (EMFolderTreeModel *model, + CamelFolderInfo *folderinfo, + gint delete) { struct _copy_folder_data *cfd; + g_return_if_fail (EM_IS_FOLDER_TREE_MODEL (model)); + g_return_if_fail (folderinfo != NULL); + cfd = g_malloc (sizeof (*cfd)); cfd->fi = folderinfo; cfd->delete = delete; - em_select_folder (NULL, _("Select folder"), delete?_("_Move"):_("C_opy"), - NULL, emfu_copy_folder_exclude, - emfu_copy_folder_selected, cfd); + em_select_folder ( + model, _("Select folder"), + delete ? _("_Move") : _("C_opy"), + NULL, emfu_copy_folder_exclude, + emfu_copy_folder_selected, cfd); } static void @@ -397,13 +408,13 @@ emfu_delete_response (GtkWidget *dialog, gint response, gpointer data) void em_folder_utils_delete_folder (CamelFolder *folder) { - CamelStore *local; + CamelStore *local_store; GtkWidget *dialog; gint flags = 0; - local = mail_component_peek_local_store (NULL); + local_store = e_mail_shell_backend_get_local_store (global_mail_shell_backend); - if (folder->parent_store == local && emfu_is_special_local_folder (folder->full_name)) { + if (folder->parent_store == local_store && emfu_is_special_local_folder (folder->full_name)) { dialog = e_error_new (NULL, "mail:no-delete-special-folder", folder->full_name, NULL); em_utils_show_error_silent (dialog); return; @@ -432,14 +443,14 @@ em_folder_utils_rename_folder (CamelFolder *folder) { gchar *prompt, *new_name; const gchar *p; - CamelStore *local; + CamelStore *local_store; gboolean done = FALSE; gsize base_len; - local = mail_component_peek_local_store (NULL); + local_store = e_mail_shell_backend_get_local_store (global_mail_shell_backend); /* don't allow user to rename one of the special local folders */ - if (folder->parent_store == local && emfu_is_special_local_folder (folder->full_name)) { + if (folder->parent_store == local_store && emfu_is_special_local_folder (folder->full_name)) { e_error_run(NULL, "mail:no-rename-special-folder", folder->full_name, NULL); return; @@ -628,6 +639,7 @@ static void emfu_popup_new_folder_response (EMFolderSelector *emfs, gint response, gpointer data) { EMFolderTreeModelStoreInfo *si; + EMFolderTreeModel *model; const gchar *uri, *path; CamelException ex; CamelStore *store; @@ -651,7 +663,9 @@ emfu_popup_new_folder_response (EMFolderSelector *emfs, gint response, gpointer return; } - if (!(si = em_folder_tree_get_model_storeinfo (emfs->emft, store))) { + model = em_folder_tree_get_model (emfs->emft); + si = em_folder_tree_model_lookup_store_info (model, store); + if (si == NULL) { camel_object_unref (store); g_return_if_reached(); } @@ -690,10 +704,10 @@ em_folder_utils_create_folder (CamelFolderInfo *folderinfo, EMFolderTree *emft, EMFolderTreeModel *model; GtkWidget *dialog; - model = mail_component_peek_tree_model (mail_component_peek ()); + model = e_mail_shell_backend_get_folder_tree_model (global_mail_shell_backend); folder_tree = (EMFolderTree *) em_folder_tree_new_with_model (model); - dialog = em_folder_selector_create_new (folder_tree, 0, _("Create folder"), _("Specify where to create the folder:")); + dialog = em_folder_selector_create_new (folder_tree, 0, _("Create Folder"), _("Specify where to create the folder:")); if (folderinfo != NULL) em_folder_selector_set_selected ((EMFolderSelector *) dialog, folderinfo->uri); if (parent) { |