X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-ui-actions.c;h=c1dc59e5edcc455de8609b3969b2611a644d9be0;hp=8b387a81ab6280b6216865abe7605ae8d4cec8fb;hb=855f978850a02ba9a389a11de99b1c856f3ff60a;hpb=bd2c336b74b3fb41621fdd8fb9996ed398b23f91 diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 8b387a8..c1dc59e 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -239,14 +239,23 @@ modest_ui_actions_run_account_setup_wizard (ModestWindow *win) window_list = modest_window_mgr_get_window_list (mgr); if (window_list == NULL) { + ModestWindow *old_win; win = MODEST_WINDOW (modest_accounts_window_new ()); - modest_window_mgr_register_window (mgr, win, NULL); - gtk_widget_show_all (GTK_WIDGET (win)); + if (modest_window_mgr_register_window (mgr, win, NULL)) { + gtk_widget_show_all (GTK_WIDGET (win)); + } else { + gtk_widget_destroy (GTK_WIDGET (win)); + win = NULL; + } + old_win = win; win = MODEST_WINDOW (modest_folder_window_new (NULL)); - modest_window_mgr_register_window (mgr, win, NULL); - - gtk_widget_show_all (GTK_WIDGET (win)); + if (modest_window_mgr_register_window (mgr, win, NULL)) { + gtk_widget_show_all (GTK_WIDGET (win)); + } else { + gtk_widget_destroy (GTK_WIDGET (win)); + win = old_win; + } } else { g_list_free (window_list); } @@ -918,7 +927,7 @@ modest_ui_actions_msg_retrieval_check (ModestMailOperation *mail_op, proto = modest_tny_account_get_protocol_type (account); protocol = modest_protocol_registry_get_protocol_by_type (modest_runtime_get_protocol_registry (), proto); if (protocol) - format = modest_protocol_get_translation (protocol, MODEST_PROTOCOL_TRANSLATION_MSG_NOT_AVAILABLE); + format = modest_protocol_get_translation (protocol, MODEST_PROTOCOL_TRANSLATION_MSG_NOT_AVAILABLE, subject); g_object_unref (account); } @@ -1195,7 +1204,7 @@ check_memory_full_error (GtkWidget *parent_window, GError *err) else if (err->code == TNY_SYSTEM_ERROR_MEMORY) /* If the account was created in memory full conditions then tinymail won't be able to - connect so it'll return this error code */ + connect so it'll return this error code */ modest_platform_information_banner (parent_window, NULL, _("emev_ui_imap_inbox_select_error")); else @@ -3458,7 +3467,7 @@ modest_ui_actions_rename_folder_error_handler (ModestMailOperation *mail_op, message is opened for example */ message = _("emev_ni_internal_error"); } else { - message = _CS("ckdg_ib_unable_to_remove"); + message = _CS("ckdg_ib_unable_to_rename"); } /* We don't set a parent for the dialog because the dialog @@ -3490,7 +3499,7 @@ on_rename_folder_cb (ModestMailOperation *mail_op, } else { modest_folder_view_select_first_inbox_or_local (folder_view); } - gtk_widget_grab_focus (GTK_WIDGET (folder_view)); + gtk_widget_grab_focus (GTK_WIDGET (folder_view)); } static void @@ -3510,7 +3519,7 @@ on_rename_folder_performer (gboolean canceled, check_memory_full_error ((GtkWidget *) parent_window, err); } else { - mail_op = + mail_op = modest_mail_operation_new_with_error_handling (G_OBJECT(parent_window), modest_ui_actions_rename_folder_error_handler, parent_window, NULL); @@ -3523,13 +3532,17 @@ on_rename_folder_performer (gboolean canceled, folder_view = modest_main_window_get_child_widget ( MODEST_MAIN_WINDOW (parent_window), MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW); - - /* Clear the headers view */ - sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_view)); - gtk_tree_selection_unselect_all (sel); - } else { - folder_view = NULL; + } +#ifdef MODEST_TOOLKIT_HILDON2 + else if (MODEST_IS_FOLDER_WINDOW (parent_window)) { + ModestFolderWindow *folder_window = (ModestFolderWindow *) parent_window; + folder_view = GTK_WIDGET (modest_folder_window_get_folder_view (folder_window)); } +#endif + + /* Clear the folders view */ + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_view)); + gtk_tree_selection_unselect_all (sel); /* Actually rename the folder */ modest_mail_operation_rename_folder (mail_op, @@ -3537,10 +3550,10 @@ on_rename_folder_performer (gboolean canceled, (const gchar *) (data->new_name), on_rename_folder_cb, folder_view); - g_object_unref (data->folder); g_object_unref (mail_op); } + g_object_unref (data->folder); g_free (data->new_name); g_free (data); } @@ -3703,6 +3716,9 @@ delete_folder (ModestWindow *window, gboolean move_to_trash) folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view)); + if (!folder) + return FALSE; + /* Show an error if it's an account */ if (!TNY_IS_FOLDER (folder)) { modest_platform_run_information_dialog (GTK_WINDOW (window), @@ -3712,7 +3728,7 @@ delete_folder (ModestWindow *window, gboolean move_to_trash) return FALSE; } - /* Ask the user */ + /* Ask the user */ message = g_strdup_printf (_("mcen_nc_delete_folder_text"), tny_folder_get_name (TNY_FOLDER (folder))); response = modest_platform_run_confirmation_dialog (GTK_WINDOW (window), @@ -4519,7 +4535,7 @@ modest_ui_actions_on_change_fullscreen (GtkAction *action, * Used by modest_ui_actions_on_details to call do_headers_action */ static void -headers_action_show_details (TnyHeader *header, +headers_action_show_details (TnyHeader *header, ModestWindow *window, gpointer user_data) @@ -4530,36 +4546,24 @@ headers_action_show_details (TnyHeader *header, /* * Show the header details in a ModestDetailsDialog widget */ -void -modest_ui_actions_on_details (GtkAction *action, +void +modest_ui_actions_on_details (GtkAction *action, ModestWindow *win) { - TnyList * headers_list; - TnyIterator *iter; - TnyHeader *header; - if (MODEST_IS_MSG_VIEW_WINDOW (win)) { TnyMsg *msg; + TnyHeader *header; msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW (win)); if (!msg) return; - g_object_unref (msg); - - headers_list = get_selected_headers (win); - if (!headers_list) - return; - iter = tny_list_create_iterator (headers_list); - - header = TNY_HEADER (tny_iterator_get_current (iter)); + header = tny_msg_get_header (msg); if (header) { headers_action_show_details (header, win, NULL); g_object_unref (header); } - - g_object_unref (iter); - g_object_unref (headers_list); + g_object_unref (msg); } else if (MODEST_IS_MAIN_WINDOW (win)) { GtkWidget *folder_view, *header_view; @@ -4866,7 +4870,7 @@ on_move_to_dialog_response (GtkDialog *dialog, TnyFolderStore *dst_folder; case MODEST_GTK_RESPONSE_NEW_FOLDER: - modest_ui_actions_create_folder (GTK_WIDGET (parent_win), folder_view); + modest_ui_actions_create_folder (GTK_WIDGET (dialog), folder_view); return; case GTK_RESPONSE_NONE: case GTK_RESPONSE_CANCEL: @@ -5322,7 +5326,7 @@ modest_ui_actions_on_main_window_remove_attachments (GtkAction *action, * Checks if we need a connection to do the transfer and if the user * wants to connect to complete it */ -void +static void modest_ui_actions_xfer_messages_check (GtkWindow *parent_window, TnyFolderStore *src_folder, TnyList *headers, @@ -5334,8 +5338,6 @@ modest_ui_actions_xfer_messages_check (GtkWindow *parent_window, TnyAccount *src_account; gint uncached_msgs = 0; - uncached_msgs = header_list_count_uncached_msgs (headers); - /* We don't need any further check if * * 1- the source folder is local OR @@ -5357,6 +5359,7 @@ modest_ui_actions_xfer_messages_check (GtkWindow *parent_window, * offline, it'll take place the next time we get a * connection) */ + uncached_msgs = header_list_count_uncached_msgs (headers); src_account = get_account_from_folder_store (src_folder); if (uncached_msgs > 0) { guint num_headers; @@ -5379,11 +5382,11 @@ modest_ui_actions_xfer_messages_check (GtkWindow *parent_window, if (remote_folder_has_leave_on_server (src_folder) && delete_originals) { const gchar *account_name; gboolean leave_on_server; - + account_name = modest_tny_account_get_parent_modest_account_name_for_server_account (src_account); leave_on_server = modest_account_mgr_get_leave_on_server (modest_runtime_get_account_mgr (), account_name); - + if (leave_on_server == TRUE) { *need_connection = FALSE; } else { @@ -5402,10 +5405,19 @@ static void xfer_messages_error_handler (ModestMailOperation *mail_op, gpointer user_data) { - GObject *win = modest_mail_operation_get_source (mail_op); - modest_platform_run_information_dialog ((GtkWindow *) win, - _("mail_in_ui_folder_move_target_error"), - FALSE); + GObject *win; + const GError *error; + + win = modest_mail_operation_get_source (mail_op); + error = modest_mail_operation_get_error (mail_op); + + if (error && is_memory_full_error ((GError *) error)) + modest_platform_information_banner ((GtkWidget *) win, + NULL, _KR("cerm_device_memory_full")); + else + modest_platform_run_information_dialog ((GtkWindow *) win, + _("mail_in_ui_folder_move_target_error"), + FALSE); if (win) g_object_unref (win); } @@ -5820,13 +5832,6 @@ modest_ui_actions_on_edit_mode_move_to (ModestWindow *win) main_window = MODEST_MAIN_WINDOW (modest_window_mgr_get_main_window (modest_runtime_get_window_mgr (), FALSE)); /* don't create */ - - /* Get the folder view widget if exists */ - if (main_window) - folder_view = modest_main_window_get_child_widget (main_window, - MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW); - else - folder_view = NULL; #endif list_to_move = modest_platform_get_list_to_move (MODEST_WINDOW (win)); @@ -5896,10 +5901,12 @@ do_headers_action (ModestWindow *win, /* Trick: do a poke status in order to speed up the signaling of observers */ - tny_folder_poke_status (folder); + if (folder) { + tny_folder_poke_status (folder); + g_object_unref (folder); + } /* Frees */ - g_object_unref (folder); g_object_unref (iter); g_object_unref (headers_list); } @@ -6297,7 +6304,7 @@ on_send_receive_finished (ModestMailOperation *mail_op, } -void +void modest_ui_actions_on_send_queue_error_happened (TnySendQueue *self, TnyHeader *header, TnyMsg *msg, @@ -6319,10 +6326,10 @@ modest_ui_actions_on_send_queue_error_happened (TnySendQueue *self, /* Get the server name: */ - server_account = + server_account = TNY_TRANSPORT_ACCOUNT (tny_camel_send_queue_get_transport_account (TNY_CAMEL_SEND_QUEUE (self))); if (server_account) - server_name = tny_account_get_hostname (TNY_ACCOUNT (server_account)); + server_name = tny_account_get_hostname (TNY_ACCOUNT (server_account)); else g_return_if_reached (); @@ -6341,7 +6348,7 @@ modest_ui_actions_on_send_queue_error_happened (TnySendQueue *self, g_warning ("%s: unexpected ERROR %d", __FUNCTION__, err->code); message = g_strdup (_CS("sfil_ib_unable_to_send")); - break; + break; } modest_platform_run_information_dialog (NULL, message, FALSE);