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 ();