X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-ui-actions.c;h=0a8dba0814907c8b1566f4834e78c612cc074e60;hp=400233f0378ceacbcc801824890cb46f9344986a;hb=aab537f6ce755830767baa7260d7879449ceeb38;hpb=483e890df6e4e687e4f14b2174701544c582b1a2 diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 400233f..0a8dba0 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -144,9 +144,7 @@ static void _on_send_receive_progress_changed (ModestMailOperation *mail_op ModestMailOperationState *state, gpointer user_data); -static gint header_list_count_uncached_msgs ( - TnyList *header_list, - GtkWindow *win); +static gint header_list_count_uncached_msgs (TnyList *header_list); static gboolean connect_to_get_msg ( GtkWindow *win, gint num_of_uncached_msgs); @@ -452,8 +450,10 @@ modest_ui_actions_on_delete_message (GtkAction *action, ModestWindow *win) GtkTreeModel *model = NULL; GtkTreeSelection *sel = NULL; GList *sel_list = NULL, *tmp = NULL; - GtkTreeRowReference *row_reference = NULL; + GtkTreeRowReference *next_row_reference = NULL; + GtkTreeRowReference *prev_row_reference = NULL; GtkTreePath *next_path = NULL; + GtkTreePath *prev_path = NULL; GError *err = NULL; /* Find last selected row */ @@ -463,10 +463,14 @@ modest_ui_actions_on_delete_message (GtkAction *action, ModestWindow *win) sel_list = gtk_tree_selection_get_selected_rows (sel, &model); for (tmp=sel_list; tmp; tmp=tmp->next) { if (tmp->next == NULL) { + prev_path = gtk_tree_path_copy((GtkTreePath *) tmp->data); next_path = gtk_tree_path_copy((GtkTreePath *) tmp->data); + + gtk_tree_path_prev (prev_path); gtk_tree_path_next (next_path); - row_reference = gtk_tree_row_reference_new (model, next_path); - gtk_tree_path_free (next_path); + + prev_row_reference = gtk_tree_row_reference_new (model, prev_path); + next_row_reference = gtk_tree_row_reference_new (model, next_path); } } } @@ -475,17 +479,11 @@ modest_ui_actions_on_delete_message (GtkAction *action, ModestWindow *win) modest_window_disable_dimming (MODEST_WINDOW(win)); /* Remove each header. If it's a view window header_view == NULL */ -/* do_headers_action (win, headers_action_delete, header_view); */ modest_do_messages_delete (header_list, win); - /* Enable window dimming management */ gtk_tree_selection_unselect_all (sel); modest_window_enable_dimming (MODEST_WINDOW(win)); - - /* FIXME: May be folder_monitor will also refilter treemode on EXPUNGE changes ? */ - /* refresh the header view (removing marked-as-deleted) */ -/* modest_header_view_refilter (MODEST_HEADER_VIEW(header_view)); */ if (MODEST_IS_MSG_VIEW_WINDOW (win)) { modest_ui_actions_refresh_message_window_after_delete (MODEST_MSG_VIEW_WINDOW (win)); @@ -498,14 +496,24 @@ modest_ui_actions_on_delete_message (GtkAction *action, ModestWindow *win) /* Move cursor to next row */ main_window = win; - /* Select next row */ - if (gtk_tree_row_reference_valid (row_reference)) { - next_path = gtk_tree_row_reference_get_path (row_reference); + /* Select next or previous row */ + if (gtk_tree_row_reference_valid (next_row_reference)) { +/* next_path = gtk_tree_row_reference_get_path (row_reference); */ gtk_tree_selection_select_path (sel, next_path); - gtk_tree_path_free (next_path); } - if (row_reference != NULL) - gtk_tree_row_reference_free (row_reference); + else if (gtk_tree_row_reference_valid (prev_row_reference)) { + gtk_tree_selection_select_path (sel, prev_path); + } + + /* Free */ + if (next_row_reference != NULL) + gtk_tree_row_reference_free (next_row_reference); + if (next_path != NULL) + gtk_tree_path_free (next_path); + if (prev_row_reference != NULL) + gtk_tree_row_reference_free (prev_row_reference); + if (prev_path != NULL) + gtk_tree_path_free (prev_path); } if (err != NULL) { @@ -553,7 +561,9 @@ modest_ui_actions_on_delete_message_or_folder (GtkAction *action, ModestWindow * void modest_ui_actions_on_quit (GtkAction *action, ModestWindow *win) -{ +{ + ModestWindowMgr *mgr = NULL; + #ifdef MODEST_PLATFORM_MAEMO modest_osso_save_state(); #endif /* MODEST_PLATFORM_MAEMO */ @@ -568,11 +578,16 @@ modest_ui_actions_on_quit (GtkAction *action, ModestWindow *win) g_debug ("queue has been cleared"); + + /* Check if there are opened editing windows */ + mgr = modest_runtime_get_window_mgr (); + modest_window_mgr_close_all_windows (mgr); + /* note: when modest-tny-account-store is finalized, it will automatically set all network connections to offline */ - gtk_main_quit (); +/* gtk_main_quit (); */ } void @@ -661,12 +676,9 @@ modest_ui_actions_on_accounts (GtkAction *action, ModestWindow *win) static void on_smtp_servers_window_hide (GtkWindow* window, gpointer user_data) { - ModestWindow *main_window = MODEST_WINDOW (user_data); - /* Save any changes. */ modest_connection_specific_smtp_window_save_server_accounts ( - MODEST_CONNECTION_SPECIFIC_SMTP_WINDOW (window), - modest_window_get_active_account (main_window)); + MODEST_CONNECTION_SPECIFIC_SMTP_WINDOW (window)); gtk_widget_destroy (GTK_WIDGET (window)); } @@ -682,22 +694,10 @@ modest_ui_actions_on_smtp_servers (GtkAction *action, ModestWindow *win) #ifdef MODEST_PLATFORM_MAEMO /* Defined in config.h */ /* Create the window if necessary: */ - const gchar *active_account_name = modest_window_get_active_account (win); - - /* TODO: Dim the menu item (not in the UI spec)? or show a warning, - * or show the default account? - * If we show the default account then the account name should be shown in - * the window when we show it. */ - if (!active_account_name) { - g_warning ("%s: No account is active.", __FUNCTION__); - return; - } - GtkWidget *specific_window = GTK_WIDGET (modest_connection_specific_smtp_window_new ()); modest_connection_specific_smtp_window_fill_with_connections ( MODEST_CONNECTION_SPECIFIC_SMTP_WINDOW (specific_window), - modest_runtime_get_account_mgr(), - active_account_name); + modest_runtime_get_account_mgr()); /* Show the window: */ gtk_window_set_transient_for (GTK_WINDOW (specific_window), GTK_WINDOW (win)); @@ -784,7 +784,7 @@ modest_ui_actions_on_new_msg (GtkAction *action, ModestWindow *win) if (win) gtk_window_set_transient_for (GTK_WINDOW (msg_win), - GTK_WINDOW (win)); + GTK_WINDOW (win)); gtk_widget_show_all (GTK_WIDGET (msg_win)); cleanup: @@ -864,7 +864,11 @@ open_msg_cb (ModestMailOperation *mail_op, TnyHeader *header, TnyMsg *msg, gpoi goto cleanup; } win = modest_msg_edit_window_new (msg, account, TRUE); - + + + /* Show banner */ + modest_platform_information_banner (NULL, NULL, _("mail_ib_opening_draft_message")); + } else { gchar *uid = modest_tny_folder_get_header_unique_id (header); @@ -1205,9 +1209,7 @@ cleanup: * downloaded (CACHED) then returns TRUE else returns FALSE. */ static gint -header_list_count_uncached_msgs ( - TnyList *header_list, - GtkWindow *win) +header_list_count_uncached_msgs (TnyList *header_list) { TnyIterator *iter; gint uncached_messages = 0; @@ -1291,9 +1293,7 @@ reply_forward (ReplyForwardAction action, ModestWindow *win) if (do_retrieve){ gint num_of_unc_msgs; /* check that the messages have been previously downloaded */ - num_of_unc_msgs = header_list_count_uncached_msgs( - header_list, - GTK_WINDOW (win)); + num_of_unc_msgs = header_list_count_uncached_msgs(header_list); /* If there are any uncached message ask the user * whether he/she wants to download them. */ if (num_of_unc_msgs) @@ -1838,7 +1838,6 @@ folder_refreshed_cb (ModestMailOperation *mail_op, { ModestMainWindow *win = NULL; GtkWidget *header_view; - TnyFolder *current_folder; gboolean folder_empty = FALSE; gboolean all_marked_as_deleted = FALSE; @@ -1849,10 +1848,14 @@ folder_refreshed_cb (ModestMailOperation *mail_op, modest_main_window_get_child_widget(win, MODEST_WIDGET_TYPE_HEADER_VIEW); if (header_view) { + TnyFolder *current_folder; + current_folder = modest_header_view_get_folder (MODEST_HEADER_VIEW (header_view)); if (current_folder != NULL && folder != current_folder) { + g_object_unref (current_folder); return; } + g_object_unref (current_folder); } /* Check if folder is empty and set headers view contents style */ @@ -2851,8 +2854,7 @@ modest_ui_actions_on_cut (GtkAction *action, gboolean continue_download = FALSE; gint num_of_unc_msgs; - num_of_unc_msgs = header_list_count_uncached_msgs( - header_list, GTK_WINDOW (window)); + num_of_unc_msgs = header_list_count_uncached_msgs(header_list); if (num_of_unc_msgs) continue_download = connect_to_get_msg( @@ -2907,9 +2909,7 @@ modest_ui_actions_on_copy (GtkAction *action, gboolean continue_download = FALSE; gint num_of_unc_msgs; - num_of_unc_msgs = header_list_count_uncached_msgs( - header_list, - GTK_WINDOW (window)); + num_of_unc_msgs = header_list_count_uncached_msgs(header_list); if (num_of_unc_msgs) continue_download = connect_to_get_msg( @@ -3214,9 +3214,10 @@ modest_ui_actions_on_change_zoom (GtkRadioAction *action, } } -void modest_ui_actions_msg_edit_on_change_priority (GtkRadioAction *action, - GtkRadioAction *selected, - ModestWindow *window) +void +modest_ui_actions_msg_edit_on_change_priority (GtkRadioAction *action, + GtkRadioAction *selected, + ModestWindow *window) { TnyHeaderFlags flags; g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window)); @@ -3225,9 +3226,10 @@ void modest_ui_actions_msg_edit_on_change_priority (GtkRadioAction *action, modest_msg_edit_window_set_priority_flags (MODEST_MSG_EDIT_WINDOW (window), flags); } -void modest_ui_actions_msg_edit_on_change_file_format (GtkRadioAction *action, - GtkRadioAction *selected, - ModestWindow *window) +void +modest_ui_actions_msg_edit_on_change_file_format (GtkRadioAction *action, + GtkRadioAction *selected, + ModestWindow *window) { gint file_format; @@ -3446,7 +3448,7 @@ modest_ui_actions_on_toggle_toolbar (GtkToggleAction *toggle, /* Toggle toolbar */ mgr = modest_runtime_get_window_mgr (); - modest_window_mgr_show_toolbars (mgr, active, fullscreen); + modest_window_mgr_show_toolbars (mgr, G_TYPE_FROM_INSTANCE (window), active, fullscreen); } void