From a69cbcd79aff01585620a12b378686d86c219ce9 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sun, 3 Oct 2010 09:39:10 -0400 Subject: Bug 510020 - Add "Manage Subscriptions" to store context menus --- modules/mail/e-mail-shell-view-actions.c | 20 +++++++++++++++++++- modules/mail/e-mail-shell-view-actions.h | 2 ++ modules/mail/e-mail-shell-view.c | 7 +++++++ 3 files changed, 28 insertions(+), 1 deletion(-) (limited to 'modules/mail') diff --git a/modules/mail/e-mail-shell-view-actions.c b/modules/mail/e-mail-shell-view-actions.c index b521dc3712..4b4a1d8024 100644 --- a/modules/mail/e-mail-shell-view-actions.c +++ b/modules/mail/e-mail-shell-view-actions.c @@ -1029,6 +1029,20 @@ static GtkActionEntry mail_entries[] = { NULL, /* XXX Add a tooltip! */ G_CALLBACK (action_mail_label_none_cb) }, + /* This is the same as "mail-tools-subscriptions" but only + * appears in the sidebar context menu when right-clicking + * on a store that supports folder subscriptions. No need + * for a special callback because Folder->Subscriptions... + * already tries to open the "Folder Subscriptions" dialog + * according to the highlighted item in the sidebar, which + * is exactly the behavior we want here. */ + { "mail-manage-subscriptions", + NULL, + N_("_Manage Subscriptions"), + NULL, + N_("Subscribe or unsubscribe to folders on remote servers"), + G_CALLBACK (action_mail_tools_subscriptions_cb) }, + { "mail-smart-backward", NULL, NULL, /* No menu item; key press only */ @@ -1153,7 +1167,11 @@ static EPopupActionEntry mail_popup_entries[] = { { "mail-popup-folder-unsubscribe", NULL, - "mail-folder-unsubscribe" } + "mail-folder-unsubscribe" }, + + { "mail-popup-manage-subscriptions", + NULL, + "mail-manage-subscriptions" } }; static GtkToggleActionEntry mail_toggle_entries[] = { diff --git a/modules/mail/e-mail-shell-view-actions.h b/modules/mail/e-mail-shell-view-actions.h index 34f6e6c8f9..5eb015bd47 100644 --- a/modules/mail/e-mail-shell-view-actions.h +++ b/modules/mail/e-mail-shell-view-actions.h @@ -105,6 +105,8 @@ E_SHELL_WINDOW_ACTION ((window), "mail-label-none") #define E_SHELL_WINDOW_ACTION_MAIL_LOAD_IMAGES(window) \ E_SHELL_WINDOW_ACTION ((window), "mail-load-images") +#define E_SHELL_WINDOW_ACTION_MAIL_MANAGE_SUBSCRIPTIONS(window) \ + E_SHELL_WINDOW_ACTION ((window), "mail-manage-subscriptions") #define E_SHELL_WINDOW_ACTION_MAIL_MARK_IMPORTANT(window) \ E_SHELL_WINDOW_ACTION ((window), "mail-mark-important") #define E_SHELL_WINDOW_ACTION_MAIL_MARK_JUNK(window) \ diff --git a/modules/mail/e-mail-shell-view.c b/modules/mail/e-mail-shell-view.c index 0e9a66c2ad..6b6b530b90 100644 --- a/modules/mail/e-mail-shell-view.c +++ b/modules/mail/e-mail-shell-view.c @@ -843,6 +843,7 @@ mail_shell_view_update_actions (EShellView *shell_view) gboolean folder_is_trash; gboolean folder_has_unread_rec = FALSE; gboolean folder_tree_and_message_list_agree = TRUE; + gboolean store_supports_subscriptions; gboolean have_enabled_account; /* Chain up to parent's update_actions() method. */ @@ -878,6 +879,8 @@ mail_shell_view_update_actions (EShellView *shell_view) (state & E_MAIL_SIDEBAR_FOLDER_IS_STORE); folder_is_trash = (state & E_MAIL_SIDEBAR_FOLDER_IS_TRASH); + store_supports_subscriptions = + (state & E_MAIL_SIDEBAR_STORE_SUPPORTS_SUBSCRIPTIONS); uri = em_folder_tree_get_selected_uri (folder_tree); if (uri != NULL) { @@ -985,6 +988,10 @@ mail_shell_view_update_actions (EShellView *shell_view) sensitive = folder_has_unread_rec && !folder_is_store; gtk_action_set_sensitive (action, sensitive); + action = ACTION (MAIL_MANAGE_SUBSCRIPTIONS); + sensitive = folder_is_store && store_supports_subscriptions; + gtk_action_set_sensitive (action, sensitive); + action = ACTION (MAIL_TOOLS_SUBSCRIPTIONS); sensitive = have_enabled_account; gtk_action_set_sensitive (action, sensitive); -- cgit