From: Javier Fernandez Garcia-Boente Date: Tue, 26 Jun 2007 18:17:25 +0000 (+0000) Subject: * Add new dimming rules for copy,cut and paste operations. X-Git-Tag: git_migration_finished~3093 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=180a6c986b177f0818ca0e25d35da5bb702d2039 * Add new dimming rules for copy,cut and paste operations. * Add dimming rules for undo operations. * Implement undo operation for copy and cut operations. * Fixes: NB#59325 pmo-trunk-r2442 --- diff --git a/src/maemo/modest-main-window-ui-dimming.h b/src/maemo/modest-main-window-ui-dimming.h index 8602852..ad662a4 100644 --- a/src/maemo/modest-main-window-ui-dimming.h +++ b/src/maemo/modest-main-window-ui-dimming.h @@ -25,9 +25,9 @@ static const ModestDimmingEntry modest_main_window_menu_dimming_entries [] = { /* Edit Menu */ { "/MenuBar/EditMenu", NULL }, - { "/MenuBar/EditMenu/EditUndoMenu", }, - { "/MenuBar/EditMenu/EditCutMenu", NULL }, - { "/MenuBar/EditMenu/EditCopyMenu", NULL }, + { "/MenuBar/EditMenu/EditUndoMenu", G_CALLBACK(modest_ui_dimming_rules_on_undo) }, + { "/MenuBar/EditMenu/EditCutMenu", G_CALLBACK(modest_ui_dimming_rules_on_cut) }, + { "/MenuBar/EditMenu/EditCopyMenu", G_CALLBACK(modest_ui_dimming_rules_on_copy) }, { "/MenuBar/EditMenu/EditPasteMenu", G_CALLBACK(modest_ui_dimming_rules_on_paste_msgs) }, { "/MenuBar/EditMenu/EditSelectAllMenu", G_CALLBACK(modest_ui_dimming_rules_on_select_all)}, { "/MenuBar/EditMenu/EditMarkAsReadMenu", G_CALLBACK(modest_ui_dimming_rules_on_mark_as_read_msg) }, diff --git a/src/maemo/modest-main-window-ui.h b/src/maemo/modest-main-window-ui.h index a00a8a3..841475f 100644 --- a/src/maemo/modest-main-window-ui.h +++ b/src/maemo/modest-main-window-ui.h @@ -71,7 +71,7 @@ static const GtkActionEntry modest_action_entries [] = { /* Edit */ - { "EditUndo", NULL, N_("mcen_me_inbox_undo"), "Z", NULL, NULL }, + { "EditUndo", NULL, N_("mcen_me_inbox_undo"), "Z", NULL, G_CALLBACK (modest_ui_actions_on_undo) }, { "EditCut", NULL, N_("mcen_me_inbox_cut"), "X", NULL, G_CALLBACK (modest_ui_actions_on_cut) }, { "EditCopy", NULL, N_("mcen_me_inbox_copy"), "C", NULL, G_CALLBACK (modest_ui_actions_on_copy) }, { "EditPaste", NULL, N_("mcen_me_inbox_paste"), "V", NULL, G_CALLBACK (modest_ui_actions_on_paste) }, diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index d17a175..93e78f8 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -2271,9 +2271,16 @@ void modest_ui_actions_on_undo (GtkAction *action, ModestWindow *window) { + ModestEmailClipboard *clipboard = NULL; + if (MODEST_IS_MSG_EDIT_WINDOW (window)) { modest_msg_edit_window_undo (MODEST_MSG_EDIT_WINDOW (window)); - } else { + } if (MODEST_IS_MAIN_WINDOW (window)) { + /* Clear clipboard source */ + clipboard = modest_runtime_get_email_clipboard (); + modest_email_clipboard_clear (clipboard); + } + else { g_return_if_reached (); } } @@ -2365,28 +2372,24 @@ modest_ui_actions_on_select_all (GtkAction *action, gtk_text_buffer_get_start_iter (buffer, &start); gtk_text_buffer_get_end_iter (buffer, &end); gtk_text_buffer_select_range (buffer, &start, &end); - } - else if ((MODEST_IS_FOLDER_VIEW (focused_widget)) || - (MODEST_IS_HEADER_VIEW (focused_widget))) { - - GtkTreeSelection *selection = NULL; - - /* Get header view */ + } else if (GTK_IS_HTML (focused_widget)) { + gtk_html_select_all (GTK_HTML (focused_widget)); + } else if (MODEST_IS_MAIN_WINDOW (window)) { GtkWidget *header_view = focused_widget; - if (MODEST_IS_FOLDER_VIEW (focused_widget)) + GtkTreeSelection *selection = NULL; + + if (!(MODEST_IS_HEADER_VIEW (focused_widget))) header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (window), MODEST_WIDGET_TYPE_HEADER_VIEW); - + /* Select all messages */ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(header_view)); gtk_tree_selection_select_all (selection); /* Set focuse on header view */ gtk_widget_grab_focus (header_view); - - } else if (GTK_IS_HTML (focused_widget)) { - gtk_html_select_all (GTK_HTML (focused_widget)); } + } void diff --git a/src/modest-ui-dimming-rules.c b/src/modest-ui-dimming-rules.c index 8fa8a6b..809ba94 100644 --- a/src/modest-ui-dimming-rules.c +++ b/src/modest-ui-dimming-rules.c @@ -44,6 +44,7 @@ static gboolean _folder_is_any_of_type (TnyFolder *folder, TnyFolderType types[], guint ntypes); static gboolean _invalid_msg_selected (ModestMainWindow *win, gboolean unique, ModestDimmingRule *rule); static gboolean _invalid_attach_selected (ModestWindow *win, gboolean unique, gboolean for_view, ModestDimmingRule *rule); +static gboolean _clipboard_is_empty (ModestWindow *win); static gboolean _invalid_clipboard_selected (ModestWindow *win); static gboolean _already_opened_msg (ModestWindow *win, guint *n_messages); static gboolean _selected_msg_marked_as (ModestWindow *win, TnyHeaderFlags mask, gboolean opposite); @@ -65,13 +66,19 @@ static gboolean _invalid_attachment_for_purge (ModestWindow *win, ModestDimmingR gboolean modest_ui_dimming_rules_on_new_msg (ModestWindow *win, gpointer user_data) { + ModestDimmingRule *rule = NULL; gboolean dimmed = FALSE; g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW(win), FALSE); + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); + rule = MODEST_DIMMING_RULE (user_data); /* Check dimmed rule */ - if (!dimmed) + if (!dimmed) { dimmed = _msg_download_in_progress (MODEST_MSG_VIEW_WINDOW(win)); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } return dimmed; } @@ -79,16 +86,18 @@ modest_ui_dimming_rules_on_new_msg (ModestWindow *win, gpointer user_data) gboolean modest_ui_dimming_rules_on_new_folder (ModestWindow *win, gpointer user_data) { - gboolean dimmed = FALSE; + ModestDimmingRule *rule = NULL; GtkWidget *folder_view = NULL; TnyFolderStore *parent_folder = NULL; + gboolean dimmed = FALSE; g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE); + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); + rule = MODEST_DIMMING_RULE (user_data); - + /* Get selected folder as parent of new folder to create */ folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win), MODEST_WIDGET_TYPE_FOLDER_VIEW); - /* Get selected folder as parent of new folder to create */ parent_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view)); if (!parent_folder) return TRUE; @@ -102,6 +111,8 @@ modest_ui_dimming_rules_on_new_folder (ModestWindow *win, gpointer user_data) /* If it's POP then dim */ dimmed = (modest_protocol_info_get_transport_store_protocol (proto_str) == MODEST_PROTOCOL_STORE_POP) ? TRUE : FALSE; + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); } } else { /* TODO: the specs say that only one level of subfolder is allowed, is this true ? */ @@ -113,10 +124,16 @@ modest_ui_dimming_rules_on_new_folder (ModestWindow *win, gpointer user_data) types[2] = TNY_FOLDER_TYPE_SENT; /* Apply folder rules */ - if (!dimmed) + if (!dimmed) { dimmed = _selected_folder_not_writeable (MODEST_MAIN_WINDOW(win)); - if (!dimmed) + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + if (!dimmed) { dimmed = _selected_folder_is_any_of_type (win, types, 3); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } } g_object_unref (parent_folder); @@ -126,10 +143,13 @@ modest_ui_dimming_rules_on_new_folder (ModestWindow *win, gpointer user_data) gboolean modest_ui_dimming_rules_on_delete_folder (ModestWindow *win, gpointer user_data) { - gboolean dimmed = FALSE; + ModestDimmingRule *rule = NULL; TnyFolderType types[5]; + gboolean dimmed = FALSE; g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE); + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); + rule = MODEST_DIMMING_RULE (user_data); types[0] = TNY_FOLDER_TYPE_DRAFTS; types[1] = TNY_FOLDER_TYPE_OUTBOX; @@ -137,17 +157,28 @@ modest_ui_dimming_rules_on_delete_folder (ModestWindow *win, gpointer user_data) types[3] = TNY_FOLDER_TYPE_INBOX; types[4] = TNY_FOLDER_TYPE_ROOT; - g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE); /* Check dimmed rule */ - if (!dimmed) + if (!dimmed) { dimmed = _selected_folder_not_writeable (MODEST_MAIN_WINDOW(win)); - if (!dimmed) + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + if (!dimmed) { dimmed = _selected_folder_is_any_of_type (win, types, 5); - if (!dimmed) + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + if (!dimmed) { dimmed = _selected_folder_is_root_or_inbox (MODEST_MAIN_WINDOW(win)); - if (!dimmed) + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + if (!dimmed) { dimmed = _selected_folder_is_MMC_or_POP_root (MODEST_MAIN_WINDOW(win)); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } return dimmed; } @@ -155,13 +186,19 @@ modest_ui_dimming_rules_on_delete_folder (ModestWindow *win, gpointer user_data) gboolean modest_ui_dimming_rules_on_sort (ModestWindow *win, gpointer user_data) { + ModestDimmingRule *rule = NULL; gboolean dimmed = FALSE; g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE); + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); + rule = MODEST_DIMMING_RULE (user_data); /* Check dimmed rule */ - if (!dimmed) + if (!dimmed) { dimmed = _selected_folder_is_root (MODEST_MAIN_WINDOW(win)); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } return dimmed; @@ -170,24 +207,34 @@ modest_ui_dimming_rules_on_sort (ModestWindow *win, gpointer user_data) gboolean modest_ui_dimming_rules_on_rename_folder (ModestWindow *win, gpointer user_data) { - gboolean dimmed = FALSE; + ModestDimmingRule *rule = NULL; TnyFolderType types[3]; + gboolean dimmed = FALSE; g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE); + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); + rule = MODEST_DIMMING_RULE (user_data); types[0] = TNY_FOLDER_TYPE_DRAFTS; types[1] = TNY_FOLDER_TYPE_OUTBOX; types[2] = TNY_FOLDER_TYPE_SENT; - g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE); - /* Check dimmed rule */ - if (!dimmed) + if (!dimmed) { dimmed = _selected_folder_not_writeable (MODEST_MAIN_WINDOW(win)); - if (!dimmed) + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + if (!dimmed) { dimmed = _selected_folder_is_root_or_inbox (MODEST_MAIN_WINDOW(win)); - if (!dimmed) + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + if (!dimmed) { dimmed = _selected_folder_is_any_of_type (win, types, 3); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } return dimmed; } @@ -203,8 +250,9 @@ modest_ui_dimming_rules_on_open_msg (ModestWindow *win, gpointer user_data) rule = MODEST_DIMMING_RULE (user_data); /* Check dimmed rule */ - if (!dimmed) + if (!dimmed) { dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), TRUE, user_data); + } if (!dimmed) { dimmed = _selected_msg_sent_in_progress (win); if (dimmed) @@ -242,15 +290,18 @@ modest_ui_dimming_rules_on_reply_msg (ModestWindow *win, gpointer user_data) if (dimmed) modest_dimming_rule_set_notification (rule, _("mcen_ib_nothing_to_reply")); } - if (!dimmed) + if (!dimmed) { dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), TRUE, rule); - + } /* msg view window dimming rules */ } else if (MODEST_IS_MSG_VIEW_WINDOW(win)) { /* Check dimmed rule */ - if (!dimmed) + if (!dimmed) { dimmed = _msg_download_in_progress (MODEST_MSG_VIEW_WINDOW(win)); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } } return dimmed; @@ -260,15 +311,22 @@ modest_ui_dimming_rules_on_reply_msg (ModestWindow *win, gpointer user_data) gboolean modest_ui_dimming_rules_on_contents_msg (ModestWindow *win, gpointer user_data) { + ModestDimmingRule *rule = NULL; gboolean dimmed = FALSE; g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE); + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); + rule = MODEST_DIMMING_RULE (user_data); /* Check dimmed rule */ - if (!dimmed) + if (!dimmed) { dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data); - if (!dimmed) + } + if (!dimmed) { dimmed = _msg_download_completed (MODEST_MAIN_WINDOW(win)); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } return dimmed; } @@ -306,8 +364,6 @@ modest_ui_dimming_rules_on_delete_msg (ModestWindow *win, gpointer user_data) } if (!dimmed) { dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data); - if (dimmed) - modest_dimming_rule_set_notification (rule, _("mcen_ib_no_message_selected")); } if (!dimmed) { dimmed = _already_opened_msg (win, &n_messages); @@ -347,8 +403,12 @@ modest_ui_dimming_rules_on_delete_msg (ModestWindow *win, gpointer user_data) gboolean modest_ui_dimming_rules_on_details (ModestWindow *win, gpointer user_data) { - gboolean dimmed = FALSE; + ModestDimmingRule *rule = NULL; GtkWidget *header_view = NULL; + gboolean dimmed = FALSE; + + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); + rule = MODEST_DIMMING_RULE (user_data); /* main window dimming rules */ if (MODEST_IS_MAIN_WINDOW(win)) { @@ -375,8 +435,10 @@ modest_ui_dimming_rules_on_details (ModestWindow *win, gpointer user_data) * though the UI spec is not clear about that. * If we enable this for accounts then we must * add code to handle them in modest_ui_actions_on_details(). */ - if (!TNY_IS_FOLDER(folder_store)) + if (!TNY_IS_FOLDER(folder_store)) { dimmed = TRUE; + modest_dimming_rule_set_notification (rule, ""); + } g_object_unref (folder_store); } @@ -388,8 +450,11 @@ modest_ui_dimming_rules_on_details (ModestWindow *win, gpointer user_data) } else { /* Check dimmed rule */ - if (!dimmed) + if (!dimmed) { dimmed = _msg_download_in_progress (MODEST_MSG_VIEW_WINDOW(win)); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } } return dimmed; @@ -399,37 +464,50 @@ modest_ui_dimming_rules_on_details (ModestWindow *win, gpointer user_data) gboolean modest_ui_dimming_rules_on_mark_as_read_msg (ModestWindow *win, gpointer user_data) { - gboolean dimmed = FALSE; + ModestDimmingRule *rule = NULL; TnyHeaderFlags flags; + gboolean dimmed = FALSE; g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE); + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); + rule = MODEST_DIMMING_RULE (user_data); flags = TNY_HEADER_FLAG_SEEN; /* Check dimmed rule */ - if (!dimmed) + if (!dimmed) { dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data); - if (!dimmed) + } + if (!dimmed) { dimmed = _selected_msg_marked_as (win, flags, FALSE); - + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + return dimmed; } gboolean modest_ui_dimming_rules_on_mark_as_unread_msg (ModestWindow *win, gpointer user_data) { - gboolean dimmed = FALSE; + ModestDimmingRule *rule = NULL; TnyHeaderFlags flags; + gboolean dimmed = FALSE; g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE); + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); + rule = MODEST_DIMMING_RULE (user_data); flags = TNY_HEADER_FLAG_SEEN; /* Check dimmed rule */ if (!dimmed) dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data); - if (!dimmed) + if (!dimmed) { dimmed = _selected_msg_marked_as (win, flags, TRUE); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } return dimmed; } @@ -437,8 +515,12 @@ modest_ui_dimming_rules_on_mark_as_unread_msg (ModestWindow *win, gpointer user_ gboolean modest_ui_dimming_rules_on_move_to (ModestWindow *win, gpointer user_data) { + ModestDimmingRule *rule = NULL; gboolean dimmed = FALSE; + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); + rule = MODEST_DIMMING_RULE (user_data); + if (MODEST_IS_MAIN_WINDOW (win)) dimmed = modest_ui_dimming_rules_on_main_window_move_to (win, user_data); else if (MODEST_IS_MSG_VIEW_WINDOW (win)) @@ -525,10 +607,16 @@ modest_ui_dimming_rules_on_paste_msgs (ModestWindow *win, gpointer user_data) types[2] = TNY_FOLDER_TYPE_SENT; /* Check dimmed rule */ - if (!dimmed) - dimmed = _invalid_clipboard_selected (win); - if (!dimmed) + if (!dimmed) { + dimmed = _clipboard_is_empty (win); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + if (!dimmed) { dimmed = _selected_folder_is_any_of_type (win, types, 3); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } if (!dimmed) { dimmed = _selected_folder_is_same_as_source (win); if (dimmed) @@ -550,8 +638,11 @@ modest_ui_dimming_rules_on_select_all (ModestWindow *win, gpointer user_data) rule = MODEST_DIMMING_RULE (user_data); /* Check dimmed rule */ - if (!dimmed) + if (!dimmed) { dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win)); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } return dimmed; } @@ -613,15 +704,91 @@ modest_ui_dimming_rules_on_remove_attachments (ModestWindow *win, gpointer user_ } gboolean -modest_ui_dimming_rules_on_copy (ModestWindow *win, gpointer user_data) +modest_ui_dimming_rules_on_undo (ModestWindow *win, gpointer user_data) { + ModestDimmingRule *rule = NULL; gboolean dimmed = FALSE; - - g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW(win), FALSE); + + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); + rule = MODEST_DIMMING_RULE (user_data); /* Check dimmed rule */ - if (!dimmed) - dimmed = _invalid_clipboard_selected (win); + if (!dimmed) { + dimmed = _clipboard_is_empty (win); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + + return dimmed; +} + +gboolean +modest_ui_dimming_rules_on_cut (ModestWindow *win, gpointer user_data) +{ + ModestDimmingRule *rule = NULL; + gboolean dimmed = FALSE; + + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); + rule = MODEST_DIMMING_RULE (user_data); + + /* Check common dimming rules */ + if (!dimmed) { + dimmed = _invalid_clipboard_selected (win); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + + /* Check window specific dimming rules */ + if (MODEST_IS_MAIN_WINDOW (win)) { + if (!dimmed) { + dimmed = _selected_folder_not_writeable (MODEST_MAIN_WINDOW(win)); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + if (!dimmed) { + dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win)); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + if (!dimmed) { + dimmed = _selected_msg_sent_in_progress (win); + if (dimmed) + modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_cut_mess")); + } + } + + return dimmed; +} + +gboolean +modest_ui_dimming_rules_on_copy (ModestWindow *win, gpointer user_data) +{ + ModestDimmingRule *rule = NULL; + gboolean dimmed = FALSE; + + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); + rule = MODEST_DIMMING_RULE (user_data); + + /* Check common dimming rules */ + if (!dimmed) { + dimmed = _invalid_clipboard_selected (win); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + + /* Check window specific dimming rules */ + if (MODEST_IS_MAIN_WINDOW (win)) { + if (!dimmed) { + dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win)); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + if (!dimmed) { + dimmed = _selected_msg_sent_in_progress (win); + if (dimmed) + modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_cut_mess")); + } + } return dimmed; } @@ -629,28 +796,41 @@ modest_ui_dimming_rules_on_copy (ModestWindow *win, gpointer user_data) gboolean modest_ui_dimming_rules_on_view_previous (ModestWindow *win, gpointer user_data) { + ModestDimmingRule *rule = NULL; gboolean dimmed = FALSE; + + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); + rule = MODEST_DIMMING_RULE (user_data); g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW(win), FALSE); /* Check dimmed rule */ - if (!dimmed) + if (!dimmed) { dimmed = modest_msg_view_window_first_message_selected (MODEST_MSG_VIEW_WINDOW(win)); - + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + return dimmed; } gboolean modest_ui_dimming_rules_on_view_next (ModestWindow *win, gpointer user_data) { + ModestDimmingRule *rule = NULL; gboolean dimmed = FALSE; g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW(win), FALSE); + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); + rule = MODEST_DIMMING_RULE (user_data); /* Check dimmed rule */ - if (!dimmed) + if (!dimmed) { dimmed = modest_msg_view_window_last_message_selected (MODEST_MSG_VIEW_WINDOW(win)); - + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + return dimmed; } @@ -999,7 +1179,20 @@ _folder_is_any_of_type (TnyFolder *folder, return result; } +static gboolean +_clipboard_is_empty (ModestWindow *win) +{ + gboolean result = FALSE; + + if (MODEST_IS_MAIN_WINDOW (win)) { + ModestEmailClipboard *clipboard = NULL; + clipboard = modest_runtime_get_email_clipboard (); + if (modest_email_clipboard_cleared (clipboard)) + result = TRUE; + } + return result; +} static gboolean _invalid_clipboard_selected (ModestWindow *win) @@ -1023,11 +1216,14 @@ _invalid_clipboard_selected (ModestWindow *win) (MODEST_IS_ATTACHMENTS_VIEW (focused))); } else if (MODEST_IS_MAIN_WINDOW (win)) { - ModestEmailClipboard *clipboard = NULL; + GtkWidget *header_view = NULL; - clipboard = modest_runtime_get_email_clipboard (); - if (modest_email_clipboard_cleared (clipboard)) - result = TRUE; + /* Get header view to check selected messages */ + header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win), + MODEST_WIDGET_TYPE_HEADER_VIEW); + + /* Check dimming */ + result = !modest_header_view_has_selected_headers (MODEST_HEADER_VIEW(header_view)); } return result; diff --git a/src/modest-ui-dimming-rules.h b/src/modest-ui-dimming-rules.h index e5e5537..6e29376 100644 --- a/src/modest-ui-dimming-rules.h +++ b/src/modest-ui-dimming-rules.h @@ -59,7 +59,9 @@ gboolean modest_ui_dimming_rules_on_select_all (ModestWindow *win, gpointer user gboolean modest_ui_dimming_rules_on_view_attachments (ModestWindow *win, gpointer user_data); gboolean modest_ui_dimming_rules_on_save_attachments (ModestWindow *win, gpointer user_data); gboolean modest_ui_dimming_rules_on_remove_attachments (ModestWindow *win, gpointer user_data); +gboolean modest_ui_dimming_rules_on_undo (ModestWindow *win, gpointer user_data); gboolean modest_ui_dimming_rules_on_copy (ModestWindow *win, gpointer user_data); +gboolean modest_ui_dimming_rules_on_cut (ModestWindow *win, gpointer user_data); gboolean modest_ui_dimming_rules_on_view_previous (ModestWindow *win, gpointer user_data); gboolean modest_ui_dimming_rules_on_view_next (ModestWindow *win, gpointer user_data); gboolean modest_ui_dimming_rules_on_tools_smtp_servers (ModestWindow *win, gpointer user_data);