From 2dfd548d26e179dfb12d836b57a88c215d76a926 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Mon, 8 Apr 2013 19:20:23 +0200 Subject: Bug #271262 - Allow Send/Receive of local stores in offline --- modules/mail-config/e-mail-config-sendmail-backend.c | 11 +++++++++++ modules/mail/e-mail-shell-view-actions.c | 20 -------------------- modules/mail/e-mail-shell-view-private.c | 20 ++++++++++++++++++++ 3 files changed, 31 insertions(+), 20 deletions(-) (limited to 'modules') diff --git a/modules/mail-config/e-mail-config-sendmail-backend.c b/modules/mail-config/e-mail-config-sendmail-backend.c index f656caa6ee..1d92f2f43b 100644 --- a/modules/mail-config/e-mail-config-sendmail-backend.c +++ b/modules/mail-config/e-mail-config-sendmail-backend.c @@ -44,6 +44,7 @@ mail_config_sendmail_backend_insert_widgets (EMailConfigServiceBackend *backend, GtkWidget *custom_binary_entry; GtkWidget *use_custom_args_check; GtkWidget *custom_args_entry; + GtkWidget *send_in_offline; gchar *markup; PangoAttribute *attr; PangoAttrList *attr_list; @@ -124,6 +125,10 @@ mail_config_sendmail_backend_insert_widgets (EMailConfigServiceBackend *backend, gtk_label_set_attributes (GTK_LABEL (widget), attr_list); pango_attr_list_unref (attr_list); + widget = gtk_check_button_new_with_mnemonic (_("Send mail also when in offline _mode")); + gtk_grid_attach (GTK_GRID (container), widget, 0, 5, 2, 1); + send_in_offline = widget; + g_object_bind_property ( use_custom_binary_check, "active", custom_binary_entry, "sensitive", @@ -158,6 +163,12 @@ mail_config_sendmail_backend_insert_widgets (EMailConfigServiceBackend *backend, G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); + g_object_bind_property ( + settings, "send-in-offline", + send_in_offline, "active", + G_BINDING_BIDIRECTIONAL | + G_BINDING_SYNC_CREATE); + gtk_widget_show_all (container); } diff --git a/modules/mail/e-mail-shell-view-actions.c b/modules/mail/e-mail-shell-view-actions.c index ed5b30702c..16ad279629 100644 --- a/modules/mail/e-mail-shell-view-actions.c +++ b/modules/mail/e-mail-shell-view-actions.c @@ -1951,26 +1951,6 @@ e_mail_shell_view_actions_init (EMailShellView *mail_shell_view) ACTION (MAIL_STOP), "sensitive", G_BINDING_SYNC_CREATE); - g_object_bind_property ( - shell, "online", - ACTION (MAIL_SEND_RECEIVE), "sensitive", - G_BINDING_SYNC_CREATE); - - g_object_bind_property ( - shell, "online", - ACTION (MAIL_SEND_RECEIVE_RECEIVE_ALL), "sensitive", - G_BINDING_SYNC_CREATE); - - g_object_bind_property ( - shell, "online", - ACTION (MAIL_SEND_RECEIVE_SEND_ALL), "sensitive", - G_BINDING_SYNC_CREATE); - - g_object_bind_property ( - shell, "online", - ACTION (MAIL_SEND_RECEIVE_SUBMENU), "sensitive", - G_BINDING_SYNC_CREATE); - /* Keep the sensitivity of "Create Search Folder from Search" * in sync with "Save Search" so that its only selectable when * showing search results. */ diff --git a/modules/mail/e-mail-shell-view-private.c b/modules/mail/e-mail-shell-view-private.c index 6373e571a2..54f4d581e4 100644 --- a/modules/mail/e-mail-shell-view-private.c +++ b/modules/mail/e-mail-shell-view-private.c @@ -1215,10 +1215,13 @@ send_receive_add_to_menu (SendReceiveData *data, gint position) { GtkWidget *menu_item; + CamelProvider *provider; if (send_receive_find_menu_item (data, service) != NULL) return; + provider = camel_service_get_provider (service); + menu_item = gtk_menu_item_new (); gtk_widget_show (menu_item); @@ -1227,6 +1230,23 @@ send_receive_add_to_menu (SendReceiveData *data, menu_item, "label", G_BINDING_SYNC_CREATE); + if (provider && (provider->flags & CAMEL_PROVIDER_IS_REMOTE) != 0) { + gpointer object; + + if (CAMEL_IS_OFFLINE_STORE (service) || + CAMEL_IS_DISCO_STORE (service)) + object = g_object_ref (service); + else + object = camel_service_ref_session (service); + + g_object_bind_property ( + object, "online", + menu_item, "sensitive", + G_BINDING_SYNC_CREATE); + + g_object_unref (object); + } + g_hash_table_insert ( data->menu_items, menu_item, g_object_ref (service)); -- cgit v1.2.3