static void mail_store_prepare_for_offline_thread (GSimpleAsyncResult *simple, CamelStore *store, GCancellable *cancellable) { CamelService *service; gchar *service_name; GError *error = NULL; service = CAMEL_SERVICE (store); service_name = camel_service_get_name (service, TRUE); camel_operation_push_message ( cancellable, _("Preparing account '%s' for offline"), service_name); g_free (service_name); if (CAMEL_IS_DISCO_STORE (store)) camel_disco_store_prepare_for_offline ( CAMEL_DISCO_STORE (store), cancellable, &error); else if (CAMEL_IS_OFFLINE_STORE (store)) camel_offline_store_prepare_for_offline_sync ( CAMEL_OFFLINE_STORE (store), cancellable, &error); if (error != NULL) g_simple_async_result_take_error (simple, error); camel_operation_pop_message (cancellable); }
/* Helper for e_mail_store_prepare_for_offline() */ static void mail_store_prepare_for_offline_thread (GSimpleAsyncResult *simple, GObject *source_object, GCancellable *cancellable) { CamelService *service; const gchar *display_name; GError *local_error = NULL; service = CAMEL_SERVICE (source_object); display_name = camel_service_get_display_name (service); if (display_name == NULL || *display_name == '\0') display_name = G_OBJECT_TYPE_NAME (service); camel_operation_push_message ( cancellable, _("Preparing account “%s” for offline"), display_name); if (CAMEL_IS_OFFLINE_STORE (service)) camel_offline_store_prepare_for_offline_sync ( CAMEL_OFFLINE_STORE (service), cancellable, &local_error); if (local_error != NULL) g_simple_async_result_take_error (simple, local_error); camel_operation_pop_message (cancellable); }
gboolean e_mail_store_go_online_sync (CamelStore *store, GCancellable *cancellable, GError **error) { CamelService *service; const gchar *display_name; gboolean success = TRUE; 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') display_name = G_OBJECT_TYPE_NAME (service); camel_operation_push_message ( cancellable, _("Reconnecting to “%s”"), display_name); if (CAMEL_IS_OFFLINE_STORE (store)) success = camel_offline_store_set_online_sync ( CAMEL_OFFLINE_STORE (store), TRUE, cancellable, error); camel_operation_pop_message (cancellable); return success; }
static void setline_check(void *key, void *value, void *data) { CamelService *service = key; struct _setline_data *sd = data; if (CAMEL_IS_DISCO_STORE(service) || CAMEL_IS_OFFLINE_STORE(service)) { sd->pending++; mail_store_set_offline((CamelStore *)service, !sd->status, setline_done, sd); } }
static void send_receive_add_to_menu (SendReceiveData *data, CamelService *service, 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); e_binding_bind_property ( service, "display-name", menu_item, "label", G_BINDING_SYNC_CREATE); if (provider && (provider->flags & CAMEL_PROVIDER_IS_REMOTE) != 0) { gpointer object; if (CAMEL_IS_OFFLINE_STORE (service)) object = g_object_ref (service); else object = camel_service_ref_session (service); e_signal_connect_notify_object ( object, "notify::online", G_CALLBACK (service_online_state_changed_cb), menu_item, 0); g_object_unref (object); } g_hash_table_insert ( data->menu_items, menu_item, g_object_ref (service)); g_signal_connect ( menu_item, "activate", G_CALLBACK (send_receive_account_item_activate_cb), data); /* Position is with respect to the sorted list of CamelService-s, * not menu item position. */ if (position < 0) gtk_menu_shell_append (data->menu, menu_item); else gtk_menu_shell_insert (data->menu, menu_item, position + 4); }
static void mail_store_go_offline_thread (GSimpleAsyncResult *simple, CamelStore *store, GCancellable *cancellable) { CamelService *service; gchar *service_name; GError *error = NULL; service = CAMEL_SERVICE (store); service_name = camel_service_get_name (service, TRUE); camel_operation_push_message ( cancellable, _("Disconnecting from '%s'"), service_name); g_free (service_name); if (CAMEL_IS_DISCO_STORE (store)) { CamelDiscoStore *disco_store; disco_store = CAMEL_DISCO_STORE (store); if (camel_disco_store_can_work_offline (disco_store)) camel_disco_store_set_status ( disco_store, CAMEL_DISCO_STORE_OFFLINE, cancellable, &error); else em_utils_disconnect_service_sync (service, TRUE, cancellable, &error); } else if (CAMEL_IS_OFFLINE_STORE (store)) { CamelOfflineStore *offline_store; offline_store = CAMEL_OFFLINE_STORE (store); camel_offline_store_set_online_sync ( offline_store, FALSE, cancellable, &error); } else em_utils_disconnect_service_sync (service, TRUE, cancellable, &error); if (error != NULL) g_simple_async_result_take_error (simple, error); camel_operation_pop_message (cancellable); }