File subscribed_cal_eds.diff of Package evolution-data-server-2.6
Index: servers/exchange/storage/exchange-account.c
===================================================================
--- servers/exchange/storage/exchange-account.c (revision 7580)
+++ servers/exchange/storage/exchange-account.c (working copy)
@@ -1306,6 +1306,7 @@
continue;
setup_hierarchy_foreign (account, hier);
+ exchange_hierarchy_scan_subtree (hier, hier->toplevel, mode);
}
g_dir_close (d);
}
Index: servers/exchange/storage/exchange-hierarchy-foreign.c
===================================================================
--- servers/exchange/storage/exchange-hierarchy-foreign.c (revision 7580)
+++ servers/exchange/storage/exchange-hierarchy-foreign.c (working copy)
@@ -353,17 +353,21 @@
folder_type = e_folder_get_type_string (folder);
physical_uri = e_folder_get_physical_uri (folder);
- if (strcmp (folder_type, "calendar") == 0) {
+ if (!strcmp (folder_type, "calendar") ||
+ !strcmp (folder_type, "calendar/public")) {
remove_folder_esource (hier->account,
EXCHANGE_CALENDAR_FOLDER,
physical_uri);
}
- else if (strcmp (folder_type, "tasks") == 0) {
+ else if (!strcmp (folder_type, "tasks") ||
+ !(strcmp (folder_type, "tasks/public"))) {
remove_folder_esource (hier->account,
EXCHANGE_TASKS_FOLDER,
physical_uri);
}
- else if (strcmp (folder_type, "contacts") == 0) {
+ else if (!strcmp (folder_type, "contacts") ||
+ !(strcmp (folder_type, "contacts/public")) ||
+ !(strcmp (folder_type, "contacts/ldap"))) {
remove_folder_esource (hier->account,
EXCHANGE_CONTACTS_FOLDER,
physical_uri);
Index: servers/exchange/storage/exchange-esource.c
===================================================================
--- servers/exchange/storage/exchange-esource.c (revision 7580)
+++ servers/exchange/storage/exchange-esource.c (working copy)
@@ -110,8 +110,10 @@
e_source_set_property (source, "offline_sync", "1");
}
- if (foriegn_folder && (folder_type != EXCHANGE_CONTACTS_FOLDER))
+ if (foriegn_folder && (folder_type != EXCHANGE_CONTACTS_FOLDER)) {
e_source_set_property (source, "alarm", "never");
+ e_source_set_property (source, "foreign", "1");
+ }
e_source_set_property (source, "username", username);
e_source_set_property (source, "auth-domain", "Exchange");
@@ -151,8 +153,10 @@
else
e_source_set_property (source, "auth", "1");
- if (foriegn_folder && (folder_type != EXCHANGE_CONTACTS_FOLDER))
+ if (foriegn_folder && (folder_type != EXCHANGE_CONTACTS_FOLDER)) {
e_source_set_property (source, "alarm", "never");
+ e_source_set_property (source, "foreign", "1");
+ }
e_source_group_add_source (source_group, source, -1);
source_new = TRUE;
--- servers/exchange/storage/exchange-account.h (revision 7574)
+++ servers/exchange/storage/exchange-account.h (working copy)
@@ -89,6 +89,7 @@
char *exchange_account_get_foreign_uri (ExchangeAccount *acct,
E2kGlobalCatalogEntry *entry,
const char *std_uri_prop);
+ExchangeHierarchy *exchange_account_get_hierarchy_by_email (ExchangeAccount *account, const char *email);
char *exchange_account_get_authtype (ExchangeAccount *account);
--- servers/exchange/storage/exchange-account.c (revision 7574)
+++ servers/exchange/storage/exchange-account.c (working copy)
@@ -1767,6 +1767,42 @@
}
/**
+ * exchange_account_get_hierarchy_by_email:
+ * @account: an #ExchangeAccount
+ * @email: email id of the foreign user
+ *
+ * If the hierarchy is present just return it back. Else try to get it
+ * from the filesystem and return it.
+ *
+ * Return value: Returns the ExchangeHierarchy of the foreign user's folder.
+ **/
+
+ExchangeHierarchy *
+exchange_account_get_hierarchy_by_email (ExchangeAccount *account, const char *email)
+{
+ char *dir;
+ ExchangeHierarchy *hier = NULL;
+ int mode;
+
+ g_return_val_if_fail (email != NULL, NULL);
+
+ hier = g_hash_table_lookup (account->priv->foreign_hierarchies, email);
+ if (!hier) {
+ dir = g_strdup_printf ("%s/%s", account->storage_dir, email);
+ if (g_file_test (dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)) {
+ hier = exchange_hierarchy_foreign_new_from_dir (account, dir);
+ g_free (dir);
+ if (hier) {
+ exchange_account_is_offline (account, &mode);
+ setup_hierarchy_foreign (account, hier);
+ }
+ }
+ }
+
+ return hier;
+ }
+
+/**
* exchange_account_get_folder:
* @account: an #ExchangeAccount
* @path_or_uri: the shell path or URI referring to the folder