+do_create_folder_performer (gboolean canceled,
+ GError *err,
+ GtkWindow *parent_window,
+ TnyAccount *account,
+ gpointer user_data)
+{
+ CreateFolderConnect *helper = (CreateFolderConnect *) user_data;
+ ModestMailOperation *mail_op;
+
+ if (canceled || err) {
+ TnyAccount *account = modest_mail_operation_get_account (mail_op);
+ /* In disk full conditions we could get this error here */
+ modest_tny_account_store_check_disk_full_error (modest_runtime_get_account_store(),
+ (GtkWidget *) parent_window, err,
+ account,
+ _("mail_in_ui_folder_create_error_memory"));
+ if (account)
+ g_object_unref (account);
+
+ /* This happens if we have selected the outbox folder
+ as the parent */
+ if (err->code == TNY_SERVICE_ERROR_UNKNOWN &&
+ TNY_IS_MERGE_FOLDER (helper->parent)) {
+ /* Show an error and retry */
+ modest_platform_information_banner ((GtkWidget *) parent_window,
+ NULL,
+ _("mail_in_ui_folder_create_error"));
+
+ do_create_folder (parent_window, helper->parent, helper->folder_name);
+ }
+
+ goto frees;
+ }
+
+ mail_op = modest_mail_operation_new ((GObject *) parent_window);
+ modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
+ mail_op);
+ modest_mail_operation_create_folder (mail_op,
+ helper->parent,
+ (const gchar *) helper->folder_name,
+ do_create_folder_cb,
+ g_strdup (helper->folder_name));
+ g_object_unref (mail_op);
+
+ frees:
+ if (helper->parent)
+ g_object_unref (helper->parent);
+ if (helper->folder_name)
+ g_free (helper->folder_name);
+ g_slice_free (CreateFolderConnect, helper);
+}
+
+
+static void
+do_create_folder (GtkWindow *parent_window,
+ TnyFolderStore *suggested_parent,