diff options
Diffstat (limited to 'plugins/exchange-operations/exchange-contacts.c')
-rw-r--r-- | plugins/exchange-operations/exchange-contacts.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/plugins/exchange-operations/exchange-contacts.c b/plugins/exchange-operations/exchange-contacts.c index 8457e3af61..dc1859cee2 100644 --- a/plugins/exchange-operations/exchange-contacts.c +++ b/plugins/exchange-operations/exchange-contacts.c @@ -136,6 +136,10 @@ e_exchange_contacts_pcontacts (EPlugin *epl, EConfigHookItemFactoryData *data) EABConfigTargetSource *t = (EABConfigTargetSource *) data->target; ESource *source = t->source; + GtkWidget *lbl_offline_msg, *vb_offline_msg; + char *offline_msg; + gint offline_status; + if (data->old) { gtk_widget_destroy (vb_pcontacts); @@ -149,6 +153,23 @@ e_exchange_contacts_pcontacts (EPlugin *epl, EConfigHookItemFactoryData *data) g_free (uri_text); + exchange_config_listener_get_offline_status (exchange_global_config_listener, + &offline_status); + if (offline_status == OFFLINE_MODE) { + /* Evolution is in offline mode; we will not be able to create + new folders or modify existing folders. */ + offline_msg = g_markup_printf_escaped ("<b>%s</b>", + _("Evolution is in offline mode. You cannot create or modify folders now.\nPlease switch to online mode for such operations.")); + vb_offline_msg = gtk_vbox_new (FALSE, 6); + gtk_container_add (GTK_CONTAINER (data->parent), vb_offline_msg); + lbl_offline_msg = gtk_label_new (""); + gtk_label_set_markup (GTK_LABEL (lbl_offline_msg), offline_msg); + g_free (offline_msg); + gtk_box_pack_start (GTK_BOX (vb_offline_msg), lbl_offline_msg, FALSE, FALSE, 0); + gtk_widget_show_all (vb_offline_msg); + return vb_offline_msg; + } + rel_uri = e_source_peek_relative_uri (source); uid = e_source_peek_uid (source); if (rel_uri && uid && (strcmp (rel_uri, uid))) { @@ -263,14 +284,19 @@ e_exchange_contacts_check (EPlugin *epl, EConfigHookPageCheckData *data) ESourceGroup *group; const char *base_uri; const char *rel_uri; + gint offline_status; rel_uri = e_source_peek_relative_uri (t->source); group = e_source_peek_group (t->source); base_uri = e_source_group_peek_base_uri (group); + exchange_config_listener_get_offline_status (exchange_global_config_listener, + &offline_status); if (base_uri && !strncmp (base_uri, "exchange", 8)) { + if (offline_status == OFFLINE_MODE) + return FALSE; if (rel_uri && !strlen (rel_uri)) { return FALSE; - } + } } return TRUE; @@ -285,6 +311,7 @@ e_exchange_contacts_commit (EPlugin *epl, EConfigTarget *target) int prefix_len; ExchangeAccount *account; ExchangeAccountFolderResult result; + gint offline_status; uri_text = e_source_get_uri (source); if (uri_text && strncmp (uri_text, "exchange", 8)) { @@ -293,6 +320,11 @@ e_exchange_contacts_commit (EPlugin *epl, EConfigTarget *target) } g_free (uri_text); + exchange_config_listener_get_offline_status (exchange_global_config_listener, + &offline_status); + if (offline_status == OFFLINE_MODE) + return; + account = exchange_operations_get_exchange_account (); path_prefix = g_strconcat (account->account_filename, "/", NULL); prefix_len = strlen (path_prefix); |