From 7065f6dba35467cb77519e0b9144659581746289 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Thu, 7 Mar 2002 18:26:57 +0000 Subject: Make storages-with-toplevel-views less of a hack. * e-folder-tree.c (e_folder_tree_add): Allow the caller to "add" a root folder, if the existing root folder has no children. (e_folder_tree_new): Use e_folder_tree_add to create the root folder, since it can do that now. * e-storage.c: (e_storage_construct): Replace toplevel_node_uri and toplevel_node_type args with root_folder. (e_storage_new): Likewise. (*): Remove toplevel uri/type stuff everywhere. Also remove display_name since now we will use the name of the root folder for that. * evolution-storage.c: Remove toplevel uri/type stuff everywhere. * e-local-storage.c (construct): Pass root_folder to e_storage_construct instead of toplevel uri/type. Also, evolution_storage_new no longer takes toplevel uri/type. * e-corba-storage.c (e_corba_storage_construct): Out with toplevel uri/type, in with root_folder. (e_corba_storage_new): Remove toplevel uri/type. * e-shell.c (setup_local_storage): Create a top-level folder of type "summary" for the Summary storage. * e-storage-set-view.c (set_e_shortcut_selection): Remove special-case for storages. (etree_icon_at): Remove special case for figuring out storage icons (but leave the code that makes the icon disappear once the storage is opened). (etree_value_at): Remove special case for storage names. (But still make storages always bold.) Remove unused special-case code for Summary. * e-shortcuts.c (load_shortcuts): Remove special case for storages, reorganize a bit. * e-shortcuts-view.c (get_shortcut_info): Remove special case for storages. * e-shell-view.c (update_for_current_uri): Remove special case for storages. (socket_destroy_cb): Likewise. (get_type_for_storage): No longer needed. (get_view_for_uri): No longer needs to special-case storages (but add a special case for folders of type "noselect", to make them unselectable like storages-without-toplevel-views used to be). * e-storage-set.c (get_storage_for_path): If passed "/foo", return "/" as subpath_return so e_storage_set_get_folder will DTRT in the NWO. * Evolution-Storage.idl (addStorage): Remove the toplevel_node_uri and toplevel_node_type arguments. * e-corba-storage-registry.c (impl_StorageRegistry_addStorage): Likewise. svn path=/trunk/; revision=15965 --- shell/e-shell-view.c | 61 +++++++--------------------------------------------- 1 file changed, 8 insertions(+), 53 deletions(-) (limited to 'shell/e-shell-view.c') diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c index 29d815db97..f822dfc228 100644 --- a/shell/e-shell-view.c +++ b/shell/e-shell-view.c @@ -1802,30 +1802,19 @@ update_for_current_uri (EShellView *shell_view) path = get_storage_set_path_from_uri (priv->uri); + folder = NULL; folder_name = NULL; type = NULL; unread_count = 0; - if (path == NULL) { - folder = NULL; - } else { + if (path != NULL) { folder = e_storage_set_get_folder (e_shell_get_storage_set (priv->shell), path); if (folder != NULL) { folder_name = e_folder_get_name (folder); type = e_folder_get_type_string (folder); unread_count = e_folder_get_unread_count (folder); - } else if (path != NULL) { - EStorage *storage; - - storage = e_storage_set_get_storage (e_shell_get_storage_set (priv->shell), path + 1); - unread_count = 0; - - if (storage != NULL) { - folder_name = e_storage_get_display_name (storage); - type = e_storage_get_toplevel_node_type (storage); - } - } + } } if (unread_count > 0) @@ -2020,17 +2009,10 @@ socket_destroy_cb (GtkWidget *socket_widget, gpointer data) path = get_storage_set_path_from_uri (uri); folder = e_storage_set_get_folder (e_shell_get_storage_set (priv->shell), path); - if (folder != NULL) { + if (folder != NULL) folder_type = e_folder_get_type_string (folder); - } else { - EStorage *storage; - - storage = e_storage_set_get_storage (e_shell_get_storage_set (priv->shell), path + 1); - if (storage == NULL) - folder_type = NULL; - else - folder_type = e_storage_get_toplevel_node_type (storage); - } + else + folder_type = NULL; /* See if we were actively viewing the uri for the socket that's being closed */ current_uri = e_shell_view_get_current_uri (shell_view); @@ -2054,27 +2036,6 @@ socket_destroy_cb (GtkWidget *socket_widget, gpointer data) } -static const char * -get_type_for_storage (EShellView *shell_view, - const char *name, - const char **physical_uri_return) -{ - EShellViewPrivate *priv; - EStorageSet *storage_set; - EStorage *storage; - - priv = shell_view->priv; - - storage_set = e_shell_get_storage_set (priv->shell); - storage = e_storage_set_get_storage (storage_set, name); - if (!storage) - return NULL; - - *physical_uri_return = e_storage_get_toplevel_node_uri (storage); - - return e_storage_get_toplevel_node_type (storage); -} - static const char * get_type_for_folder (EShellView *shell_view, const char *path, @@ -2112,7 +2073,6 @@ get_view_for_uri (EShellView *shell_view, GtkWidget *socket; Bonobo_Control corba_control; const char *path; - const char *slash; const char *physical_uri; const char *folder_type; int destroy_connection_id; @@ -2127,13 +2087,8 @@ get_view_for_uri (EShellView *shell_view, if (*path == '\0') return NULL; - /* FIXME: This code needs to be made more robust. */ - slash = strchr (path + 1, G_DIR_SEPARATOR); - if (slash == NULL || slash[1] == '\0') - folder_type = get_type_for_storage (shell_view, path + 1, &physical_uri); - else - folder_type = get_type_for_folder (shell_view, path, &physical_uri); - if (folder_type == NULL) + folder_type = get_type_for_folder (shell_view, path, &physical_uri); + if (folder_type == NULL || strcmp (folder_type, "noselect") == 0) return NULL; folder_type_registry = e_shell_get_folder_type_registry (e_shell_view_get_shell (shell_view)); -- cgit v1.2.3