Fixes #301263 (bnc)
authorChenthill Palanisamy <pchen@src.gnome.org>
Wed, 29 Aug 2007 10:39:23 +0000 (10:39 +0000)
committerChenthill Palanisamy <pchen@src.gnome.org>
Wed, 29 Aug 2007 10:39:23 +0000 (10:39 +0000)
svn path=/trunk/; revision=8010

servers/exchange/ChangeLog
servers/exchange/storage/exchange-account.c
servers/exchange/storage/exchange-account.h
servers/exchange/storage/exchange-esource.c

index 06e6955..7be71a4 100644 (file)
@@ -1,3 +1,11 @@
+2007-08-29  Chenthill Palanisamy  <pchenthill@novell.com>
+
+       Fixes #301263 (bnc)
+       * storage/exchange-account.[ch]: Added a new function
+       to scan foriegn folder hierarchy. 
+       * storage/exchange-esource.c: (add_folder_esource):
+       Set the foriegn folder property.
+
 2007-08-24  Milan Crha  <mcrha@redhat.com>
 
        ** Fix for bug #381548 from John D. Ramsdell
index a0c11cf..2edb864 100644 (file)
@@ -1782,6 +1782,35 @@ exchange_account_get_foreign_uri (ExchangeAccount *account,
        return foreign_uri;
 }
 
+/* Scans the subscribed users folders. */
+/*FIXME This function is not really required if the syncronization
+  problem between exchange and evolution is fixed. Exchange does not get to know 
+ if an user's folder is subscribed from evolution */
+void
+exchange_account_scan_foreign_hierarchy (ExchangeAccount *account, const char *user_email)
+{
+       char *dir;
+       ExchangeHierarchy *hier;
+       int mode;
+       
+       hier = g_hash_table_lookup (account->priv->foreign_hierarchies, user_email);
+       if (hier) {
+               exchange_hierarchy_rescan (hier);
+               return;
+       }
+
+       dir = g_strdup_printf ("%s/%s", account->storage_dir, user_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);
+                       exchange_hierarchy_scan_subtree (hier, hier->toplevel, mode);
+               }
+       }
+}
+
 /**
  * exchange_account_get_hierarchy_by_email:
  * @account: an #ExchangeAccount
index 1a722cf..c7b136d 100644 (file)
@@ -195,6 +195,8 @@ void                        exchange_account_folder_size_rename (ExchangeAccount *account,
                                                             const char *old_name,
                                                             const char *new_name);
 GtkListStore          *exchange_account_folder_size_get_model (ExchangeAccount *account);
+void                   exchange_account_scan_foreign_hierarchy (ExchangeAccount *account, 
+                                                             const char *user_email);
 
 
 #ifdef __cplusplus
index 6b7d8fa..e4cb6ac 100644 (file)
@@ -113,6 +113,7 @@ add_folder_esource (ExchangeAccount *account,
                
                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, "subscriber", useremail);
                }
 
@@ -156,6 +157,7 @@ add_folder_esource (ExchangeAccount *account,
 
                        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, "subscriber", useremail);
                        }