diff options
Diffstat (limited to 'shell/e-local-storage.c')
-rw-r--r-- | shell/e-local-storage.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/shell/e-local-storage.c b/shell/e-local-storage.c index 380f88fba4..6aa41e23f8 100644 --- a/shell/e-local-storage.c +++ b/shell/e-local-storage.c @@ -200,10 +200,40 @@ load_folder (const char *physical_path, return TRUE; } - new_folder (local_storage, path, folder); + e_storage_new_folder (local_storage, path, folder); return TRUE; } +static void +setup_corba_storage (ELocalStorage *local_storage, + const char *path) +{ + GList *subfolder_paths; + EFolder *folder; + GList *p; + + folder = e_storage_get_folder (E_STORAGE (local_storage), path); + + if (folder != NULL) + evolution_storage_new_folder (EVOLUTION_STORAGE (local_storage->priv->bonobo_interface), + path, + e_folder_get_name (folder), + e_folder_get_type_string (folder), + e_folder_get_physical_uri (folder), + e_folder_get_description (folder), + e_folder_get_custom_icon_name (folder), + e_folder_get_unread_count (folder), + FALSE, + 0); + + subfolder_paths = e_storage_get_subfolder_paths (E_STORAGE (local_storage), path); + + for (p = subfolder_paths; p != NULL; p = p->next) + setup_corba_storage (local_storage, (const char *) p->data); + + e_free_string_list (subfolder_paths); +} + static gboolean load_all_folders (ELocalStorage *local_storage) { @@ -217,6 +247,8 @@ load_all_folders (ELocalStorage *local_storage) setup_stock_folders (local_storage); + setup_corba_storage (local_storage, "/"); + return TRUE; } |