diff options
Diffstat (limited to 'mail/em-folder-utils.c')
-rw-r--r-- | mail/em-folder-utils.c | 164 |
1 files changed, 0 insertions, 164 deletions
diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index b3d754369d..479d8783f6 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -51,24 +51,6 @@ #define d(x) -typedef struct _AsyncContext AsyncContext; - -struct _AsyncContext { - EMFolderTree *folder_tree; - gchar *folder_uri; -}; - -static void -async_context_free (AsyncContext *context) -{ - if (context->folder_tree != NULL) - g_object_unref (context->folder_tree); - - g_free (context->folder_uri); - - g_slice_free (AsyncContext, context); -} - static gboolean emfu_is_special_local_folder (const gchar *name) { @@ -530,152 +512,6 @@ em_folder_utils_copy_folder (GtkWindow *parent, gtk_widget_destroy (dialog); } -static void -new_folder_created_cb (CamelStore *store, - GAsyncResult *result, - AsyncContext *context) -{ - GError *error = NULL; - - e_mail_store_create_folder_finish (store, result, &error); - - /* FIXME Use an EActivity here. */ - if (error != NULL) { - e_notice (NULL, GTK_MESSAGE_ERROR, "%s", error->message); - g_error_free (error); - - } else if (context->folder_tree != NULL) { - gpointer data; - gboolean expand_only; - - /* XXX What in the hell kind of lazy hack is this? */ - data = g_object_get_data ( - G_OBJECT (context->folder_tree), "select"); - expand_only = GPOINTER_TO_INT (data) ? FALSE : TRUE; - - em_folder_tree_set_selected ( - context->folder_tree, - context->folder_uri, expand_only); - } - - async_context_free (context); -} - -void -em_folder_utils_create_folder (GtkWindow *parent, - EMailSession *session, - EMFolderTree *emft, - const gchar *initial_uri) -{ - EMFolderSelector *selector; - EMFolderTree *folder_tree; - EMFolderTreeModel *model; - EMailAccountStore *account_store; - CamelStore *store = NULL; - GtkWidget *dialog; - GQueue queue = G_QUEUE_INIT; - const gchar *caption; - const gchar *folder_uri; - gchar *folder_name = NULL; - GError *error = NULL; - - g_return_if_fail (GTK_IS_WINDOW (parent)); - g_return_if_fail (E_IS_MAIL_SESSION (session)); - - model = em_folder_tree_model_new (); - em_folder_tree_model_set_session (model, session); - - account_store = e_mail_ui_session_get_account_store (E_MAIL_UI_SESSION (session)); - e_mail_account_store_queue_enabled_services (account_store, &queue); - - while (!g_queue_is_empty (&queue)) { - CamelService *service; - CamelStoreFlags flags; - - service = g_queue_pop_head (&queue); - g_warn_if_fail (CAMEL_IS_STORE (service)); - - flags = CAMEL_STORE (service)->flags; - if ((flags & CAMEL_STORE_CAN_EDIT_FOLDERS) == 0) - continue; - - em_folder_tree_model_add_store (model, CAMEL_STORE (service)); - } - - dialog = em_folder_selector_create_new (parent, model); - - gtk_window_set_title (GTK_WINDOW (dialog), _("Create Folder")); - - g_object_unref (model); - - selector = EM_FOLDER_SELECTOR (dialog); - - caption = _("Specify where to create the folder:"); - em_folder_selector_set_caption (selector, caption); - - folder_tree = em_folder_selector_get_folder_tree (selector); - - if (initial_uri != NULL) - em_folder_tree_set_selected (folder_tree, initial_uri, FALSE); - - if (gtk_dialog_run (GTK_DIALOG (dialog)) != GTK_RESPONSE_OK) - goto exit; - - folder_uri = em_folder_selector_get_selected_uri (selector); - g_return_if_fail (folder_uri != NULL); - - e_mail_folder_uri_parse ( - CAMEL_SESSION (session), folder_uri, - &store, &folder_name, &error); - - /* XXX This is unlikely to fail since the URI comes straight from - * EMFolderSelector, but leave a breadcrumb if it does fail. */ - if (error != NULL) { - g_warn_if_fail (store == NULL); - g_warn_if_fail (folder_name == NULL); - e_notice (parent, GTK_MESSAGE_ERROR, "%s", error->message); - g_error_free (error); - goto exit; - } - - g_return_if_fail (folder_name != NULL); - - /* HACK: we need to create vfolders using the vfolder editor */ - if (CAMEL_IS_VEE_STORE (store)) { - EFilterRule *rule; - const gchar *skip_slash; - - if (*folder_name == '/') - skip_slash = folder_name + 1; - else - skip_slash = folder_name; - - rule = em_vfolder_editor_rule_new (session); - e_filter_rule_set_name (rule, skip_slash); - vfolder_gui_add_rule (EM_VFOLDER_RULE (rule)); - } else { - AsyncContext *context; - - context = g_slice_new0 (AsyncContext); - context->folder_uri = e_mail_folder_uri_build (store, folder_name); - - 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, - (GAsyncReadyCallback) new_folder_created_cb, - context); - } - - g_free (folder_name); - g_object_unref (store); - -exit: - gtk_widget_destroy (dialog); -} - const gchar * em_folder_utils_get_icon_name (guint32 flags) { |