aboutsummaryrefslogtreecommitdiffstats
path: root/shell/evolution-storage.c
diff options
context:
space:
mode:
Diffstat (limited to 'shell/evolution-storage.c')
-rw-r--r--shell/evolution-storage.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/shell/evolution-storage.c b/shell/evolution-storage.c
index 81d923b803..5ad51472a3 100644
--- a/shell/evolution-storage.c
+++ b/shell/evolution-storage.c
@@ -48,6 +48,9 @@ struct _EvolutionStoragePrivate {
/* URI for the toplevel node of the storage. */
char *toplevel_node_uri;
+ /* Type for the toplevel node of the storage. */
+ char *toplevel_node_type;
+
/* The set of folders we have in this storage. */
EFolderTree *folder_tree;
@@ -280,7 +283,7 @@ destroy (GtkObject *object)
g_free (priv->name);
g_free (priv->toplevel_node_uri);
-
+ g_free (priv->toplevel_node_type);
if (priv->folder_tree != NULL)
e_folder_tree_destroy (priv->folder_tree);
@@ -346,6 +349,7 @@ init (EvolutionStorage *storage)
priv = g_new (EvolutionStoragePrivate, 1);
priv->name = NULL;
priv->toplevel_node_uri = NULL;
+ priv->toplevel_node_type = NULL;
priv->folder_tree = e_folder_tree_new (folder_destroy_notify, storage);
priv->corba_storage_listeners = NULL;
@@ -370,9 +374,11 @@ void
evolution_storage_construct (EvolutionStorage *storage,
GNOME_Evolution_Storage corba_object,
const char *name,
- const char *toplevel_node_uri)
+ const char *toplevel_node_uri,
+ const char *toplevel_node_type)
{
EvolutionStoragePrivate *priv;
+ CORBA_Environment ev;
g_return_if_fail (storage != NULL);
g_return_if_fail (EVOLUTION_IS_STORAGE (storage));
@@ -380,16 +386,22 @@ evolution_storage_construct (EvolutionStorage *storage,
g_return_if_fail (name != NULL);
g_return_if_fail (name[0] != '\0');
+ CORBA_exception_init (&ev);
+
bonobo_object_construct (BONOBO_OBJECT (storage), corba_object);
priv = storage->priv;
- priv->name = g_strdup (name);
- priv->toplevel_node_uri = g_strdup (toplevel_node_uri);
+ priv->name = g_strdup (name);
+ priv->toplevel_node_uri = g_strdup (toplevel_node_uri);
+ priv->toplevel_node_type = g_strdup (toplevel_node_type);
+
+ CORBA_exception_free (&ev);
}
EvolutionStorage *
evolution_storage_new (const char *name,
- const char *toplevel_node_uri)
+ const char *toplevel_node_uri,
+ const char *toplevel_node_type)
{
EvolutionStorage *new;
POA_GNOME_Evolution_Storage *servant;
@@ -405,7 +417,7 @@ evolution_storage_new (const char *name,
new = gtk_type_new (evolution_storage_get_type ());
corba_object = bonobo_object_activate_servant (BONOBO_OBJECT (new), servant);
- evolution_storage_construct (new, corba_object, name, toplevel_node_uri);
+ evolution_storage_construct (new, corba_object, name, toplevel_node_uri, toplevel_node_type);
return new;
}
@@ -439,6 +451,7 @@ evolution_storage_register (EvolutionStorage *evolution_storage,
corba_storage,
priv->name,
e_safe_corba_string (priv->toplevel_node_uri),
+ e_safe_corba_string (priv->toplevel_node_type),
&ev);
if (ev._major == CORBA_NO_EXCEPTION) {