aboutsummaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
Diffstat (limited to 'shell')
-rw-r--r--shell/ChangeLog12
-rw-r--r--shell/Evolution-Storage.idl2
-rw-r--r--shell/e-corba-storage.c6
-rw-r--r--shell/e-local-storage.c18
-rw-r--r--shell/e-storage.c39
-rw-r--r--shell/evolution-storage.c21
-rw-r--r--shell/evolution-storage.h1
7 files changed, 62 insertions, 37 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog
index 022ab25cd9..503ac66817 100644
--- a/shell/ChangeLog
+++ b/shell/ChangeLog
@@ -1,3 +1,15 @@
+2000-09-01 Ettore Perazzoli <ettore@helixcode.com>
+
+ * evolution-storage.c (evolution_storage_new_folder): Handle @path
+ as the full path.
+
+ * e-storage.c (e_storage_new_folder): Consider @path to be the
+ full path, not the parent path.
+ * e-local-storage.c (load_folders): Updated accordingly.
+
+ * Evolution-Storage.idl: Member `name' of `struct Folder' renamed
+ to `display_name'.
+
2000-08-31 Chris Toshok <toshok@helixcode.com>
* e-shell-view.c: add delayed_selection to _EShellViewPrivate.
diff --git a/shell/Evolution-Storage.idl b/shell/Evolution-Storage.idl
index 4e35e859bf..46c73e2654 100644
--- a/shell/Evolution-Storage.idl
+++ b/shell/Evolution-Storage.idl
@@ -14,7 +14,7 @@ module Evolution {
struct Folder {
string type;
string description;
- string name;
+ string display_name;
string physical_uri;
};
diff --git a/shell/e-corba-storage.c b/shell/e-corba-storage.c
index b4320a4c52..3e977afaf1 100644
--- a/shell/e-corba-storage.c
+++ b/shell/e-corba-storage.c
@@ -105,14 +105,14 @@ impl_StorageListener_new_folder (PortableServer_Servant servant,
storage_listener_servant = (StorageListenerServant *) servant;
storage = storage_listener_servant->storage;
- e_folder = e_folder_new (folder->name,
+ e_folder = e_folder_new (folder->display_name,
folder->type,
folder->description);
e_folder_set_physical_uri (e_folder, folder->physical_uri);
if (! e_storage_new_folder (storage, path, e_folder)) {
- g_print ("Cannot register folder -- %s %s\n", path, folder->name);
+ g_print ("Cannot register folder -- %s %s\n", path, folder->display_name);
CORBA_exception_set (ev,
CORBA_USER_EXCEPTION,
ex_Evolution_StorageListener_Exists,
@@ -120,7 +120,7 @@ impl_StorageListener_new_folder (PortableServer_Servant servant,
gtk_object_unref (GTK_OBJECT (e_folder));
}
- g_print ("Folder registered successfully -- %s %s\n", path, folder->name);
+ g_print ("Folder registered successfully -- %s %s\n", path, folder->display_name);
}
static void
diff --git a/shell/e-local-storage.c b/shell/e-local-storage.c
index 93234b4741..de8e23e704 100644
--- a/shell/e-local-storage.c
+++ b/shell/e-local-storage.c
@@ -169,7 +169,7 @@ load_folders (ELocalStorage *local_storage,
if (folder == NULL)
return FALSE;
- e_storage_new_folder (E_STORAGE (local_storage), parent_path, folder);
+ e_storage_new_folder (E_STORAGE (local_storage), path, folder);
subfolder_directory_path = g_concat_dir_and_file (physical_path, SUBFOLDER_DIR_NAME);
}
@@ -295,8 +295,8 @@ shell_component_result_to_storage_result (EvolutionShellComponentResult result)
struct _AsyncCreateFolderCallbackData {
EStorage *storage;
- char *parent_path;
- char *name;
+ char *path;
+ char *display_name;
char *type;
char *description;
char *physical_uri;
@@ -322,7 +322,7 @@ component_async_create_folder_callback (EvolutionShellComponentClient *shell_com
} else {
EFolder *folder;
- folder = e_local_folder_new (callback_data->name,
+ folder = e_local_folder_new (callback_data->display_name,
callback_data->type,
callback_data->description);
@@ -330,7 +330,7 @@ component_async_create_folder_callback (EvolutionShellComponentClient *shell_com
if (e_local_folder_save (E_LOCAL_FOLDER (folder))) {
e_storage_new_folder (callback_data->storage,
- callback_data->parent_path,
+ callback_data->path,
folder);
} else {
rmdir (callback_data->physical_path);
@@ -345,8 +345,8 @@ component_async_create_folder_callback (EvolutionShellComponentClient *shell_com
shell_component_result_to_storage_result (result),
callback_data->callback_data);
- g_free (callback_data->parent_path);
- g_free (callback_data->name);
+ g_free (callback_data->path);
+ g_free (callback_data->display_name);
g_free (callback_data->type);
g_free (callback_data->description);
g_free (callback_data->physical_uri);
@@ -465,8 +465,8 @@ impl_async_create_folder (EStorage *storage,
callback_data = g_new (AsyncCreateFolderCallbackData, 1);
callback_data->storage = storage;
- callback_data->parent_path = parent_path;
- callback_data->name = g_strdup (folder_name);
+ callback_data->path = path;
+ callback_data->display_name = g_strdup (folder_name);
callback_data->type = g_strdup (type);
callback_data->description = g_strdup (description);
callback_data->physical_uri = physical_uri;
diff --git a/shell/e-storage.c b/shell/e-storage.c
index eb03cb36a0..ae984f7a09 100644
--- a/shell/e-storage.c
+++ b/shell/e-storage.c
@@ -154,6 +154,24 @@ free_private (EStorage *storage)
}
+/* Private utility functions. */
+
+static char *
+get_parent_path (const char *path)
+{
+ const char *last_separator;
+
+ g_assert (g_path_is_absolute (path));
+
+ last_separator = strrchr (path, G_DIR_SEPARATOR);
+
+ if (last_separator == path)
+ return g_strdup (G_DIR_SEPARATOR_S);
+
+ return g_strndup (path, last_separator - path);
+}
+
+
/* GtkObject methods. */
static void
@@ -436,7 +454,7 @@ e_storage_result_to_string (EStorageResult result)
}
-/* Utility functions. */
+/* Public utility functions. */
struct _GetPathForPhysicalUriForeachData {
const char *physical_uri;
@@ -511,28 +529,30 @@ e_storage_get_path_for_physical_uri (EStorage *storage,
gboolean
e_storage_new_folder (EStorage *storage,
- const char *path,
+ const char *full_path,
EFolder *e_folder)
{
EStoragePrivate *priv;
Folder *folder;
Folder *parent_folder;
const char *name;
- char *full_path;
+ char *parent_path;
g_return_val_if_fail (storage != NULL, FALSE);
g_return_val_if_fail (E_IS_STORAGE (storage), FALSE);
- g_return_val_if_fail (path != NULL, FALSE);
- g_return_val_if_fail (g_path_is_absolute (path), FALSE);
+ g_return_val_if_fail (full_path != NULL, FALSE);
+ g_return_val_if_fail (g_path_is_absolute (full_path), FALSE);
g_return_val_if_fail (e_folder != NULL, FALSE);
g_return_val_if_fail (E_IS_FOLDER (e_folder), FALSE);
priv = storage->priv;
- parent_folder = g_hash_table_lookup (priv->path_to_folder, path);
+ parent_path = get_parent_path (full_path);
+
+ parent_folder = g_hash_table_lookup (priv->path_to_folder, parent_path);
if (parent_folder == NULL) {
g_warning ("%s: Trying to add a subfolder to a path that does not exist yet -- %s",
- __FUNCTION__, path);
+ __FUNCTION__, parent_path);
return FALSE;
}
@@ -540,13 +560,10 @@ e_storage_new_folder (EStorage *storage,
g_assert (name != NULL);
g_return_val_if_fail (*name != G_DIR_SEPARATOR, FALSE);
- full_path = g_concat_dir_and_file (path, name);
-
folder = g_hash_table_lookup (priv->path_to_folder, full_path);
if (folder != NULL) {
g_warning ("%s: Trying to add a subfolder for a path that already exists -- %s",
__FUNCTION__, full_path);
- g_free (full_path);
return FALSE;
}
@@ -557,7 +574,7 @@ e_storage_new_folder (EStorage *storage,
gtk_signal_emit (GTK_OBJECT (storage), signals[NEW_FOLDER], folder->path);
- g_free (full_path);
+ g_free (parent_path);
return TRUE;
}
diff --git a/shell/evolution-storage.c b/shell/evolution-storage.c
index 2503905b13..6b768770bd 100644
--- a/shell/evolution-storage.c
+++ b/shell/evolution-storage.c
@@ -287,6 +287,7 @@ evolution_storage_register_on_shell (EvolutionStorage *evolution_storage,
EvolutionStorageResult
evolution_storage_new_folder (EvolutionStorage *evolution_storage,
const char *path,
+ const char *display_name,
const char *type,
const char *physical_uri,
const char *description)
@@ -313,21 +314,17 @@ evolution_storage_new_folder (EvolutionStorage *evolution_storage,
path_basename = g_basename (path);
/* Yuck. */
- corba_folder.name = (CORBA_char *) path_basename;
- corba_folder.description = (CORBA_char *) description;
- corba_folder.type = (CORBA_char *) type;
+ corba_folder.display_name = (CORBA_char *) display_name;
+ corba_folder.description = (CORBA_char *) description;
+ corba_folder.type = (CORBA_char *) type;
corba_folder.physical_uri = (CORBA_char *) physical_uri;
- if (path_basename - path > 1) {
- parent_path = g_strndup (path, path_basename - path - 1);
- } else {
- parent_path = g_strdup (G_DIR_SEPARATOR_S);
- }
-
CORBA_exception_init (&ev);
- Evolution_StorageListener_new_folder (priv->corba_storage_listener, parent_path,
- &corba_folder, &ev);
+ Evolution_StorageListener_new_folder (priv->corba_storage_listener,
+ path,
+ &corba_folder,
+ &ev);
if (ev._major == CORBA_NO_EXCEPTION)
result = EVOLUTION_STORAGE_OK;
@@ -340,8 +337,6 @@ evolution_storage_new_folder (EvolutionStorage *evolution_storage,
CORBA_exception_free (&ev);
- g_free (parent_path);
-
return result;
}
diff --git a/shell/evolution-storage.h b/shell/evolution-storage.h
index 4e96e28df8..ff36bef3c0 100644
--- a/shell/evolution-storage.h
+++ b/shell/evolution-storage.h
@@ -85,6 +85,7 @@ EvolutionStorageResult evolution_storage_register_on_shell (EvolutionStorage
EvolutionStorageResult evolution_storage_new_folder (EvolutionStorage *evolution_storage,
const char *path,
+ const char *display_name,
const char *type,
const char *physical_uri,
const char *description);