X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmodest-ui-actions.c;h=8c65b6c815eb63c476560060b83e4bcd2e696892;hb=c5b4509941133fe5565226871287fbbe8d771d2c;hp=d70586dc38808084d62736c12a41f94e5cfe7413;hpb=e5c4ad03681b448912adaf378dc31d77c70b9ce2;p=modest diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index d70586d..8c65b6c 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -66,8 +66,8 @@ #include "maemo/modest-hildon-includes.h" #include "maemo/modest-connection-specific-smtp-window.h" #endif /* !MODEST_TOOLKIT_GTK */ -#include +#include #include "widgets/modest-ui-constants.h" #include #include @@ -639,7 +639,7 @@ modest_ui_actions_on_quit (GtkAction *action, ModestWindow *win) ModestWindowMgr *mgr = NULL; #ifdef MODEST_PLATFORM_MAEMO - modest_osso_save_state(); + modest_window_mgr_save_state_for_all_windows (modest_runtime_get_window_mgr ()); #endif /* MODEST_PLATFORM_MAEMO */ g_debug ("closing down, clearing %d item(s) from operation queue", @@ -686,9 +686,10 @@ modest_ui_actions_on_close_window (GtkAction *action, ModestWindow *win) void modest_ui_actions_add_to_contacts (GtkAction *action, ModestWindow *win) { - g_return_if_fail (MODEST_IS_MSG_VIEW_WINDOW (win)); - - modest_msg_view_window_add_to_contacts (MODEST_MSG_VIEW_WINDOW (win)); + if (MODEST_IS_MSG_VIEW_WINDOW (win)) + modest_msg_view_window_add_to_contacts (MODEST_MSG_VIEW_WINDOW (win)); + else if (MODEST_IS_MSG_EDIT_WINDOW (win)) + modest_msg_edit_window_add_to_contacts (MODEST_MSG_EDIT_WINDOW (win)); } void @@ -1003,9 +1004,14 @@ modest_ui_actions_msg_retrieval_check (ModestMailOperation *mail_op, if (protocol) { if (tny_account_get_connection_status (account) == TNY_CONNECTION_STATUS_CONNECTED) { - format = modest_protocol_get_translation (protocol, - MODEST_PROTOCOL_TRANSLATION_MSG_NOT_AVAILABLE, - subject); + if (header) { + format = modest_protocol_get_translation (protocol, + MODEST_PROTOCOL_TRANSLATION_MSG_NOT_AVAILABLE, + subject); + } else { + format = modest_protocol_get_translation (protocol, + MODEST_PROTOCOL_TRANSLATION_MSG_NOT_AVAILABLE_LOST_HEADER); + } } else { format = g_strdup_printf (_("mail_ib_backend_server_invalid"), tny_account_get_hostname (account)); @@ -2151,6 +2157,27 @@ modest_ui_actions_on_sort (GtkAction *action, modest_utils_run_sort_dialog (GTK_WINDOW (window), MODEST_SORT_HEADERS); } +static void +sync_folder_cb (ModestMailOperation *mail_op, + TnyFolder *folder, + gpointer user_data) +{ + ModestHeaderView *header_view = (ModestHeaderView *) user_data; + + if (modest_mail_operation_get_status (mail_op) == MODEST_MAIL_OPERATION_STATUS_SUCCESS) { + ModestWindow *parent = (ModestWindow *) modest_mail_operation_get_source (mail_op); + + /* We must clear first, because otherwise set_folder will ignore */ + /* the change as the folders are the same */ + modest_header_view_clear (header_view); + modest_header_view_set_folder (header_view, folder, TRUE, parent, NULL, NULL); + + g_object_unref (parent); + } + + g_object_unref (header_view); +} + static gboolean idle_refresh_folder (gpointer source) { @@ -2167,18 +2194,18 @@ idle_refresh_folder (gpointer source) header_view = modest_header_window_get_header_view ((ModestHeaderWindow *) source); #else if (MODEST_IS_MAIN_WINDOW (source)) - header_view = modest_main_window_get_child_widget ((ModestMainWindow *) source, - MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW); + header_view = MODEST_HEADER_VIEW (modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (source), + MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW)); #endif if (header_view) { TnyFolder *folder = modest_header_view_get_folder (header_view); if (folder) { - /* We must clear first, because otherwise set_folder will ignore - the change as the folders are the same */ - modest_header_view_clear (header_view); - modest_header_view_set_folder (header_view, folder, TRUE, - (ModestWindow *) source, NULL, NULL); + /* Sync the folder status */ + ModestMailOperation *mail_op = modest_mail_operation_new (source); + modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op); + modest_mail_operation_sync_folder (mail_op, folder, FALSE, sync_folder_cb, g_object_ref (header_view)); g_object_unref (folder); + g_object_unref (mail_op); } } @@ -2190,11 +2217,11 @@ update_account_cb (ModestMailOperation *self, TnyList *new_headers, gpointer user_data) { - GObject *source; + ModestWindow *top; gboolean show_visual_notifications; - source = modest_mail_operation_get_source (self); - show_visual_notifications = (source) ? FALSE : TRUE; + top = modest_window_mgr_get_current_top (modest_runtime_get_window_mgr ()); + show_visual_notifications = (top) ? FALSE : TRUE; /* Notify new messages have been downloaded. If the send&receive was invoked by the user then do not show any @@ -2242,15 +2269,14 @@ update_account_cb (ModestMailOperation *self, g_object_unref (actually_new_list); } - if (source) { + if (top) { /* Refresh the current folder in an idle. We do this in order to avoid refresh cancelations if the currently viewed folder is the inbox */ g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, idle_refresh_folder, - g_object_ref (source), + g_object_ref (top), g_object_unref); - g_object_unref (source); } } @@ -3180,7 +3206,7 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window) } /* Get the currently-active transport account for this modest account: */ - if (strcmp (account_name, MODEST_LOCAL_FOLDERS_ACCOUNT_ID) != 0) { + if (account_name && strcmp (account_name, MODEST_LOCAL_FOLDERS_ACCOUNT_ID) != 0) { transport_account = TNY_TRANSPORT_ACCOUNT(modest_tny_account_store_get_server_account (modest_runtime_get_account_store (),