- gchar *folder_name;
-
- folder_name = ask_for_folder_name (GTK_WINDOW (main_window),
- _("Please enter a name for the new folder"));
-
- if (folder_name != NULL && strlen (folder_name) > 0) {
- TnyFolder *new_folder;
- ModestMailOperation *mail_op;
-
- mail_op = modest_mail_operation_new ();
- modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
- mail_op);
-
- new_folder = modest_mail_operation_create_folder (mail_op,
- parent_folder,
- (const gchar *) folder_name);
- if (new_folder)
- g_object_unref (new_folder);
- g_object_unref (mail_op);
+ gboolean finished = FALSE;
+ gint result;
+ gchar *folder_name = NULL, *suggested_name = NULL;
+
+ /* Run the new folder dialog */
+ while (!finished) {
+ result = modest_platform_run_new_folder_dialog (GTK_WINDOW (main_window),
+ parent_folder,
+ suggested_name,
+ &folder_name);
+
+ if (result == GTK_RESPONSE_REJECT) {
+ finished = TRUE;
+ } else {
+ ModestMailOperation *mail_op = modest_mail_operation_new ();
+ TnyFolder *new_folder = NULL;
+
+ modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
+ mail_op);
+
+ new_folder = modest_mail_operation_create_folder (mail_op,
+ parent_folder,
+ (const gchar *) folder_name);
+ if (new_folder) {
+ g_object_unref (new_folder);
+ finished = TRUE;
+ } else {
+ const GError *error;
+ error = modest_mail_operation_get_error (mail_op);
+ g_printerr ("%s", error->message);
+ /* TODO: check error and follow proper actions */
+/* suggested_name = X; */
+ /* Show error to the user */
+ modest_platform_run_information_dialog (GTK_WINDOW (main_window),
+ MODEST_INFORMATION_CREATE_FOLDER);
+ }
+ g_object_unref (mail_op);
+ }