aboutsummaryrefslogtreecommitdiffstats
path: root/shell/e-local-storage.c
diff options
context:
space:
mode:
Diffstat (limited to 'shell/e-local-storage.c')
-rw-r--r--shell/e-local-storage.c34
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;
}