static void google_backend_add_tasks (ECollectionBackend *backend) { ESource *source; ESource *collection_source; ESourceRegistryServer *server; ESourceExtension *extension; ESourceCollection *collection_extension; const gchar *backend_name; const gchar *extension_name; const gchar *resource_id; collection_source = e_backend_get_source (E_BACKEND (backend)); resource_id = GOOGLE_TASKS_RESOURCE_ID; source = e_collection_backend_new_child (backend, resource_id); e_source_set_display_name (source, _("Tasks")); collection_extension = e_source_get_extension ( collection_source, E_SOURCE_EXTENSION_COLLECTION); /* Configure the tasks source. */ backend_name = GOOGLE_TASKS_BACKEND_NAME; extension_name = E_SOURCE_EXTENSION_TASK_LIST; extension = e_source_get_extension (source, extension_name); e_source_backend_set_backend_name ( E_SOURCE_BACKEND (extension), backend_name); extension_name = E_SOURCE_EXTENSION_AUTHENTICATION; extension = e_source_get_extension (source, extension_name); g_object_bind_property ( collection_extension, "identity", extension, "user", G_BINDING_SYNC_CREATE); extension_name = E_SOURCE_EXTENSION_SECURITY; extension = e_source_get_extension (source, extension_name); e_source_security_set_secure ( E_SOURCE_SECURITY (extension), TRUE); server = e_collection_backend_ref_server (backend); e_source_registry_server_add_source (server, source); g_object_unref (server); g_object_unref (source); }
static void google_backend_add_contacts (ECollectionBackend *backend) { ESource *source; ESource *collection_source; ESourceRegistryServer *server; ESourceExtension *extension; ESourceCollection *collection_extension; const gchar *backend_name; const gchar *extension_name; const gchar *resource_id; collection_source = e_backend_get_source (E_BACKEND (backend)); resource_id = GOOGLE_CONTACTS_RESOURCE_ID; source = e_collection_backend_new_child (backend, resource_id); e_source_set_display_name (source, _("Contacts")); /* Add the address book source to the collection. */ collection_extension = e_source_get_extension ( collection_source, E_SOURCE_EXTENSION_COLLECTION); /* Configure the address book source. */ backend_name = GOOGLE_CONTACTS_BACKEND_NAME; extension_name = E_SOURCE_EXTENSION_ADDRESS_BOOK; extension = e_source_get_extension (source, extension_name); e_source_backend_set_backend_name ( E_SOURCE_BACKEND (extension), backend_name); extension_name = E_SOURCE_EXTENSION_AUTHENTICATION; extension = e_source_get_extension (source, extension_name); e_source_authentication_set_host ( E_SOURCE_AUTHENTICATION (extension), GOOGLE_CONTACTS_HOST); g_object_bind_property ( collection_extension, "identity", extension, "user", G_BINDING_SYNC_CREATE); server = e_collection_backend_ref_server (backend); e_source_registry_server_add_source (server, source); g_object_unref (server); g_object_unref (source); }
static gboolean migrate_mbox_to_maildir (EShell *shell, CamelSession *session, ESource *mbox_source) { ESourceRegistry *registry; ESourceExtension *extension; const gchar *extension_name; CamelService *mbox_service = NULL; CamelService *maildir_service = NULL; CamelSettings *settings; const gchar *data_dir; const gchar *mbox_uid; gchar *path; struct MigrateStore ms; GThread *thread; GError *error = NULL; registry = e_shell_get_registry (shell); data_dir = camel_session_get_user_data_dir (session); mbox_uid = e_source_get_uid (mbox_source); e_source_set_display_name (mbox_source, "local_mbox"); extension_name = E_SOURCE_EXTENSION_MAIL_ACCOUNT; extension = e_source_get_extension (mbox_source, extension_name); e_source_backend_set_backend_name ( E_SOURCE_BACKEND (extension), "mbox"); extension_name = e_source_camel_get_extension_name ("mbox"); extension = e_source_get_extension (mbox_source, extension_name); settings = e_source_camel_get_settings (E_SOURCE_CAMEL (extension)); path = g_build_filename (data_dir, mbox_uid, NULL); g_object_set (settings, "path", path, NULL); g_free (path); e_source_registry_commit_source_sync ( registry, mbox_source, NULL, &error); if (error == NULL) mbox_service = camel_session_add_service ( session, mbox_uid, "mbox", CAMEL_PROVIDER_STORE, &error); if (error == NULL) maildir_service = camel_session_add_service ( session, "local", "maildir", CAMEL_PROVIDER_STORE, &error); if (error != NULL) { if (mbox_service != NULL) g_object_unref (mbox_service); if (maildir_service != NULL) g_object_unref (maildir_service); g_warning ("%s: %s", G_STRFUNC, error->message); g_error_free (error); return FALSE; } g_return_val_if_fail (CAMEL_IS_STORE (mbox_service), FALSE); g_return_val_if_fail (CAMEL_IS_STORE (maildir_service), FALSE); camel_service_set_settings (mbox_service, settings); settings = camel_service_ref_settings (maildir_service); path = g_build_filename (data_dir, "local", NULL); g_object_set (settings, "path", path, NULL); if (g_mkdir (path, 0700) == -1) g_warning ( "%s: Failed to make directory '%s': %s", G_STRFUNC, path, g_strerror (errno)); g_free (path); g_object_unref (settings); ms.mail_store = CAMEL_STORE (mbox_service); ms.maildir_store = CAMEL_STORE (maildir_service); ms.session = session; ms.complete = FALSE; thread = g_thread_new (NULL, (GThreadFunc) migrate_stores, &ms); /* coverity[loop_condition] */ while (!ms.complete) g_main_context_iteration (NULL, TRUE); g_object_unref (mbox_service); g_object_unref (maildir_service); g_thread_unref (thread); return TRUE; }
static void google_backend_add_calendar (ECollectionBackend *backend) { ESource *source; ESource *collection_source; ESourceRegistryServer *server; ESourceExtension *extension; ESourceCollection *collection_extension; const gchar *backend_name; const gchar *extension_name; const gchar *resource_id; /* FIXME As a future enhancement, we should query Google * for a list of user calendars and add them to the * collection with matching display names and colors. */ /* NOTE: Host name and WebDAV resource path are set in * google_backend_calendar_update_auth_method(), * since they depend on the auth method used. */ collection_source = e_backend_get_source (E_BACKEND (backend)); resource_id = GOOGLE_CALENDAR_RESOURCE_ID; source = e_collection_backend_new_child (backend, resource_id); e_source_set_display_name (source, _("Calendar")); collection_extension = e_source_get_extension ( collection_source, E_SOURCE_EXTENSION_COLLECTION); /* Configure the calendar source. */ backend_name = GOOGLE_CALENDAR_BACKEND_NAME; extension_name = E_SOURCE_EXTENSION_CALENDAR; extension = e_source_get_extension (source, extension_name); e_source_backend_set_backend_name ( E_SOURCE_BACKEND (extension), backend_name); extension_name = E_SOURCE_EXTENSION_AUTHENTICATION; extension = e_source_get_extension (source, extension_name); g_object_bind_property ( collection_extension, "identity", extension, "user", G_BINDING_SYNC_CREATE); /* Make sure the WebDAV resource path is up-to-date, since * it's built from the "user" property that we just set. */ google_backend_calendar_update_auth_method (source); extension_name = E_SOURCE_EXTENSION_SECURITY; extension = e_source_get_extension (source, extension_name); e_source_security_set_secure ( E_SOURCE_SECURITY (extension), TRUE); extension_name = E_SOURCE_EXTENSION_ALARMS; extension = e_source_get_extension (source, extension_name); if (!e_source_alarms_get_last_notified (E_SOURCE_ALARMS (extension))) { GTimeVal today_tv; gchar *today; g_get_current_time (&today_tv); today = g_time_val_to_iso8601 (&today_tv); e_source_alarms_set_last_notified ( E_SOURCE_ALARMS (extension), today); g_free (today); } server = e_collection_backend_ref_server (backend); e_source_registry_server_add_source (server, source); g_object_unref (server); g_object_unref (source); }