[evolution-mapi] Bug #628004 - Forgets 'copy locally for offline' setting



commit 8b1366dec414e09a9f43b5926c2c93f686655f1f
Author: Milan Crha <mcrha redhat com>
Date:   Thu Aug 26 19:12:48 2010 +0200

    Bug #628004 - Forgets 'copy locally for offline' setting

 .../exchange-mapi-account-listener.c               |   32 +++++++++++++++----
 src/addressbook/e-book-backend-mapi.c              |    3 ++
 2 files changed, 28 insertions(+), 7 deletions(-)
---
diff --git a/src/account-setup-eplugin/exchange-mapi-account-listener.c b/src/account-setup-eplugin/exchange-mapi-account-listener.c
index 52014bc..439d5b9 100644
--- a/src/account-setup-eplugin/exchange-mapi-account-listener.c
+++ b/src/account-setup-eplugin/exchange-mapi-account-listener.c
@@ -267,16 +267,22 @@ add_cal_esource (EAccount *account, GSList *folders, ExchangeMAPIFolderType fold
 		e_source_set_property (source, "domain", camel_url_get_param (url, "domain"));
 		e_source_set_property (source, "folder-id", fid);
 		e_source_set_property (source, "public", "no");
-		e_source_set_property (source, "offline_sync",
+
+		if (is_new_source)
+			e_source_set_property (source, "offline_sync",
 					camel_url_get_param (url, "offline_sync") ? "1" : "0");
 
 		if (folder->is_default)
 			e_source_set_property (source, "delete", "no");
+		else
+			e_source_set_property (source, "delete", NULL);
 
 		if (folder->parent_folder_id) {
 			gchar *tmp = exchange_mapi_util_mapi_id_to_string (folder->parent_folder_id);
 			e_source_set_property (source, "parent-fid", tmp);
 			g_free (tmp);
+		} else {
+			e_source_set_property (source, "parent-fid", NULL);
 		}
 
 		e_source_set_property (source, "acl-user-name", account->id->name);
@@ -628,16 +634,26 @@ add_addressbook_sources (EAccount *account, GSList *folders, mapi_id_t trash_fid
 		e_source_set_property(source, "domain", camel_url_get_param (url, "domain"));
 		e_source_set_property(source, "folder-id", fid);
 		e_source_set_property (source, "public", "no");
-		e_source_set_property (source, "offline_sync",
+
+		if (is_new_source) {
+			e_source_set_property (source, "offline_sync",
 					       camel_url_get_param (url, "offline_sync") ? "1" : "0");
-		e_source_set_property (source, "completion", "true");
+			e_source_set_property (source, "completion", "true");
+		}
+
 		if (folder->is_default)
 			e_source_set_property (source, "delete", "no");
+		else
+			e_source_set_property (source, "delete", NULL);
+
 		if (folder->parent_folder_id) {
 			gchar *tmp = exchange_mapi_util_mapi_id_to_string (folder->parent_folder_id);
 			e_source_set_property (source, "parent-fid", tmp);
 			g_free (tmp);
+		} else {
+			e_source_set_property (source, "parent-fid", NULL);
 		}
+
 		if (is_new_source)
 			e_source_group_add_source (group, source, -1);
 		g_object_unref (source);
@@ -680,10 +696,12 @@ add_addressbook_sources (EAccount *account, GSList *folders, mapi_id_t trash_fid
 		e_source_set_property(source, "view-limit", camel_url_get_param (url, "ad_limit"));
 		e_source_set_property(source, "profile", camel_url_get_param (url, "profile"));
 		e_source_set_property(source, "domain", camel_url_get_param (url, "domain"));
-		// e_source_set_property (source, "offline_sync",
-		// camel_url_get_param (url, "offline_sync") ? "1" : "0");
-		e_source_set_property(source, "offline_sync", "1");
-		e_source_set_property (source, "completion", "true");
+
+		if (is_new_source) {
+			e_source_set_property(source, "offline_sync", "1");
+			e_source_set_property (source, "completion", "true");
+		}
+
 		e_source_set_property (source, "delete", "no");
 		if (is_new_source)
 			e_source_group_add_source (group, source, -1);
diff --git a/src/addressbook/e-book-backend-mapi.c b/src/addressbook/e-book-backend-mapi.c
index 6477f8b..f273405 100644
--- a/src/addressbook/e-book-backend-mapi.c
+++ b/src/addressbook/e-book-backend-mapi.c
@@ -372,6 +372,9 @@ ebbm_update_cache_cb (gpointer data)
 	if (book_view)
 		e_data_book_view_notify_complete (book_view, NULL);
 
+	/* indicate the thread is not running */
+	g_cancellable_cancel (priv->update_cache);
+
 	return NULL;
 }
 



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