aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2013-04-09 01:20:23 +0800
committerMilan Crha <mcrha@redhat.com>2013-04-09 01:21:04 +0800
commit2dfd548d26e179dfb12d836b57a88c215d76a926 (patch)
tree4b829ce2d938a4bb3737e0ce6c8def28497adc3c /modules
parent94372b5f1857b66d1ae7e14a37075122b5c8336c (diff)
downloadgsoc2013-evolution-2dfd548d26e179dfb12d836b57a88c215d76a926.tar
gsoc2013-evolution-2dfd548d26e179dfb12d836b57a88c215d76a926.tar.gz
gsoc2013-evolution-2dfd548d26e179dfb12d836b57a88c215d76a926.tar.bz2
gsoc2013-evolution-2dfd548d26e179dfb12d836b57a88c215d76a926.tar.lz
gsoc2013-evolution-2dfd548d26e179dfb12d836b57a88c215d76a926.tar.xz
gsoc2013-evolution-2dfd548d26e179dfb12d836b57a88c215d76a926.tar.zst
gsoc2013-evolution-2dfd548d26e179dfb12d836b57a88c215d76a926.zip
Bug #271262 - Allow Send/Receive of local stores in offline
Diffstat (limited to 'modules')
-rw-r--r--modules/mail-config/e-mail-config-sendmail-backend.c11
-rw-r--r--modules/mail/e-mail-shell-view-actions.c20
-rw-r--r--modules/mail/e-mail-shell-view-private.c20
3 files changed, 31 insertions, 20 deletions
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));