[evolution-ews] Re-add foreign calendar/tasks/book sources on initial collection setup



commit 6bfef6f768c461956a33c61116259ff0c0786428
Author: Milan Crha <mcrha redhat com>
Date:   Thu Aug 16 11:38:23 2012 +0200

    Re-add foreign calendar/tasks/book sources on initial collection setup

 src/collection/e-ews-backend.c |   31 +++++++++++++++++++++++++++++++
 1 files changed, 31 insertions(+), 0 deletions(-)
---
diff --git a/src/collection/e-ews-backend.c b/src/collection/e-ews-backend.c
index 907c46f..11704ee 100644
--- a/src/collection/e-ews-backend.c
+++ b/src/collection/e-ews-backend.c
@@ -454,6 +454,35 @@ ews_backend_source_changed_cb (ESource *source,
 	ews_backend_add_gal_source (backend);
 }
 
+static void
+add_remote_sources (EEwsBackend *backend)
+{
+	GList *old_sources, *iter;
+	ESourceRegistryServer *registry;
+
+	registry = e_collection_backend_ref_server (E_COLLECTION_BACKEND (backend));
+	old_sources = e_collection_backend_claim_all_resources (E_COLLECTION_BACKEND (backend));
+	for (iter = old_sources; iter; iter = iter->next) {
+		ESource *source = iter->data;
+		ESourceEwsFolder *extension;
+
+		if (!e_source_has_extension (source, E_SOURCE_EXTENSION_EWS_FOLDER))
+			continue;
+
+		/* foreign folders are just added */
+		extension = e_source_get_extension (source, E_SOURCE_EXTENSION_EWS_FOLDER);
+		if (e_source_ews_folder_get_foreign (extension)) {
+			e_server_side_source_set_writable (
+				E_SERVER_SIDE_SOURCE (source), TRUE);
+			e_server_side_source_set_remote_deletable (
+				E_SERVER_SIDE_SOURCE (source), TRUE);
+			e_source_registry_server_add_source (registry, source);
+		}
+	}
+	g_list_free_full (old_sources, g_object_unref);
+	g_object_unref (registry);
+}
+
 static gboolean
 ews_backend_sync_folders_idle_cb (gpointer user_data)
 {
@@ -466,6 +495,8 @@ ews_backend_sync_folders_idle_cb (gpointer user_data)
 	ews_backend_sync_created_folders (
 		closure->backend, closure->folders_created);
 
+	add_remote_sources (closure->backend);
+
 	return FALSE;
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]