Index: plugins/exchange-operations/org-gnome-exchange-operations.error.xml
===================================================================
--- plugins/exchange-operations/org-gnome-exchange-operations.error.xml (revision 36615)
+++ plugins/exchange-operations/org-gnome-exchange-operations.error.xml (working copy)
@@ -48,6 +48,11 @@
<_secondary>Cannot display folders.
+
+ <_primary>Exchange Account is offline.
+ <_secondary>Cannot access the "Exchange settings" tab in offline mode.
+
+
<_primary>Exchange Account is offline.
<_secondary>Cannot perform the operation.
Index: plugins/exchange-operations/exchange-account-setup.c
===================================================================
--- plugins/exchange-operations/exchange-account-setup.c (revision 36615)
+++ plugins/exchange-operations/exchange-account-setup.c (working copy)
@@ -181,6 +181,7 @@
const char *source_url;
char *message = NULL, *txt = NULL, *oof_message;
gboolean oof_state = FALSE;
+ gint offline_status;
GtkVBox *vbox_settings;
@@ -234,6 +235,14 @@
account = exchange_operations_get_exchange_account ();
+ exchange_config_listener_get_offline_status (exchange_global_config_listener,
+ &offline_status);
+ if (offline_status == OFFLINE_MODE) {
+ e_error_run (NULL, ERROR_DOMAIN ":exchange-settings-offline", NULL);
+
+ return NULL;
+ }
+
oof_data = g_new0 (OOFData, 1);
oof_data->state = FALSE;
@@ -815,7 +824,8 @@
{
if (oof_data->message)
g_free (oof_data->message);
- g_free (oof_data);
+ if (oof_data)
+ g_free (oof_data);
}
void
@@ -824,6 +834,7 @@
EMConfigTargetAccount *target_account;
const char *source_url;
CamelURL *url;
+ gint offline_status;
target_account = (EMConfigTargetAccount *)data->config->target;
source_url = e_account_get_string (target_account->account, E_ACCOUNT_SOURCE_URL);
@@ -844,6 +855,14 @@
}
camel_url_free (url);
+
+ exchange_config_listener_get_offline_status (exchange_global_config_listener,
+ &offline_status);
+
+ if (offline_status == OFFLINE_MODE) {
+ return;
+ }
+
/* Set oof data in exchange account */
set_oof_info ();
destroy_oof_data ();