X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-ui-actions.c;h=9519be08135ec271d859965260c75a07644c0e8d;hp=0b003209b99dcc1d78511a8df15135e57c3269f0;hb=cd2c9b025a5fa7b22437869f0b3f82586af46511;hpb=87d063a9af845ec8b688866384efbae346ee7f14 diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 0b00320..9519be0 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -1007,6 +1007,15 @@ get_info_from_header (TnyHeader *header, gboolean *is_draft, gboolean *can_open) *is_draft = TRUE; /* Open in editor if the message is in the Drafts folder */ } + if (!account) { + TnyAccount *acc = tny_folder_get_account (folder); + if (acc) { + account = + g_strdup (modest_tny_account_get_parent_modest_account_name_for_server_account (acc)); + g_object_unref (acc); + } + } + g_object_unref (folder); return account; @@ -3268,6 +3277,46 @@ do_create_folder_cb (ModestMailOperation *mail_op, g_object_unref (source_win); } +typedef struct { + gchar *folder_name; + TnyFolderStore *parent; +} CreateFolderConnect; + +static void +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) { + /* In memory full conditions we could get this error here */ + check_memory_full_error ((GtkWidget *) parent_window, err); + 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, @@ -3284,46 +3333,24 @@ do_create_folder (GtkWindow *parent_window, &parent_folder); if (result == GTK_RESPONSE_ACCEPT && parent_folder) { - ModestMailOperation *mail_op; + CreateFolderConnect *helper = (CreateFolderConnect *) g_slice_new0 (CreateFolderHelper); + helper->folder_name = g_strdup (folder_name); + helper->parent = g_object_ref (parent_folder); - 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, - parent_folder, - (const gchar *) folder_name, - do_create_folder_cb, - folder_name); - g_object_unref (mail_op); + modest_platform_connect_if_remote_and_perform (GTK_WINDOW (parent_window), + TRUE, + parent_folder, + do_create_folder_performer, + helper); } + if (folder_name) + g_free (folder_name); if (parent_folder) g_object_unref (parent_folder); } static void -create_folder_performer (gboolean canceled, - GError *err, - GtkWindow *parent_window, - TnyAccount *account, - gpointer user_data) -{ - TnyFolderStore *parent_folder = TNY_FOLDER_STORE (user_data); - - if (canceled || err) { - /* In memory full conditions we could get this error here */ - check_memory_full_error ((GtkWidget *) parent_window, err); - goto frees; - } - - /* Run the new folder dialog */ - do_create_folder (GTK_WINDOW (parent_window), parent_folder, NULL); - - frees: - g_object_unref (parent_folder); -} - -static void modest_ui_actions_create_folder(GtkWidget *parent_window, GtkWidget *folder_view) { @@ -3350,14 +3377,8 @@ modest_ui_actions_create_folder(GtkWidget *parent_window, parent_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view)); #endif - if (parent_folder) { - /* The parent folder will be freed in the callback */ - modest_platform_connect_if_remote_and_perform (GTK_WINDOW (parent_window), - TRUE, - parent_folder, - create_folder_performer, - parent_folder); - } + if (parent_folder) + do_create_folder (GTK_WINDOW (parent_window), parent_folder, NULL); } void @@ -5095,32 +5116,34 @@ void modest_ui_actions_move_folder_error_handler (ModestMailOperation *mail_op, gpointer user_data) { + GObject *win = NULL; + +#ifndef MODEST_TOOLKIT_HILDON2 ModestWindow *main_window = NULL; - + /* Disable next automatic folder selection */ main_window = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr (), FALSE); /* don't create */ if (main_window) { - GObject *win = NULL; GtkWidget *folder_view = NULL; - + folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (main_window), MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW); modest_folder_view_disable_next_folder_selection (MODEST_FOLDER_VIEW(folder_view)); - + if (user_data && TNY_IS_FOLDER (user_data)) { modest_folder_view_select_folder (MODEST_FOLDER_VIEW (folder_view), TNY_FOLDER (user_data), FALSE); } - - /* Show notification dialog only if the main window exists */ - win = modest_mail_operation_get_source (mail_op); - modest_platform_run_information_dialog ((GtkWindow *) win, - _("mail_in_ui_folder_move_target_error"), - FALSE); - if (win) - g_object_unref (win); } +#endif + /* Show notification dialog only if the main window exists */ + win = modest_mail_operation_get_source (mail_op); + modest_platform_run_information_dialog ((GtkWindow *) win, + _("mail_in_ui_folder_move_target_error"), + FALSE); + if (win) + g_object_unref (win); } static void @@ -5769,6 +5792,10 @@ modest_ui_actions_on_edit_mode_move_to (ModestWindow *win) folder_view = NULL; list_to_move = modest_platform_get_list_to_move (MODEST_WINDOW (win)); + + if (!list_to_move) + return FALSE; + if (tny_list_get_length (list_to_move) < 1) { g_object_unref (list_to_move); return FALSE;