From dd4d570b628a19e74546fbbbc9ee2c0e6783c9e7 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 18 Jul 2013 11:23:36 -0400 Subject: Add e_mail_store_go_offline_sync(). Mostly for symmetry with e_mail_store_go_online_sync(). --- libemail-engine/e-mail-store-utils.c | 52 ++++++++++++++++++++++-------------- libemail-engine/e-mail-store-utils.h | 3 +++ 2 files changed, 35 insertions(+), 20 deletions(-) (limited to 'libemail-engine') diff --git a/libemail-engine/e-mail-store-utils.c b/libemail-engine/e-mail-store-utils.c index ac8e8ea07d..cb33af154e 100644 --- a/libemail-engine/e-mail-store-utils.c +++ b/libemail-engine/e-mail-store-utils.c @@ -159,12 +159,28 @@ static void mail_store_go_offline_thread (GSimpleAsyncResult *simple, GObject *source_object, GCancellable *cancellable) +{ + GError *local_error = NULL; + + e_mail_store_go_offline_sync ( + CAMEL_STORE (source_object), cancellable, &local_error); + + if (local_error != NULL) + g_simple_async_result_take_error (simple, local_error); +} + +gboolean +e_mail_store_go_offline_sync (CamelStore *store, + GCancellable *cancellable, + GError **error) { CamelService *service; const gchar *display_name; - GError *local_error = NULL; + gboolean success = TRUE; - service = CAMEL_SERVICE (source_object); + g_return_val_if_fail (CAMEL_IS_STORE (store), FALSE); + + service = CAMEL_SERVICE (store); display_name = camel_service_get_display_name (service); if (display_name == NULL || *display_name == '\0') @@ -173,36 +189,32 @@ mail_store_go_offline_thread (GSimpleAsyncResult *simple, camel_operation_push_message ( cancellable, _("Disconnecting from '%s'"), display_name); - if (CAMEL_IS_DISCO_STORE (service)) { + if (CAMEL_IS_DISCO_STORE (store)) { CamelDiscoStore *disco_store; - disco_store = CAMEL_DISCO_STORE (service); + disco_store = CAMEL_DISCO_STORE (store); if (camel_disco_store_can_work_offline (disco_store)) - camel_disco_store_set_status ( + success = camel_disco_store_set_status ( disco_store, CAMEL_DISCO_STORE_OFFLINE, - cancellable, &local_error); + cancellable, error); else - camel_service_disconnect_sync ( - service, TRUE, cancellable, &local_error); + success = camel_service_disconnect_sync ( + service, TRUE, cancellable, error); - } else if (CAMEL_IS_OFFLINE_STORE (service)) { - CamelOfflineStore *offline_store; - - offline_store = CAMEL_OFFLINE_STORE (service); - - camel_offline_store_set_online_sync ( - offline_store, FALSE, cancellable, &local_error); + } else if (CAMEL_IS_OFFLINE_STORE (store)) { + success = camel_offline_store_set_online_sync ( + CAMEL_OFFLINE_STORE (store), + FALSE, cancellable, error); } else { - camel_service_disconnect_sync ( - service, TRUE, cancellable, &local_error); + success = camel_service_disconnect_sync ( + service, TRUE, cancellable, error); } - if (local_error != NULL) - g_simple_async_result_take_error (simple, local_error); - camel_operation_pop_message (cancellable); + + return success; } void diff --git a/libemail-engine/e-mail-store-utils.h b/libemail-engine/e-mail-store-utils.h index 143e0cc24f..dc2431684a 100644 --- a/libemail-engine/e-mail-store-utils.h +++ b/libemail-engine/e-mail-store-utils.h @@ -40,6 +40,9 @@ gboolean e_mail_store_create_folder_finish GAsyncResult *result, GError **error); +gboolean e_mail_store_go_offline_sync (CamelStore *store, + GCancellable *cancellable, + GError **error); void e_mail_store_go_offline (CamelStore *store, gint io_priority, GCancellable *cancellable, -- cgit v1.2.3