diff options
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ChangeLog | 28 | ||||
-rw-r--r-- | shell/e-setup.c | 75 | ||||
-rw-r--r-- | shell/e-shell-importer.c | 1 | ||||
-rw-r--r-- | shell/e-shell-view.c | 92 | ||||
-rw-r--r-- | shell/e-storage-set-view.c | 52 | ||||
-rw-r--r-- | shell/evolution-storage.c | 1 |
6 files changed, 201 insertions, 48 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog index 327d172ee6..eea4620c6e 100644 --- a/shell/ChangeLog +++ b/shell/ChangeLog @@ -1,3 +1,31 @@ +2001-06-08 Iain Holmes <iain@ximian.com> + + * e-setup.c (check_dir_recur): Don't copy the old Executive-Summary dir. + (e_setup): If there is an Executive-Summary dir in ~/evolution/local + ask it the user wants to remove it. + (e_shell_rm_dir): Function to completely delete a directory. + +2001-06-07 Iain Holmes <iain@ximian.com> + + * evolution-storage.c (impl_Storage_async_create_folder): Removed + debug spew. + + * e-shell-importer.c (start_import): Removed spew. + + * e-shell-view.c (update_window_icon): Take a gboolean to say if + the folder is my evolution. Do special cased things for My Evolution. + (update_folder_title_bar): Same. + (update_for_current_uri): Find out if the uri is the my evolution one + and act accordingly. + (get_control_for_uri): Handle the toplevel My Evolution. + + * e-storage-set-view.c (etree_icon_at): Get an icon for the toplevel + My Evolution. + (etree_value_at): Default is to return "My Evolution" + (e_storage_set_view_construct): Set the toplevel to be called "My + Evolution" and show it. + (e_storage_set_view_set_show_folders): Same. + 2001-06-08 Ettore Perazzoli <ettore@ximian.com> * e-shell-folder-commands.c (e_shell_command_add_to_shortcut_bar): diff --git a/shell/e-setup.c b/shell/e-setup.c index 1d6e75b71e..a1698be510 100644 --- a/shell/e-setup.c +++ b/shell/e-setup.c @@ -69,6 +69,12 @@ check_dir_recur (const char *evolution_directory, continue; } + /* Hack to not copy the old Executive-Summary dir */ + if (strcmp (current->d_name, "Executive-Summary") == 0) { + current = readdir (def); + continue; + } + fullname = g_concat_dir_and_file (evolution_directory, current->d_name); fulldefaultname = g_concat_dir_and_file (current_directory, @@ -240,6 +246,48 @@ copy_default_stuff (const char *evolution_directory) return retval; } +static void +e_shell_rm_dir (const char *path) +{ + DIR *base; + struct stat statbuf; + struct dirent *contents; + + stat (path, &statbuf); + if (!S_ISDIR (statbuf.st_mode)) { + /* Not a directory */ + g_message ("Removing: %s", path); + unlink (path); + return; + } else { + g_message ("Opening: %s", path); + base = opendir (path); + + if (base == NULL) + return; + + contents = readdir (base); + while (contents != NULL) { + char *fullpath; + + if (strcmp (contents->d_name, ".") == 0|| + strcmp (contents->d_name, "..") ==0) { + contents = readdir (base); + continue; + } + + fullpath = g_concat_dir_and_file (path, contents->d_name); + e_shell_rm_dir (fullpath); + g_free (fullpath); + + contents = readdir (base); + } + + closedir (base); + rmdir (path); + } +} + gboolean e_setup (const char *evolution_directory) @@ -261,6 +309,33 @@ e_setup (const char *evolution_directory) /* Make sure this is really our directory, not an Evolution * build tree or something like that. */ + file = g_strdup_printf ("%s/local/Executive-Summary", evolution_directory); + if (stat (file, &statinfo) == 0) { + if (S_ISDIR (statinfo.st_mode)) { + GtkWidget *dialog; + + dialog = gnome_message_box_new (_("Evolution has detected an old\n" + "Executive-Summary directory.\n" + "This needs to be removed before\n" + "Evolution will run.\n" + "Do you want me to remove this directory?"), + GNOME_MESSAGE_BOX_INFO, + GNOME_STOCK_BUTTON_YES, + GNOME_STOCK_BUTTON_NO, + NULL); + switch (gnome_dialog_run_and_close (GNOME_DIALOG (dialog))) { + case 0: + e_shell_rm_dir (file); + break; + + default: + return FALSE; + } + } + } + + g_free (file); + file = g_strdup_printf ("%s/shortcuts.xml", evolution_directory); if (stat (file, &statinfo) != 0) { e_notice (NULL, GNOME_MESSAGE_BOX_ERROR, diff --git a/shell/e-shell-importer.c b/shell/e-shell-importer.c index b1cea8a153..2a16fc522c 100644 --- a/shell/e-shell-importer.c +++ b/shell/e-shell-importer.c @@ -394,7 +394,6 @@ start_import (const char *folderpath, g_free (real_iid); /* NULL for folderpath means use Inbox */ - g_message ("Folderpath: %s", folderpath); if (*folderpath == '/') { folderpath = strchr (folderpath + 1, '/'); } diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c index 2a146009bc..71584f6f3a 100644 --- a/shell/e-shell-view.c +++ b/shell/e-shell-view.c @@ -1276,7 +1276,8 @@ get_storage_set_path_from_uri (const char *uri) static void update_window_icon (EShellView *shell_view, - EFolder *folder) + EFolder *folder, + gboolean is_my_evolution) { EShellViewPrivate *priv; const char *type; @@ -1285,10 +1286,15 @@ update_window_icon (EShellView *shell_view, priv = shell_view->priv; - if (folder == NULL) - type = NULL; - else + if (folder == NULL) { + if (is_my_evolution) { + type = "My Evolution"; + } else { + type = NULL; + } + } else { type = e_folder_get_type_string (folder); + } if (type == NULL) { icon_path = NULL; @@ -1313,7 +1319,8 @@ update_window_icon (EShellView *shell_view, static void update_folder_title_bar (EShellView *shell_view, - EFolder *folder) + EFolder *folder, + gboolean is_my_evolution) { EShellViewPrivate *priv; EFolderTypeRegistry *folder_type_registry; @@ -1323,10 +1330,15 @@ update_folder_title_bar (EShellView *shell_view, priv = shell_view->priv; - if (folder == NULL) - folder_type_name = NULL; - else + if (folder == NULL) { + if (is_my_evolution) { + folder_type_name = "My Evolution"; + } else { + folder_type_name = NULL; + } + } else { folder_type_name = e_folder_get_type_string (folder); + } if (folder_type_name == NULL) { folder_name = NULL; @@ -1336,7 +1348,11 @@ update_folder_title_bar (EShellView *shell_view, folder_icon = e_folder_type_registry_get_icon_for_type (folder_type_registry, folder_type_name, TRUE); - folder_name = e_folder_get_name (folder); + if (is_my_evolution) { + folder_name = "My Evolution"; + } else { + folder_name = e_folder_get_name (folder); + } } if (folder_icon) @@ -1357,21 +1373,29 @@ update_for_current_uri (EShellView *shell_view) char *folder_name; const char *path; char *window_title; + gboolean is_my_evolution = FALSE; priv = shell_view->priv; path = get_storage_set_path_from_uri (priv->uri); - if (path == NULL) + if (strcmp (priv->uri, "evolution:/My Evolution") == 0) { + /* Special case for My Evolution */ + folder_name = g_strdup (_("My Evolution")); + is_my_evolution = TRUE; folder = NULL; - else - folder = e_storage_set_get_folder (e_shell_get_storage_set (priv->shell), - path); - - if (folder == NULL) - folder_name = g_strdup (_("None")); - else - folder_name = e_utf8_to_gtk_string ((GtkWidget *) shell_view, e_folder_get_name (folder)); + } else { + if (path == NULL) + folder = NULL; + else + folder = e_storage_set_get_folder (e_shell_get_storage_set (priv->shell), + path); + + if (folder == NULL) + folder_name = g_strdup (_("None")); + else + folder_name = e_utf8_to_gtk_string ((GtkWidget *) shell_view, e_folder_get_name (folder)); + } if (SUB_VERSION[0] == '\0') window_title = g_strdup_printf (_("%s - Evolution %s"), folder_name, VERSION); @@ -1381,10 +1405,10 @@ update_for_current_uri (EShellView *shell_view) gtk_window_set_title (GTK_WINDOW (shell_view), window_title); g_free (window_title); g_free (folder_name); - - update_folder_title_bar (shell_view, folder); - - update_window_icon (shell_view, folder); + + update_folder_title_bar (shell_view, folder, is_my_evolution); + + update_window_icon (shell_view, folder, is_my_evolution); gtk_signal_handler_block_by_func (GTK_OBJECT (priv->storage_set_view), GTK_SIGNAL_FUNC (folder_selected_cb), @@ -1668,15 +1692,21 @@ get_control_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) - return NULL; + /* Hack for My Evolution */ + if (strcmp (path, "/My Evolution") == 0) { + folder_type = "My Evolution"; + physical_uri = ""; + } else { + /* 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) + return NULL; + } folder_type_registry = e_shell_get_folder_type_registry (e_shell_view_get_shell (shell_view)); diff --git a/shell/e-storage-set-view.c b/shell/e-storage-set-view.c index 3129cdd976..63aa9cfbf1 100644 --- a/shell/e-storage-set-view.c +++ b/shell/e-storage-set-view.c @@ -1332,26 +1332,48 @@ etree_icon_at (ETreeModel *etree, ETreePath tree_path, void *model_data) { + EFolderTypeRegistry *folder_type_registry; EStorageSetView *storage_set_view; EStorageSet *storage_set; + GdkPixbuf *icon_pixbuf; EFolder *folder; char *path; + int depth; /* folders are from depth 2 on. depth 1 are storages and 0 is - our (invisible) root node. */ - if (e_tree_model_node_depth (etree, tree_path) < 2) - return NULL; - - storage_set_view = E_STORAGE_SET_VIEW (model_data); - storage_set = storage_set_view->priv->storage_set; + our My Evolution root node. */ + depth = e_tree_model_node_depth (etree, tree_path); + + switch (depth) { + case 0: /* My Evolution */ + storage_set_view = E_STORAGE_SET_VIEW (model_data); + storage_set = storage_set_view->priv->storage_set; + + folder_type_registry = e_storage_set_get_folder_type_registry (storage_set); + + icon_pixbuf = e_folder_type_registry_get_icon_for_type (folder_type_registry, + "My Evolution", TRUE); - path = (char*)e_tree_memory_node_get_data (E_TREE_MEMORY(etree), tree_path); + return icon_pixbuf; - folder = e_storage_set_get_folder (storage_set, path); - if (folder == NULL) + case 1: return NULL; - - return get_pixbuf_for_folder (storage_set_view, folder); + + case 2: + storage_set_view = E_STORAGE_SET_VIEW (model_data); + storage_set = storage_set_view->priv->storage_set; + + path = (char*)e_tree_memory_node_get_data (E_TREE_MEMORY(etree), tree_path); + + folder = e_storage_set_get_folder (storage_set, path); + if (folder == NULL) + return NULL; + + return get_pixbuf_for_folder (storage_set_view, folder); + + default: + return NULL; + } } /* This function returns the number of columns in our ETreeModel. */ @@ -1414,7 +1436,7 @@ etree_value_at (ETreeModel *etree, ETreePath tree_path, int col, void *model_dat if (storage != NULL && col == 0) return (void *) e_storage_get_name (storage); - return NULL; + return g_strdup ("My Evolution"); } static void @@ -1873,7 +1895,7 @@ e_storage_set_view_construct (EStorageSetView *storage_set_view, e_tree_memory_set_node_destroy_func (E_TREE_MEMORY (priv->etree_model), (GFunc) g_free, NULL); e_tree_memory_set_expanded_default (E_TREE_MEMORY (priv->etree_model), TRUE); - priv->root_node = e_tree_memory_node_insert (E_TREE_MEMORY(priv->etree_model), NULL, -1, g_strdup ("/Root Node")); + priv->root_node = e_tree_memory_node_insert (E_TREE_MEMORY(priv->etree_model), NULL, -1, g_strdup ("/My Evolution")); extras = e_table_extras_new (); cell = e_cell_text_new (NULL, GTK_JUSTIFY_LEFT); @@ -1884,7 +1906,7 @@ e_storage_set_view_construct (EStorageSetView *storage_set_view, e_tree_construct_from_spec_file (E_TREE (storage_set_view), priv->etree_model, extras, EVOLUTION_ETSPECDIR "/e-storage-set-view.etspec", NULL); - e_tree_root_node_set_visible (E_TREE(storage_set_view), FALSE); + e_tree_root_node_set_visible (E_TREE(storage_set_view), TRUE); gtk_object_unref (GTK_OBJECT (extras)); @@ -1995,7 +2017,7 @@ e_storage_set_view_set_show_folders (EStorageSetView *storage_set_view, e_tree_memory_node_remove (E_TREE_MEMORY(priv->etree_model), priv->root_node); /* now re-add the root node */ - priv->root_node = e_tree_memory_node_insert (E_TREE_MEMORY(priv->etree_model), NULL, -1, g_strdup ("/Root Node")); + priv->root_node = e_tree_memory_node_insert (E_TREE_MEMORY(priv->etree_model), NULL, -1, g_strdup ("/My Evolution")); /* then reinsert the storages after setting the "show_folders" flag. insert_storages will call insert_folders if diff --git a/shell/evolution-storage.c b/shell/evolution-storage.c index bbe1a3be51..0686d7c0bf 100644 --- a/shell/evolution-storage.c +++ b/shell/evolution-storage.c @@ -300,7 +300,6 @@ impl_Storage_async_create_folder (PortableServer_Servant servant, bonobo_object = bonobo_object_from_servant (servant); storage = EVOLUTION_STORAGE (bonobo_object); - g_message ("Path: %s", path); gtk_signal_emit (GTK_OBJECT (storage), signals[CREATE_FOLDER], listener, path, type, description, parent_physical_uri); } |