[evolution-patches] Remove old shortcut bar code



There is still some old shortcut bar code lurking around in CVS which is
neither compiled nor distributed.
This patch should remove it.

regs,
 Chris
Index: po/POTFILES.in
===================================================================
RCS file: /cvs/gnome/evolution/po/POTFILES.in,v
retrieving revision 1.213
diff -u -r1.213 POTFILES.in
--- po/POTFILES.in	5 Feb 2004 15:51:12 -0000	1.213
+++ po/POTFILES.in	7 Feb 2004 14:52:25 -0000
@@ -337,8 +337,6 @@
 shell/e-shell-window-commands.c
 shell/e-shell-window.c
 shell/e-shell.c
-shell/e-shortcuts-view.c
-shell/e-shortcuts.c
 shell/e-storage-set-view.etspec
 shell/e-user-creatable-items-handler.c
 shell/evolution-folder-selector-button.c
Index: shell/e-shell-folder-commands.c
===================================================================
RCS file: /cvs/gnome/evolution/shell/e-shell-folder-commands.c,v
retrieving revision 1.59
diff -u -r1.59 e-shell-folder-commands.c
--- shell/e-shell-folder-commands.c	9 Jul 2003 19:54:25 -0000	1.59
+++ shell/e-shell-folder-commands.c	7 Feb 2004 14:52:25 -0000
@@ -608,46 +608,3 @@
 	e_storage_set_async_remove_shared_folder (storage_set, folder_path,
 						  remove_shared_cb, shell_view);
 }
-
-
-void
-e_shell_command_add_to_shortcut_bar (EShell *shell,
-				     EShellView *shell_view,
-				     const char *folder_path)
-{
-	EShortcuts *shortcuts;
-	EStorageSet *storage_set;
-	EFolder *folder;
-	char *uri;
-	const char *path;
-	int group_num;
-	int unread_count;
-
-	g_return_if_fail (shell != NULL);
-	g_return_if_fail (E_IS_SHELL (shell));
-	g_return_if_fail (shell_view != NULL);
-	g_return_if_fail (E_IS_SHELL_VIEW (shell_view));
-	g_return_if_fail (folder_path == NULL || g_path_is_absolute (folder_path));
-
-	shortcuts = e_shell_get_shortcuts (shell);
-	group_num = e_shell_view_get_current_shortcuts_group_num (shell_view);
-
-	if (folder_path == NULL) {
-		uri = g_strdup (e_shell_view_get_current_uri (shell_view));
-		path = e_shell_view_get_current_path (shell_view);
-	} else {
-		uri = g_strconcat (E_SHELL_URI_PREFIX, folder_path, NULL);
-		path = folder_path;
-	}
-
-	unread_count = get_folder_unread (shell, path);
-	storage_set = e_shell_get_storage_set (shell);
-	folder = e_storage_set_get_folder (storage_set, path);
-
-	e_shortcuts_add_shortcut (shortcuts, group_num, -1, uri, NULL,
-				  unread_count,
-				  e_folder_get_type_string (folder),
-				  e_folder_get_custom_icon_name (folder));
-
-	g_free (uri);
-}
Index: shell/e-shell-folder-commands.h
===================================================================
RCS file: /cvs/gnome/evolution/shell/e-shell-folder-commands.h,v
retrieving revision 1.7
diff -u -r1.7 e-shell-folder-commands.h
--- shell/e-shell-folder-commands.h	30 Sep 2002 18:41:05 -0000	1.7
+++ shell/e-shell-folder-commands.h	7 Feb 2004 14:52:25 -0000
@@ -37,6 +37,4 @@
 
 void  e_shell_command_remove_shared_folder (EShell *shell, EShellView *shell_view, const char *folder_path);
 
-void  e_shell_command_add_to_shortcut_bar (EShell *shell, EShellView *shell_view, const char *folder_path);
-
 #endif
Index: shell/e-shortcuts-view-model.c
===================================================================
RCS file: shell/e-shortcuts-view-model.c
diff -N shell/e-shortcuts-view-model.c
--- shell/e-shortcuts-view-model.c	2 Dec 2002 03:23:57 -0000	1.30
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,341 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-shortcuts-view-model.c
- *
- * Copyright (C) 2000  Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli
- */
-
-/* FIXME.  This really sucks.  We are using the model/view approach in the
-   dumbest possible way.  */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "e-shortcuts-view-model.h"
-
-#include "e-icon-factory.h"
-
-#include <glib.h>
-#include <gtk/gtksignal.h>
-#include <libgnome/gnome-i18n.h>
-
-#include <gal/util/e-util.h>
-
-
-#define PARENT_TYPE e_shortcut_model_get_type ()
-static EShortcutModelClass *parent_class = NULL;
-
-struct _EShortcutsViewModelPrivate {
-	EShortcuts *shortcuts;
-};
-
-
-/* Utility functions.  */
-
-static GdkPixbuf *
-get_icon_for_item (EShortcutsViewModel *shortcuts_view_model,
-		   const EShortcutItem *item,
-		   gboolean want_mini)
-{
-	EShortcutsViewModelPrivate *priv;
-
-	priv = shortcuts_view_model->priv;
-
-	if (item->custom_icon_name != NULL)
-		return e_icon_factory_get_icon (item->custom_icon_name, want_mini);
-
-	if (item->type != NULL) {
-		EStorageSet *storage_set;
-		EFolderTypeRegistry *folder_type_registry;
-
-		storage_set = e_shell_get_storage_set (e_shortcuts_get_shell (priv->shortcuts));
-		folder_type_registry = e_storage_set_get_folder_type_registry (storage_set);
-
-		return e_folder_type_registry_get_icon_for_type (folder_type_registry,
-								 item->type,
-								 want_mini);
-	}
-
-	return NULL;
-}
-
-
-/* View initialization.  */
-
-static char *
-get_name_with_unread (const EShortcutItem *item)
-{
-	if (item->unread_count > 0)
-		return g_strdup_printf ("%s (%d)", item->name, item->unread_count);
-	else
-		return g_strdup (item->name);
-}
-
-static void
-load_group_into_model (EShortcutsViewModel *shortcuts_view_model,
-		       int group_num)
-{
-	EShortcutsViewModelPrivate *priv;
-	const GSList *shortcut_list;
-	const GSList *p;
-
-	priv = shortcuts_view_model->priv;
-
-	shortcut_list = e_shortcuts_get_shortcuts_in_group (priv->shortcuts, group_num);
-	if (shortcut_list == NULL)
-		return;
-
-	for (p = shortcut_list; p != NULL; p = p->next) {
-		const EShortcutItem *item;
-		char *name_with_unread;
-
-		item = (const EShortcutItem *) p->data;
-		name_with_unread = get_name_with_unread (item);
-
-		e_shortcut_model_add_item (E_SHORTCUT_MODEL (shortcuts_view_model),
-					   group_num, -1,
-					   item->uri,
-					   name_with_unread,
-					   get_icon_for_item (shortcuts_view_model, item, FALSE));
-
-		g_free (name_with_unread);
-	}
-}
-
-static void
-load_all_shortcuts_into_model (EShortcutsViewModel *shortcuts_view_model)
-{
-	EShortcutsViewModelPrivate *priv;
-	const GSList *group_titles;
-	const GSList *p;
-	int group_num;
-
-	priv = shortcuts_view_model->priv;
-
-	group_titles = e_shortcuts_get_group_titles (priv->shortcuts);
-
-	for (p = group_titles; p != NULL; p = p->next) {
-		const char *group_title;
-
-		group_title = (const char *) p->data;
-		group_num = e_shortcut_model_add_group (E_SHORTCUT_MODEL (shortcuts_view_model), -1, group_title);
-
-		load_group_into_model (shortcuts_view_model, group_num);
-	}
-}
-
-
-/* EShortcuts callbacks.  */
-
-static void
-shortcuts_new_group_cb (EShortcuts *shortcuts,
-			int group_num,
-			void *data)
-{
-	EShortcutsViewModel *shortcuts_view_model;
-	EShortcutsViewModelPrivate *priv;
-	const char *title;
-
-	shortcuts_view_model = E_SHORTCUTS_VIEW_MODEL (data);
-	priv = shortcuts_view_model->priv;
-
-	title = e_shortcuts_get_group_title (priv->shortcuts, group_num);
-	e_shortcut_model_add_group (E_SHORTCUT_MODEL (shortcuts_view_model), group_num, title);
-}
-
-static void
-shortcuts_remove_group_cb (EShortcuts *shortcuts,
-			   int group_num,
-			   void *data)
-{
-	EShortcutsViewModel *shortcuts_view_model;
-
-	shortcuts_view_model = E_SHORTCUTS_VIEW_MODEL (data);
-	e_shortcut_model_remove_group (E_SHORTCUT_MODEL (shortcuts_view_model), group_num);
-}
-
-static void
-shortcuts_rename_group_cb (EShortcuts *shortcuts,
-			   int group_num,
-			   const char *new_title,
-			   void *data)
-{
-	EShortcutsViewModel *shortcuts_view_model;
-
-	shortcuts_view_model = E_SHORTCUTS_VIEW_MODEL (data);
-
-	/* FIXME: Ideally there should be an
-           e_shortcut_model_rename_group(), removing then re-add
-           actually causes a flip to the next group, which we work
-           around in e-shortcuts-view.c */
-	e_shortcut_model_remove_group (E_SHORTCUT_MODEL (shortcuts_view_model), group_num);
-	e_shortcut_model_add_group (E_SHORTCUT_MODEL (shortcuts_view_model), group_num, new_title);
-	load_group_into_model (shortcuts_view_model, group_num);
-}
-
-static void
-shortcuts_new_shortcut_cb (EShortcuts *shortcuts,
-			   int group_num,
-			   int item_num,
-			   void *data)
-{
-	EShortcutsViewModel *shortcuts_view_model;
-	EShortcutsViewModelPrivate *priv;
-	const EShortcutItem *shortcut_item;
-	char *name_with_unread;
-
-	shortcuts_view_model = E_SHORTCUTS_VIEW_MODEL (data);
-	priv = shortcuts_view_model->priv;
-
-	shortcut_item = e_shortcuts_get_shortcut (priv->shortcuts, group_num, item_num);
-	g_assert (shortcut_item != NULL);
-
-	name_with_unread = get_name_with_unread (shortcut_item);
-	e_shortcut_model_add_item (E_SHORTCUT_MODEL (shortcuts_view_model),
-				   group_num, item_num,
-				   shortcut_item->uri,
-				   name_with_unread,
-				   get_icon_for_item (shortcuts_view_model, shortcut_item, FALSE));
-
-	g_free (name_with_unread);
-}
-
-static void
-shortcuts_remove_shortcut_cb (EShortcuts *shortcuts,
-			      int group_num,
-			      int item_num,
-			      void *data)
-{
-	EShortcutsViewModel *shortcuts_view_model;
-
-	shortcuts_view_model = E_SHORTCUTS_VIEW_MODEL (data);
-	e_shortcut_model_remove_item (E_SHORTCUT_MODEL (shortcuts_view_model), group_num, item_num);
-}
-
-static void
-shortcuts_update_shortcut_cb (EShortcuts *shortcuts,
-			      int group_num,
-			      int item_num,
-			      void *data)
-{
-	EShortcutsViewModel *shortcuts_view_model;
-	EShortcutsViewModelPrivate *priv;
-	const EShortcutItem *shortcut_item;
-	char *name_with_unread;
-
-	shortcuts_view_model = E_SHORTCUTS_VIEW_MODEL (data);
-	priv = shortcuts_view_model->priv;
-
-	shortcut_item = e_shortcuts_get_shortcut (priv->shortcuts, group_num, item_num);
-	g_assert (shortcut_item != NULL);
-
-	name_with_unread = get_name_with_unread (shortcut_item);
-	e_shortcut_model_update_item (E_SHORTCUT_MODEL (shortcuts_view_model),
-				      group_num, item_num,
-				      shortcut_item->uri,
-				      name_with_unread,
-				      get_icon_for_item (shortcuts_view_model, shortcut_item, FALSE));
-
-	g_free (name_with_unread);
-}
-
-
-/* GObject methods.  */
-
-static void
-impl_finalize (GObject *object)
-{
-	EShortcutsViewModel *view_model;
-	EShortcutsViewModelPrivate *priv;
-
-	view_model = E_SHORTCUTS_VIEW_MODEL (object);
-	priv = view_model->priv;
-
-	g_free (priv);
-
-	(* G_OBJECT_CLASS (parent_class)->finalize) (object);
-}
-
-
-static void
-class_init (EShortcutsViewModelClass *klass)
-{
-	GObjectClass *object_class;
-
-	object_class = G_OBJECT_CLASS (klass);
-	object_class->finalize = impl_finalize;
-
-	parent_class = g_type_class_ref(e_shortcut_model_get_type ());
-}
-
-static void
-init (EShortcutsViewModel *shortcuts_view_model)
-{
-	EShortcutsViewModelPrivate *priv;
-
-	priv = g_new (EShortcutsViewModelPrivate, 1);
-	priv->shortcuts      = NULL;
-
-	shortcuts_view_model->priv = priv;
-}
-
-
-void
-e_shortcuts_view_model_construct (EShortcutsViewModel *model,
-				  EShortcuts *shortcuts)
-{
-	EShortcutsViewModelPrivate *priv;
-
-	g_return_if_fail (model != NULL);
-	g_return_if_fail (E_IS_SHORTCUTS_VIEW_MODEL (model));
-	g_return_if_fail (shortcuts != NULL);
-	g_return_if_fail (E_IS_SHORTCUTS (shortcuts));
-
-	priv = model->priv;
-	g_return_if_fail (priv->shortcuts == NULL);
-
-	priv->shortcuts = shortcuts;
-
-	load_all_shortcuts_into_model (model);
-
-	g_signal_connect_object (priv->shortcuts, "new_group", G_CALLBACK (shortcuts_new_group_cb), model, 0);
-	g_signal_connect_object (priv->shortcuts, "remove_group", G_CALLBACK (shortcuts_remove_group_cb), model, 0);
-	g_signal_connect_object (priv->shortcuts, "rename_group", G_CALLBACK (shortcuts_rename_group_cb), model, 0);
-	g_signal_connect_object (priv->shortcuts, "new_shortcut", G_CALLBACK (shortcuts_new_shortcut_cb), model, 0);
-	g_signal_connect_object (priv->shortcuts, "remove_shortcut", G_CALLBACK (shortcuts_remove_shortcut_cb), model, 0);
-	g_signal_connect_object (priv->shortcuts, "update_shortcut", G_CALLBACK (shortcuts_update_shortcut_cb), model, 0);
-}
-
-EShortcutsViewModel *
-e_shortcuts_view_model_new (EShortcuts *shortcuts)
-{
-	EShortcutsViewModel *new;
-
-	g_return_val_if_fail (shortcuts != NULL, NULL);
-	g_return_val_if_fail (E_IS_SHORTCUTS (shortcuts), NULL);
-
-	new = g_object_new (e_shortcuts_view_model_get_type (), NULL);
-
-	e_shortcuts_view_model_construct (new, shortcuts);
-
-	return new;
-}
-
-
-E_MAKE_TYPE (e_shortcuts_view_model, "EShortcutsViewModel", EShortcutsViewModel, class_init, init, PARENT_TYPE)
Index: shell/e-shortcuts-view-model.h
===================================================================
RCS file: shell/e-shortcuts-view-model.h
diff -N shell/e-shortcuts-view-model.h
--- shell/e-shortcuts-view-model.h	27 Oct 2001 01:09:28 -0000	1.6
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,66 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-shortcuts-view-model.h
- *
- * Copyright (C) 2000  Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli
- */
-
-#ifndef _E_SHORTCUTS_VIEW_MODEL_H_
-#define _E_SHORTCUTS_VIEW_MODEL_H_
-
-#include <gal/shortcut-bar/e-shortcut-model.h>
-
-#include "e-shortcuts.h"
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-#define E_TYPE_SHORTCUTS_VIEW_MODEL			(e_shortcuts_view_model_get_type ())
-#define E_SHORTCUTS_VIEW_MODEL(obj)			(GTK_CHECK_CAST ((obj), E_TYPE_SHORTCUTS_VIEW_MODEL, EShortcutsViewModel))
-#define E_SHORTCUTS_VIEW_MODEL_CLASS(klass)		(GTK_CHECK_CLASS_CAST ((klass), E_TYPE_SHORTCUTS_VIEW_MODEL, EShortcutsViewModelClass))
-#define E_IS_SHORTCUTS_VIEW_MODEL(obj)			(GTK_CHECK_TYPE ((obj), E_TYPE_SHORTCUTS_VIEW_MODEL))
-#define E_IS_SHORTCUTS_VIEW_MODEL_CLASS(klass)		(GTK_CHECK_CLASS_TYPE ((obj), E_TYPE_SHORTCUTS_VIEW_MODEL))
-
-
-typedef struct _EShortcutsViewModel        EShortcutsViewModel;
-typedef struct _EShortcutsViewModelPrivate EShortcutsViewModelPrivate;
-typedef struct _EShortcutsViewModelClass   EShortcutsViewModelClass;
-
-struct _EShortcutsViewModel {
-	EShortcutModel parent;
-
-	EShortcutsViewModelPrivate *priv;
-};
-
-struct _EShortcutsViewModelClass {
-	EShortcutModelClass parent_class;
-};
-
-
-GtkType              e_shortcuts_view_model_get_type   (void);
-void                 e_shortcuts_view_model_construct  (EShortcutsViewModel *model,
-							EShortcuts          *shortcuts);
-EShortcutsViewModel *e_shortcuts_view_model_new        (EShortcuts          *shortcuts);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_SHORTCUTS_VIEW_MODEL_H_ */
Index: shell/e-shortcuts-view.c
===================================================================
RCS file: shell/e-shortcuts-view.c
diff -N shell/e-shortcuts-view.c
--- shell/e-shortcuts-view.c	22 Apr 2003 19:49:22 -0000	1.65
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,800 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-shortcuts-view.c
- *
- * Copyright (C) 2000, 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "e-shortcuts-view.h"
-
-#include "e-folder-dnd-bridge.h"
-#include "e-shell-constants.h"
-#include "e-shell-marshal.h"
-#include "e-shortcuts-view-model.h"
-
-#include "e-util/e-request.h"
-
-#include <glib.h>
-#include <gtk/gtkcheckmenuitem.h>
-#include <gtk/gtkentry.h>
-#include <gtk/gtklabel.h>
-
-#include <libgnome/gnome-i18n.h>
-
-#include <libgnomeui/gnome-app.h>
-#include <libgnomeui/gnome-app-helper.h>
-#include <libgnomeui/gnome-popup-menu.h>
-#include <libgnomeui/gnome-uidefs.h>
-
-#include <gtk/gtkmessagedialog.h>
-#include <gtk/gtkstock.h>
-
-#include <gal/util/e-util.h>
-
-#include <string.h>
-
-
-#define PARENT_TYPE E_TYPE_SHORTCUT_BAR
-static EShortcutBarClass *parent_class = NULL;
-
-struct _EShortcutsViewPrivate {
-	EShortcuts *shortcuts;
-};
-
-enum {
-	ACTIVATE_SHORTCUT,
-	HIDE_REQUESTED,
-	LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL] = { 0 };
-
-
-/* Utility functions.  */
-
-static void
-show_new_group_dialog (EShortcutsView *view)
-{
-	char *group_name;
-
-	group_name = e_request_string (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (view))),
-				       _("Create New Shortcut Group"),
-				       _("Group name:"),
-				       NULL);
-
-	if (group_name == NULL)
-		return;
-
-	e_shortcuts_add_group (view->priv->shortcuts, -1, group_name);
-
-	g_free (group_name);
-}
-
-
-/* Shortcut bar right-click menu.  */
-
-struct _RightClickMenuData {
-	EShortcutsView *shortcuts_view;
-	int group_num;
-};
-typedef struct _RightClickMenuData RightClickMenuData;
-
-static void
-toggle_large_icons_cb (GtkWidget *widget,
-		       void *data)
-{
-	RightClickMenuData *menu_data;
-
-	menu_data = (RightClickMenuData *) data;
-
-	if (menu_data == NULL)
-		return;
-
-	if (! GTK_CHECK_MENU_ITEM (widget)->active)
-		return;
-
-	e_shortcuts_set_group_uses_small_icons (menu_data->shortcuts_view->priv->shortcuts, menu_data->group_num, FALSE);
-}
-
-static void
-toggle_small_icons_cb (GtkWidget *widget,
-		       void *data)
-{
-	RightClickMenuData *menu_data;
-
-	menu_data = (RightClickMenuData *) data;
-	if (menu_data == NULL)
-		return;
-
-	if (! GTK_CHECK_MENU_ITEM (widget)->active)
-		return;
-
-	e_shortcuts_set_group_uses_small_icons (menu_data->shortcuts_view->priv->shortcuts, menu_data->group_num, TRUE);
-}
-
-static void
-hide_shortcut_bar_cb (GtkWidget *widget,
-		      void *data)
-{
-	RightClickMenuData *menu_data;
-	EShortcutsView *shortcut_view;
-
-	menu_data = (RightClickMenuData *) data;
-
-	shortcut_view = E_SHORTCUTS_VIEW (menu_data->shortcuts_view);
-
-	g_signal_emit (shortcut_view, signals[HIDE_REQUESTED], 0);
-}
-
-static void
-create_new_group_cb (GtkWidget *widget,
-		     void *data)
-{
-	RightClickMenuData *menu_data;
-
-	menu_data = (RightClickMenuData *) data;
-
-	show_new_group_dialog (menu_data->shortcuts_view);
-}
-
-static void
-destroy_group_cb (GtkWidget *widget,
-		  void *data)
-{
-	RightClickMenuData *menu_data;
-	EShortcuts *shortcuts;
-	EShortcutsView *shortcuts_view;
-	EShortcutsViewPrivate *priv;
-	GtkWidget *message_dialog;
-	GtkResponseType response;
-
-	menu_data = (RightClickMenuData *) data;
-	shortcuts_view = menu_data->shortcuts_view;
-	priv = shortcuts_view->priv;
-	shortcuts = priv->shortcuts;
-
-	message_dialog = gtk_message_dialog_new (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (menu_data->shortcuts_view))),
-						 GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL,
-						 GTK_MESSAGE_QUESTION,
-						 GTK_BUTTONS_NONE,
-						 _("Do you really want to remove group "
-						   "\"%s\" from the shortcut bar?"),
-						 e_shortcuts_get_group_title (shortcuts, menu_data->group_num));
-
-	gtk_dialog_add_buttons (GTK_DIALOG (message_dialog),
-				GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-				GTK_STOCK_DELETE, GTK_RESPONSE_OK,
-				NULL);
-
-	gtk_window_set_title (GTK_WINDOW (message_dialog), "Remove Shortcut Group"); 
-
-	gtk_container_set_border_width (GTK_CONTAINER (message_dialog), 6); 
-	
-	gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (message_dialog)->vbox), 6);
-
-	gtk_dialog_set_default_response (GTK_DIALOG (message_dialog), GTK_RESPONSE_OK);
-
-	response = gtk_dialog_run (GTK_DIALOG (message_dialog));
-	gtk_widget_destroy (message_dialog);
-
-	if (response == GTK_RESPONSE_OK)
-		e_shortcuts_remove_group (shortcuts, menu_data->group_num);
-}
-
-static void
-rename_group_cb (GtkWidget *widget,
-		 void *data)
-{
-	RightClickMenuData *menu_data;
-	EShortcuts *shortcuts;
-	EShortcutsView *shortcuts_view;
-	EIconBarViewType original_view_type;
-	const char *old_name;
-	char *new_name;
-	int group;
-
-	menu_data = (RightClickMenuData *) data;
-	shortcuts_view = menu_data->shortcuts_view;
-	shortcuts = shortcuts_view->priv->shortcuts;
-
-	old_name = e_shortcuts_get_group_title (shortcuts, menu_data->group_num);
-
-	new_name = e_request_string (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (shortcuts_view))),
-				     _("Rename Shortcut Group"),
-				     _("Rename selected shortcut group to:"),
-				     old_name);
-
-	if (new_name == NULL)
-		return;
-
-	/* Remember the group and flip back to it.  FIXME: This is a workaround
-	   to an actual ShortcutBar bug.  */
-
-	group = e_group_bar_get_current_group_num (E_GROUP_BAR (shortcuts_view));
-	original_view_type = e_shortcut_bar_get_view_type (E_SHORTCUT_BAR (menu_data->shortcuts_view), group);
-	e_shortcuts_rename_group (shortcuts, menu_data->group_num, new_name);
-
-	g_free (new_name);
-	e_group_bar_set_current_group_num (E_GROUP_BAR (shortcuts_view), group, FALSE);
-	e_shortcut_bar_set_view_type (E_SHORTCUT_BAR (menu_data->shortcuts_view), group, original_view_type);
-}
-
-static void
-create_default_shortcuts_cb (GtkWidget *widget,
-			     void *data)
-{
-	RightClickMenuData *menu_data;
-	EShortcutsView *shortcuts_view;
-
-	menu_data = (RightClickMenuData *) data;
-	shortcuts_view = menu_data->shortcuts_view;
-	e_shortcuts_add_default_shortcuts (shortcuts_view->priv->shortcuts,
-					   e_group_bar_get_current_group_num (E_GROUP_BAR (shortcuts_view)));
-}
-
-static GnomeUIInfo icon_size_radio_group_uiinfo[] = {
-	{ GNOME_APP_UI_ITEM, N_("_Small Icons"),
-	  N_("Show the shortcuts as small icons"), toggle_small_icons_cb, NULL,
-	  NULL, 0, 0, 0, 0 },
-	{ GNOME_APP_UI_ITEM, N_("_Large Icons"),
-	  N_("Show the shortcuts as large icons"), toggle_large_icons_cb, NULL,
-	  NULL, 0, 0, 0, 0 },
-
-	GNOMEUIINFO_END
-};
-
-static GnomeUIInfo right_click_menu_uiinfo[] = {
-	GNOMEUIINFO_RADIOLIST (icon_size_radio_group_uiinfo),
-
-	GNOMEUIINFO_SEPARATOR,
-
-	{ GNOME_APP_UI_ITEM, N_("_Add Group..."),
-	  N_("Create a new shortcut group"), create_new_group_cb, NULL,
-	  NULL, 0, 0, 0, 0 },
-	{ GNOME_APP_UI_ITEM, N_("_Remove this Group..."),
-	  N_("Remove this shortcut group"), destroy_group_cb, NULL,
-	  NULL, 0, 0, 0, 0 },
-	{ GNOME_APP_UI_ITEM, N_("Re_name this Group..."),
-	  N_("Rename this shortcut group"), rename_group_cb, NULL,
-	  NULL, 0, 0, 0, 0 },
-
-	GNOMEUIINFO_SEPARATOR,
-
-	{ GNOME_APP_UI_ITEM, N_("_Hide the Shortcut Bar"), 
-	  N_("Hide the shortcut bar"), hide_shortcut_bar_cb, NULL,
-	  NULL, 0, 0, 0, 0 },
-
-	GNOMEUIINFO_SEPARATOR,
-
-	{ GNOME_APP_UI_ITEM, N_("Create _Default Shortcuts"), 
-	  N_("Create Default Shortcuts"), create_default_shortcuts_cb, NULL,
-	  NULL, 0, 0, 0, 0 },
-
-	GNOMEUIINFO_END
-};
-
-static void
-pop_up_right_click_menu_for_group (EShortcutsView *shortcuts_view,
-				   GdkEventButton *event,
-				   int group_num)
-{
-	RightClickMenuData *menu_data;
-	GtkWidget *popup_menu;
-
-	menu_data = g_new (RightClickMenuData, 1);
-	menu_data->shortcuts_view = shortcuts_view;
-	menu_data->group_num      = group_num;
-
-	popup_menu = gnome_popup_menu_new (right_click_menu_uiinfo);
-
-	if (e_shortcut_bar_get_view_type (E_SHORTCUT_BAR (shortcuts_view), group_num)
-	    == E_ICON_BAR_SMALL_ICONS)
-		gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (icon_size_radio_group_uiinfo[0].widget),
-						TRUE);
-	else
-		gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (icon_size_radio_group_uiinfo[1].widget),
-						TRUE);
-
-	if (group_num == 0)
-		gtk_widget_set_sensitive (right_click_menu_uiinfo[3].widget, FALSE);
-
-	gnome_popup_menu_do_popup_modal (popup_menu, NULL, NULL, event, menu_data, GTK_WIDGET (shortcuts_view));
-
-	g_free (menu_data);
-	gtk_widget_destroy (popup_menu);
-}
-
-
-/* Data to be passed around for the shortcut right-click menu items.  */
-
-struct _ShortcutRightClickMenuData {
-	EShortcutsView *shortcuts_view;
-	int group_num;
-	int item_num;
-};
-typedef struct _ShortcutRightClickMenuData ShortcutRightClickMenuData;
-
-
-/* "Open Shortcut" and "Open Shortcut in New Window" commands.  */
-
-static void
-open_shortcut_helper (ShortcutRightClickMenuData *menu_data,
-		      gboolean in_new_window)
-{
-	EShortcutsView *shortcuts_view;
-	EShortcuts *shortcuts;
-	const EShortcutItem *shortcut_item;
-
-	shortcuts_view = menu_data->shortcuts_view;
-	shortcuts = shortcuts_view->priv->shortcuts;
-
-	shortcut_item = e_shortcuts_get_shortcut (shortcuts, menu_data->group_num, menu_data->item_num);
-	if (shortcut_item == NULL)
-		return;
-
-	g_signal_emit (shortcuts_view, signals[ACTIVATE_SHORTCUT], 0,
-		       shortcuts, shortcut_item->uri, in_new_window);
-}
-
-static void
-open_shortcut_cb (GtkWidget *widget,
-		  void *data)
-{
-	open_shortcut_helper ((ShortcutRightClickMenuData *) data, FALSE);
-}
-
-static void
-open_shortcut_in_new_window_cb (GtkWidget *widget,
-				void *data)
-{
-	open_shortcut_helper ((ShortcutRightClickMenuData *) data, TRUE);
-}
-
-
-static void
-remove_shortcut_cb (GtkWidget *widget,
-		    void *data)
-{
-	ShortcutRightClickMenuData *menu_data;
-	EShortcutsView *shortcuts_view;
-	EShortcuts *shortcuts;
-
-	menu_data = (ShortcutRightClickMenuData *) data;
-	shortcuts_view = menu_data->shortcuts_view;
-	shortcuts = shortcuts_view->priv->shortcuts;
-
-	e_shortcuts_remove_shortcut (shortcuts, menu_data->group_num, menu_data->item_num);
-}
-
-
-/* "Rename Shortcut"  command.  */
-
-static void
-rename_shortcut_cb (GtkWidget *widget,
-		    void *data)
-{
-	ShortcutRightClickMenuData *menu_data;
-	EShortcutsView *shortcuts_view;
-	EShortcuts *shortcuts;
-	const EShortcutItem *shortcut_item;
-	char *new_name;
-
-	menu_data = (ShortcutRightClickMenuData *) data;
-	shortcuts_view = menu_data->shortcuts_view;
-	shortcuts = shortcuts_view->priv->shortcuts;
-
-	shortcut_item = e_shortcuts_get_shortcut (shortcuts, menu_data->group_num, menu_data->item_num);
-
-	new_name = e_request_string (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (shortcuts_view))),
-				     _("Rename Shortcut"),
-				     _("Rename selected shortcut to:"),
-				     shortcut_item->name);
-
-	if (new_name == NULL)
-		return;
-
-	e_shortcuts_update_shortcut (shortcuts, menu_data->group_num, menu_data->item_num,
-				     shortcut_item->uri, new_name, shortcut_item->unread_count,
-				     shortcut_item->type, shortcut_item->custom_icon_name);
-	g_free (new_name);
-}
-
-static GnomeUIInfo shortcut_right_click_menu_uiinfo[] = {
-	GNOMEUIINFO_ITEM_STOCK (N_("_Open"), N_("Open the folder linked to this shortcut"),
-				open_shortcut_cb, GTK_STOCK_OPEN), 
-	GNOMEUIINFO_ITEM_NONE  (N_("Open in New _Window"), N_("Open the folder linked to this shortcut in a new window"),
-				open_shortcut_in_new_window_cb),
-	GNOMEUIINFO_SEPARATOR,
-	GNOMEUIINFO_ITEM_NONE (N_("_Rename"), N_("Rename this shortcut"),
-			       rename_shortcut_cb),
-	GNOMEUIINFO_ITEM_STOCK (N_("Re_move"), N_("Remove this shortcut from the shortcut bar"),
-				remove_shortcut_cb, GTK_STOCK_REMOVE),
-	GNOMEUIINFO_END
-};
-
-static void
-pop_up_right_click_menu_for_shortcut (EShortcutsView *shortcuts_view,
-				      GdkEventButton *event,
-				      int group_num,
-				      int item_num)
-{
-	ShortcutRightClickMenuData *menu_data;
-	GtkWidget *popup_menu;
-
-	menu_data = g_new (ShortcutRightClickMenuData, 1);
-	menu_data->shortcuts_view = shortcuts_view;
-	menu_data->group_num 	  = group_num;
-	menu_data->item_num  	  = item_num;
-
-	popup_menu = gnome_popup_menu_new (shortcut_right_click_menu_uiinfo);
-
-	gnome_popup_menu_do_popup_modal (popup_menu, NULL, NULL, event, menu_data, GTK_WIDGET (shortcuts_view));
-
-	g_free (menu_data);
-	gtk_widget_destroy (popup_menu);
-}
-
-
-/* View callbacks.  This part exists mostly because of breakage in the
-   EShortcutBar design.  */
-
-static void
-group_change_icon_size_callback (EShortcuts *shortucts,
-				 int group_num,
-				 gboolean use_small_icons,
-				 void *data)
-{
-	EShortcutsView *view;
-
-	view = E_SHORTCUTS_VIEW (data);
-
-	if (use_small_icons)
-		e_shortcut_bar_set_view_type (E_SHORTCUT_BAR (view), group_num, E_ICON_BAR_SMALL_ICONS);
-	else
-		e_shortcut_bar_set_view_type (E_SHORTCUT_BAR (view), group_num, E_ICON_BAR_LARGE_ICONS);
-}
-
-
-/* GObject methods.  */
-
-static void
-impl_dispose (GObject *object)
-{
-	EShortcutsViewPrivate *priv;
-	EShortcutsView *shortcuts_view;
-
-	shortcuts_view = E_SHORTCUTS_VIEW (object);
-
-	priv = shortcuts_view->priv;
-
-	if (priv->shortcuts != NULL) {
-		g_object_unref (priv->shortcuts);
-		priv->shortcuts = NULL;
-	}
-
-	(* G_OBJECT_CLASS (parent_class)->dispose) (object);
-}
-
-static void
-impl_finalize (GObject *object)
-{
-	EShortcutsView *shortcuts_view;
-
-	shortcuts_view = E_SHORTCUTS_VIEW (object);
-
-	g_free (shortcuts_view->priv);
-
-	(* G_OBJECT_CLASS (parent_class)->finalize) (object);
-}
-
-
-/* EShortcutBar methods.  */
-
-static void
-item_selected (EShortcutBar *shortcut_bar,
-	       GdkEvent *event,
-	       int group_num,
-	       int item_num)
-{
-	EShortcuts *shortcuts;
-	EShortcutsView *shortcuts_view;
-	const EShortcutItem *shortcut_item;
-
-	shortcuts_view = E_SHORTCUTS_VIEW (shortcut_bar);
-	shortcuts = shortcuts_view->priv->shortcuts;
-
-	if (event->button.button == 3) {
-		if (item_num < 0)
-			pop_up_right_click_menu_for_group (shortcuts_view, &event->button,
-							   group_num);
-		else
-			pop_up_right_click_menu_for_shortcut (shortcuts_view, &event->button,
-							      group_num, item_num);
-		return;
-	} else if (event->button.button != 1) {
-		return;
-	}
-
-	if (item_num < 0)
-		return;
-
-	shortcut_item = e_shortcuts_get_shortcut (shortcuts, group_num, item_num);
-	if (shortcut_item == NULL)
-		return;
-
-	g_signal_emit (shortcuts_view, signals[ACTIVATE_SHORTCUT], 0,
-		       shortcuts, shortcut_item->uri, FALSE);
-}
-
-static void
-get_shortcut_info (EShortcutsView *shortcuts_view,
-		   const char *item_uri,
-		   int *unread_count_return,
-		   const char **type_return,
-		   const char **custom_icon_name_return)
-{
-	EShortcutsViewPrivate *priv;
-	EStorageSet *storage_set;
-	EFolder *folder;
-	EShell *shell;
-	char *path;
-
-	priv = shortcuts_view->priv;
-
-	shell = e_shortcuts_get_shell (priv->shortcuts);
-
-	if (! e_shell_parse_uri (shell, item_uri, &path, NULL)) {
-		*unread_count_return = 0;
-		*type_return = NULL;
-		*custom_icon_name_return = NULL;
-		return;
-	}
-
-	storage_set = e_shell_get_storage_set (shell);
-
-	folder = e_storage_set_get_folder (storage_set, path);
-	if (folder != NULL) {
-		*unread_count_return     = e_folder_get_unread_count (folder);
-		*type_return             = e_folder_get_type_string (folder);
-		*custom_icon_name_return = e_folder_get_custom_icon_name (folder);
-	} else {
-		*unread_count_return     = 0;
-		*type_return             = NULL;
-		*custom_icon_name_return = NULL;
-	}
-
-	g_free (path);
-}
-
-static void
-impl_shortcut_dropped (EShortcutBar *shortcut_bar,
-		       int group_num,
-		       int position,
-		       const char *item_url,
-		       const char *item_name)
-{
-	EShortcutsView *shortcuts_view;
-	EShortcutsViewPrivate *priv;
-	int unread_count;
-	const char *type;
-	const char *custom_icon_name;
-	char *tmp;
-	char *tp;
-	char *name_without_unread;
-
-	shortcuts_view = E_SHORTCUTS_VIEW (shortcut_bar);
-	priv = shortcuts_view->priv;
-
-	get_shortcut_info (shortcuts_view, item_url, &unread_count, &type, &custom_icon_name);
-
-	/* Looks funny, but keeps it from adding the unread count
-           repeatedly when dragging folders around */
-	tmp = g_strdup_printf (" (%d)", unread_count);
-	if ((tp = strstr (item_name, tmp)) != NULL)
-		name_without_unread = g_strndup (item_name, strlen (item_name) - strlen (tp));
-	else
-		name_without_unread = g_strdup (item_name);
-
-	e_shortcuts_add_shortcut (priv->shortcuts,
-				  group_num, position,
-				  item_url,
-				  name_without_unread,
-				  unread_count,
-				  type,
-				  custom_icon_name);
-
-	g_free (tmp);
-	g_free (name_without_unread);
-}
-
-static void
-impl_shortcut_dragged (EShortcutBar *shortcut_bar,
-		       gint group_num,
-		       gint item_num)
-{
-	EShortcutsView *shortcuts_view;
-	EShortcutsViewPrivate *priv;
-
-	shortcuts_view = E_SHORTCUTS_VIEW (shortcut_bar);
-	priv = shortcuts_view->priv;
-
-	e_shortcuts_remove_shortcut (priv->shortcuts, group_num, item_num);
-}
-
-static gboolean
-impl_shortcut_drag_motion (EShortcutBar *shortcut_bar,
-			   GtkWidget *widget,
-			   GdkDragContext *context,
-			   guint time,
-			   gint group_num,
-			   gint item_num)
-{
-	EShortcutsView *view;
-	EShortcutsViewPrivate *priv;
-	const EShortcutItem *shortcut;
-
-	view = E_SHORTCUTS_VIEW (shortcut_bar);
-	priv = view->priv;
-
-	shortcut = e_shortcuts_get_shortcut (priv->shortcuts, group_num, item_num);
-	if (shortcut == NULL)
-		return FALSE;
-	if (strncmp (shortcut->uri, E_SHELL_URI_PREFIX, E_SHELL_URI_PREFIX_LEN) != 0)
-		return FALSE;
-
-	if (! e_folder_dnd_bridge_motion (widget, context, time,
-					  e_shell_get_storage_set (e_shortcuts_get_shell (priv->shortcuts)),
-					  shortcut->uri + E_SHELL_URI_PREFIX_LEN))
-		gdk_drag_status (context, 0, time);
-
-	return TRUE;
-}
-
-static gboolean
-impl_shortcut_drag_data_received (EShortcutBar *shortcut_bar,
-				  GtkWidget *widget,
-				  GdkDragContext *context,
-				  GtkSelectionData *selection_data,
-				  guint time,
-				  gint group_num,
-				  gint item_num)
-{
-	EShortcutsView *view;
-	EShortcutsViewPrivate *priv;
-	const EShortcutItem *shortcut;
-
-	view = E_SHORTCUTS_VIEW (shortcut_bar);
-	priv = view->priv;
-
-	shortcut = e_shortcuts_get_shortcut (priv->shortcuts, group_num, item_num);
-	if (shortcut == NULL)
-		return FALSE;
-	if (strncmp (shortcut->uri, E_SHELL_URI_PREFIX, E_SHELL_URI_PREFIX_LEN) != 0)
-		return FALSE;
-
-	e_folder_dnd_bridge_data_received (widget, context, selection_data, time,
-					   e_shell_get_storage_set (e_shortcuts_get_shell (priv->shortcuts)),
-					   shortcut->uri + E_SHELL_URI_PREFIX_LEN);
-	return TRUE;
-}
-
-
-static void
-class_init (EShortcutsViewClass *klass)
-{
-	GObjectClass *object_class;
-	EShortcutBarClass *shortcut_bar_class;
-
-	object_class = G_OBJECT_CLASS (klass);
-	object_class->dispose  = impl_dispose;
-	object_class->finalize = impl_finalize;
-
-	shortcut_bar_class = E_SHORTCUT_BAR_CLASS (klass);
-	shortcut_bar_class->item_selected               = item_selected;
-	shortcut_bar_class->shortcut_dropped            = impl_shortcut_dropped;
-	shortcut_bar_class->shortcut_dragged            = impl_shortcut_dragged;
-	shortcut_bar_class->shortcut_drag_motion        = impl_shortcut_drag_motion;
-	shortcut_bar_class->shortcut_drag_data_received = impl_shortcut_drag_data_received;
-
-	parent_class = g_type_class_ref(e_shortcut_bar_get_type ());
-
-	signals[ACTIVATE_SHORTCUT] =
-		g_signal_new ("activate_shortcut",
-			      G_OBJECT_CLASS_TYPE (object_class),
-			      G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
-			      G_STRUCT_OFFSET (EShortcutsViewClass, activate_shortcut),
-			      NULL, NULL,
-			      e_shell_marshal_NONE__POINTER_STRING_BOOL,
-			      G_TYPE_NONE, 3,
-			      G_TYPE_POINTER,
-			      G_TYPE_STRING,
-			      G_TYPE_BOOLEAN);
-
-	signals[HIDE_REQUESTED] =
-		g_signal_new ("hide_requested",
-			      G_OBJECT_CLASS_TYPE (object_class),
-			      G_SIGNAL_RUN_LAST,
-			      G_STRUCT_OFFSET (EShortcutsViewClass,
-					       hide_requested),
-			      NULL, NULL,
-			      e_shell_marshal_NONE__NONE,
-			      G_TYPE_NONE, 0);
-}
-
-static void
-init (EShortcutsView *shortcuts_view)
-{
-	EShortcutsViewPrivate *priv;
-
-	priv = g_new (EShortcutsViewPrivate, 1);
-	priv->shortcuts = NULL;
-
-	shortcuts_view->priv = priv;
-}
-
-
-void
-e_shortcuts_view_construct (EShortcutsView *shortcuts_view,
-			    EShortcuts *shortcuts)
-{
-	EShortcutsViewPrivate *priv;
-	int i, num_groups;
-
-	g_return_if_fail (shortcuts != NULL);
-	g_return_if_fail (E_IS_SHORTCUTS (shortcuts));
-
-	priv = shortcuts_view->priv;
-
-	priv->shortcuts = shortcuts;
-	g_object_ref (priv->shortcuts);
-
-	e_shortcut_bar_set_model (E_SHORTCUT_BAR (shortcuts_view),
-				  E_SHORTCUT_MODEL (e_shortcuts_view_model_new (shortcuts)));
-
-	g_signal_connect_object (shortcuts, "group_change_icon_size",
-				 G_CALLBACK (group_change_icon_size_callback), shortcuts_view, 0);
-
-	num_groups = e_shortcuts_get_num_groups (shortcuts);
-	for (i = 0; i < num_groups; i ++) {
-		if (e_shortcuts_get_group_uses_small_icons (shortcuts, i))
-			e_shortcut_bar_set_view_type (E_SHORTCUT_BAR (shortcuts_view), i, E_ICON_BAR_SMALL_ICONS);
-		else
-			e_shortcut_bar_set_view_type (E_SHORTCUT_BAR (shortcuts_view), i, E_ICON_BAR_LARGE_ICONS);
-	}
-}
-
-GtkWidget *
-e_shortcuts_view_new (EShortcuts *shortcuts)
-{
-	GtkWidget *new;
-
-	g_return_val_if_fail (shortcuts != NULL, NULL);
-	g_return_val_if_fail (E_IS_SHORTCUTS (shortcuts), NULL);
-
-	new = g_object_new (e_shortcuts_view_get_type (), NULL);
-	e_shortcuts_view_construct (E_SHORTCUTS_VIEW (new), shortcuts);
-
-	return new;
-}
-
-
-E_MAKE_TYPE (e_shortcuts_view, "EShortcutsView", EShortcutsView, class_init, init, PARENT_TYPE)
Index: shell/e-shortcuts-view.h
===================================================================
RCS file: shell/e-shortcuts-view.h
diff -N shell/e-shortcuts-view.h
--- shell/e-shortcuts-view.h	8 Jul 2002 20:45:48 -0000	1.9
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,74 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-shortcuts-view.h
- *
- * Copyright (C) 2000  Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli
- */
-
-#ifndef _E_SHORTCUTS_VIEW_H_
-#define _E_SHORTCUTS_VIEW_H_
-
-#include <gtk/gtkwidget.h>
-
-#include <gal/shortcut-bar/e-shortcut-bar.h>
-#include "e-shortcuts.h"
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-#define E_TYPE_SHORTCUTS_VIEW			(e_shortcuts_view_get_type ())
-#define E_SHORTCUTS_VIEW(obj)			(GTK_CHECK_CAST ((obj), E_TYPE_SHORTCUTS_VIEW, EShortcutsView))
-#define E_SHORTCUTS_VIEW_CLASS(klass)		(GTK_CHECK_CLASS_CAST ((klass), E_TYPE_SHORTCUTS_VIEW, EShortcutsViewClass))
-#define E_IS_SHORTCUTS_VIEW(obj)		(GTK_CHECK_TYPE ((obj), E_TYPE_SHORTCUTS_VIEW))
-#define E_IS_SHORTCUTS_VIEW_CLASS(klass)	(GTK_CHECK_CLASS_TYPE ((obj), E_TYPE_SHORTCUTS_VIEW))
-
-
-typedef struct _EShortcutsView        EShortcutsView;
-typedef struct _EShortcutsViewPrivate EShortcutsViewPrivate;
-typedef struct _EShortcutsViewClass   EShortcutsViewClass;
-
-struct _EShortcutsView {
-	EShortcutBar parent;
-
-	EShortcutsViewPrivate *priv;
-};
-
-struct _EShortcutsViewClass {
-	EShortcutBarClass parent_class;
-
-	void (* activate_shortcut) (EShortcutsView *view,
-				    EShortcuts *shortcuts,
-				    const char *uri,
-				    gboolean in_new_window);
-
-	void (* hide_requested) (EShortcutsView *view);
-};
-
-
-GtkType    e_shortcuts_view_get_type   (void);
-void       e_shortcuts_view_construct  (EShortcutsView *shortcuts_view,
-					EShortcuts     *shortcuts);
-GtkWidget *e_shortcuts_view_new        (EShortcuts     *shortcuts);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_SHORTCUTS_VIEW_H_ */
Index: shell/e-shortcuts.c
===================================================================
RCS file: shell/e-shortcuts.c
diff -N shell/e-shortcuts.c
--- shell/e-shortcuts.c	12 Nov 2003 21:13:02 -0000	1.72
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,1289 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-shortcuts.c
- *
- * Copyright (C) 2000, 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli
- */
-
-/* The shortcut list goes like this:
-
-   <?xml version="1.0"?>
-   <shortcuts>
-           <group title="Evolution shortcuts">
-	           <item name="Inbox" type="mail">evolution:/local/Inbox</item>
-	           <item name="Trash" type="vtrash">evolution:/local/Trash</item>
-	           <item name="Spam" type="vspam">evolution:/local/Spam</item>
-	           <item name="Calendar" type="calendar">evolution:/local/Calendar</item>
-	   </group>
-
-	   <group title="Personal shortcuts">
-	           <item>evolution:/local/Personal</item>
-	   </group>
-   </shortcuts>
-
-   FIXME: Do we want to use a namespace for this?
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "e-shortcuts.h"
-
-#include <string.h>
-
-#include <glib.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtkobject.h>
-#include <gtk/gtksignal.h>
-#include <gtk/gtktypeutils.h>
-
-#include <libxml/parser.h>
-#include <libxml/xmlmemory.h>
-
-#include <libgnome/gnome-i18n.h>
-
-#include <gal/util/e-xml-utils.h>
-#include <gal/util/e-util.h>
-#include <gal/shortcut-bar/e-shortcut-bar.h>
-
-#include "e-shortcuts-view.h"
-
-#include "e-shell-constants.h"
-#include "e-shell-marshal.h"
-
-
-#define PARENT_TYPE GTK_TYPE_OBJECT
-static GtkObjectClass *parent_class = NULL;
-
-struct _ShortcutGroup {
-	/* Title of the group.  */
-	char *title;
-
-	/* A list of shortcuts.  */
-	GSList *shortcuts;
-
-	/* Whether to use small icons for this group.  */
-	unsigned int use_small_icons : 1;
-};
-typedef struct _ShortcutGroup ShortcutGroup;
-
-struct _EShortcutsPrivate {
-	/* Name of the file associated with these shortcuts.  Changes in the shortcuts
-           will update this file automatically.  */
-	char *file_name;
-
-	/* ID of the idle function that will be called to save the shortcuts when they are
-           changed.  */
-	int save_idle_id;
-
-	/* Whether these shortcuts need to be saved to disk.  */
-	gboolean dirty;
-
-	/* The shell that is associated with these shortcuts.  */
-	EShell *shell;
-
-	/* Total number of groups.  */
-	int num_groups;
-
-	/* A list of ShortcutGroups.  */
-	GSList *groups;
-
-	/* A list of ShortcutViews.  */
-	GSList *views;
-};
-
-enum {
-	NEW_GROUP,
-	REMOVE_GROUP,
-	RENAME_GROUP,
-	GROUP_CHANGE_ICON_SIZE,
-	NEW_SHORTCUT,
-	REMOVE_SHORTCUT,
-	UPDATE_SHORTCUT,
-	LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL] = { 0 };
-
-
-static void make_dirty (EShortcuts *shortcuts);
-
-
-static EShortcutItem *
-shortcut_item_new (const char *uri,
-		   const char *name,
-		   int unread_count,
-		   const char *type,
-		   const char *custom_icon_name)
-{
-	EShortcutItem *new;
-
-	new = g_new (EShortcutItem, 1);
-
-	if (name == NULL)
-		new->name = g_path_get_basename (uri);
-	else
-		new->name = g_strdup (name);
-
-	new->uri              = g_strdup (uri);
-	new->type             = g_strdup (type);
-	new->custom_icon_name = g_strdup (custom_icon_name);
-	new->unread_count     = unread_count;
-
-	return new;
-}
-
-static gboolean
-shortcut_item_update (EShortcutItem *shortcut_item,
-		      const char *uri,
-		      const char *name,
-		      int unread_count,
-		      const char *type,
-		      const char *custom_icon_name)
-{
-	char *base_name = g_path_get_basename (uri);
-	gboolean changed = FALSE;
-
-	if (name == NULL)
-		name = base_name;
-
-	if (shortcut_item->unread_count != unread_count) {
-		shortcut_item->unread_count = unread_count;
-		changed = TRUE;
-	}
-
-#define UPDATE_STRING(member)					\
-	if (shortcut_item->member == NULL || member == NULL ||	\
-	    strcmp (shortcut_item->member, member) != 0) {	\
-		g_free (shortcut_item->member);			\
-		shortcut_item->member  = g_strdup (member);	\
-		changed = TRUE;					\
-	}
-
-	UPDATE_STRING (uri);
-	UPDATE_STRING (name);
-	UPDATE_STRING (type);
-	UPDATE_STRING (custom_icon_name);
-
-#undef UPDATE_STRING
-
-	g_free (base_name);
-
-	return changed;
-}
-
-static void
-shortcut_item_free (EShortcutItem *shortcut_item)
-{
-	g_free (shortcut_item->uri);
-	g_free (shortcut_item->name);
-	g_free (shortcut_item->type);
-
-	g_free (shortcut_item);
-}
-
-static ShortcutGroup *
-shortcut_group_new (const char *title)
-{
-	ShortcutGroup *new;
-
-	new = g_new (ShortcutGroup, 1);
-	new->title           = g_strdup (title);
-	new->shortcuts       = NULL;
-	new->use_small_icons = FALSE;
-
-	return new;
-}
-
-static void
-shortcut_group_free (ShortcutGroup *group)
-{
-	GSList *p;
-
-	g_free (group->title);
-
-	for (p = group->shortcuts; p != NULL; p = p->next)
-		shortcut_item_free ((EShortcutItem *) p->data);
-	g_slist_free (group->shortcuts);
-
-	g_free (group);
-}
-
-
-/* Utility functions.  */
-
-static gboolean
-update_shortcut_and_emit_signal (EShortcuts *shortcuts,
-				 EShortcutItem *shortcut_item,
-				 int group_num,
-				 int num,
-				 const char *uri,
-				 const char *name,
-				 int unread_count,
-				 const char *type,
-				 const char *custom_icon_name)
-{
-	gboolean shortcut_changed;
-
-	shortcut_changed = shortcut_item_update (shortcut_item, uri, name, unread_count, type, custom_icon_name);
-	if (shortcut_changed) {
-		g_signal_emit (shortcuts, signals[UPDATE_SHORTCUT], 0, group_num, num);
-		return TRUE;
-	}
-
-	return FALSE;
-}
-
-static void
-unload_shortcuts (EShortcuts *shortcuts)
-{
-	EShortcutsPrivate *priv;
-	GSList *orig_groups;
-	GSList *p;
-
-	priv = shortcuts->priv;
-	orig_groups = priv->groups;
-
-	for (p = priv->groups; p != NULL; p = p->next) {
-		ShortcutGroup *group;
-
-		g_signal_emit (shortcuts, signals[REMOVE_GROUP], 0, 0);
-
-		group = (ShortcutGroup *) p->data;
-
-		shortcut_group_free (group);
-
-		priv->groups = priv->groups->next;
-	}
-
-	if (orig_groups != NULL)
-		g_slist_free (orig_groups);
-
-	priv->groups = NULL;
-}
-
-static gboolean
-load_shortcuts (EShortcuts *shortcuts,
-		const char *file_name)
-{
-	EShortcutsPrivate *priv;
-	xmlDoc *doc;
-	xmlNode *root;
-	xmlNode *p, *q;
-
-	/* FIXME: Update the views by emitting the appropriate signals.  */
-
-	priv = shortcuts->priv;
-
-	doc = xmlParseFile (file_name);
-	if (doc == NULL)
-		return FALSE;
-
-	root = xmlDocGetRootElement (doc);
-	if (root == NULL || strcmp (root->name, "shortcuts") != 0) {
-		xmlFreeDoc (doc);
-		return FALSE;
-	}
-
-	unload_shortcuts (shortcuts);
-
-	for (p = root->children; p != NULL; p = p->next) {
-		ShortcutGroup *shortcut_group;
-		xmlChar *shortcut_group_title;
-		xmlChar *icon_size;
-
-		if (strcmp ((char *) p->name, "group") != 0)
-			continue;
-
-		shortcut_group_title = xmlGetProp (p, "title");
-		if (shortcut_group_title == NULL)
-			continue;
-
-		shortcut_group = shortcut_group_new (shortcut_group_title);
-		xmlFree (shortcut_group_title);
-
-		icon_size = xmlGetProp (p, "icon_size");
-		if (icon_size != NULL && strcmp (icon_size, "small") == 0)
-			shortcut_group->use_small_icons = TRUE;
-		else
-			shortcut_group->use_small_icons = FALSE;
-		xmlFree (icon_size);
-
-		for (q = p->children; q != NULL; q = q->next) {
-			EShortcutItem *shortcut_item;
-			xmlChar *uri;
-			xmlChar *name;
-			xmlChar *type;
-			xmlChar *icon;
-			char *path;
-
-			if (strcmp ((char *) q->name, "item") != 0)
-				continue;
-
-			uri  = xmlNodeListGetString (doc, q->children, 1);
-			if (uri == NULL)
-				continue;
-
-			if (e_shell_parse_uri (priv->shell, uri, &path, NULL)) {
-				EFolder *folder;
-
-				folder = e_storage_set_get_folder (e_shell_get_storage_set (priv->shell), path);
-				if (folder != NULL) {
-					name = xmlMemStrdup (e_folder_get_name (folder));
-					type = xmlMemStrdup (e_folder_get_type_string (folder));
-
-					if (e_folder_get_custom_icon_name (folder) != NULL)
-						icon = xmlMemStrdup (e_folder_get_custom_icon_name (folder));
-					else
-						icon = NULL;
-				} else {
-					name = xmlGetProp (q, "name");
-					type = xmlGetProp (q, "type");
-					icon = xmlGetProp (q, "icon");
-				}
-
-				shortcut_item = shortcut_item_new (uri, name, 0, type, icon);
-				shortcut_group->shortcuts = g_slist_prepend (shortcut_group->shortcuts,
-									     shortcut_item);
-
-				if (name != NULL)
-					xmlFree (name);
-				if (type != NULL)
-					xmlFree (type);
-				if (icon != NULL)
-					xmlFree (icon);
-			}
-
-			g_free (path);
-			xmlFree (uri);
-		}
-
-		shortcut_group->shortcuts = g_slist_reverse (shortcut_group->shortcuts);
-
-		priv->groups = g_slist_prepend (priv->groups, shortcut_group);
-		priv->num_groups ++;
-	}
-
-	priv->groups = g_slist_reverse (priv->groups);
-
-	xmlFreeDoc (doc);
-
-	/* After loading, we always have to re-save ourselves as we have merged
-	   the information we have with the information we got from the
-	   StorageSet.  */
-	/* FIXME: Obviously, this sucks.  */
-	make_dirty (shortcuts);
-
-	return TRUE;
-}
-
-static gboolean
-save_shortcuts (EShortcuts *shortcuts,
-		const char *file_name)
-{
-	EShortcutsPrivate *priv;
-	xmlDoc *doc;
-	xmlNode *root;
-	GSList *p, *q;
-
-	priv = shortcuts->priv;
-
-	doc = xmlNewDoc ((xmlChar *) "1.0");
-	root = xmlNewDocNode (doc, NULL, (xmlChar *) "shortcuts", NULL);
-	xmlDocSetRootElement (doc, root);
-
-	for (p = priv->groups; p != NULL; p = p->next) {
-		ShortcutGroup *group;
-		xmlNode *group_node;
-
-		group = (ShortcutGroup *) p->data;
-		group_node = xmlNewChild (root, NULL, (xmlChar *) "group", NULL);
-
-		xmlSetProp (group_node, (xmlChar *) "title", group->title);
-
-		if (group->use_small_icons)
-			xmlSetProp (group_node, (xmlChar *) "icon_size", "small");
-		else
-			xmlSetProp (group_node, (xmlChar *) "icon_size", "large");
-
-		for (q = group->shortcuts; q != NULL; q = q->next) {
-			EShortcutItem *shortcut;
-			xmlNode *shortcut_node;
-
-			shortcut = (EShortcutItem *) q->data;
-			shortcut_node = xmlNewTextChild (group_node, NULL, (xmlChar *) "item",
-							 (xmlChar *) shortcut->uri);
-
-			if (shortcut->name != NULL)
-				xmlSetProp (shortcut_node, (xmlChar *) "name", shortcut->name);
-
-			if (shortcut->type != NULL)
-				xmlSetProp (shortcut_node, (xmlChar *) "type", shortcut->type);
-
-			if (shortcut->custom_icon_name != NULL)
-				xmlSetProp (shortcut_node, (xmlChar *) "icon", shortcut->custom_icon_name);
-		}
-	}
-
-	if (xmlSaveFile (file_name, doc) < 0) {
-		xmlFreeDoc (doc);
-		return FALSE;
-	}
-
-	xmlFreeDoc (doc);
-	return TRUE;
-}
-
-
-/* Idle function to update the file on disk.  */
-
-static int
-idle_cb (void *data)
-{
-	EShortcuts *shortcuts;
-	EShortcutsPrivate *priv;
-
-	shortcuts = E_SHORTCUTS (data);
-	priv = shortcuts->priv;
-
-	if (priv->dirty) {
-		if (! e_shortcuts_save (shortcuts, NULL))
-			g_warning ("Saving of shortcuts failed -- %s", priv->file_name);
-		else
-			priv->dirty = FALSE;
-	}
-
-	priv->save_idle_id = 0;
-
-	return FALSE;
-}
-
-static void
-schedule_idle (EShortcuts *shortcuts)
-{
-	EShortcutsPrivate *priv;
-
-	priv = shortcuts->priv;
-
-	if (priv->save_idle_id != 0)
-		return;
-
-	priv->save_idle_id = gtk_idle_add (idle_cb, shortcuts);
-}
-
-static void
-make_dirty (EShortcuts *shortcuts)
-{
-	EShortcutsPrivate *priv;
-
-	priv = shortcuts->priv;
-
-	priv->dirty = TRUE;
-	schedule_idle (shortcuts);
-}
-
-static void
-update_shortcuts_by_path (EShortcuts *shortcuts,
-			  const char *path)
-{
-	EShortcutsPrivate *priv;
-	EFolder *folder;
-	const GSList *p, *q;
-	char *evolution_uri;
-	int group_num, num;
-	gboolean changed = FALSE;
-
-	priv = shortcuts->priv;
-	folder = e_storage_set_get_folder (e_shell_get_storage_set (priv->shell), path);
-
-	evolution_uri = g_strconcat (E_SHELL_URI_PREFIX, path, NULL);
-
-	group_num = 0;
-	for (p = priv->groups; p != NULL; p = p->next, group_num++) {
-		ShortcutGroup *group;
-
-		group = (ShortcutGroup *) p->data;
-		num = 0;
-		for (q = group->shortcuts; q != NULL; q = q->next, num++) {
-			EShortcutItem *shortcut_item;
-			char *shortcut_path;
-
-			shortcut_item = (EShortcutItem *) q->data;
-
-			if (! e_shell_parse_uri (priv->shell, shortcut_item->uri, &shortcut_path, NULL)) {
-				/* Ignore bogus URIs.  */
-				continue;
-			}
-
-			if (strcmp (shortcut_path, path) == 0) {
-				changed = update_shortcut_and_emit_signal (shortcuts,
-									   shortcut_item,
-									   group_num,
-									   num,
-									   shortcut_item->uri,
-									   shortcut_item->name,
-									   e_folder_get_unread_count (folder),
-									   e_folder_get_type_string (folder),
-									   e_folder_get_custom_icon_name (folder));
-			}
-
-			g_free (shortcut_path);
-		}
-	}
-
-	g_free (evolution_uri);
-
-	if (changed)
-		make_dirty (shortcuts);
-}
-
-
-static EShortcutItem *
-get_item (EShortcuts *shortcuts,
-	  int group_num,
-	  int num)
-{
-	EShortcutsPrivate *priv;
-	ShortcutGroup *group;
-	GSList *group_element;
-	GSList *shortcut_element;
-
-	g_return_val_if_fail (shortcuts != NULL, NULL);
-	g_return_val_if_fail (E_IS_SHORTCUTS (shortcuts), NULL);
-
-	priv = shortcuts->priv;
-
-	group_element = g_slist_nth (priv->groups, group_num);
-	if (group_element == NULL)
-		return NULL;
-
-	group = (ShortcutGroup *) group_element->data;
-
-	shortcut_element = g_slist_nth (group->shortcuts, num);
-	if (shortcut_element == NULL)
-		return NULL;
-
-	return (EShortcutItem *) shortcut_element->data;
-}
-
-
-/* Signal handlers for the views.  */
-
-static void
-view_weak_notify (void *data,
-		  GObject *where_the_object_was)
-{
-	EShortcuts *shortcuts;
-	EShortcutsPrivate *priv;
-
-	shortcuts = E_SHORTCUTS (data);
-	priv = shortcuts->priv;
-
-	priv->views = g_slist_remove (priv->views, where_the_object_was);
-}
-
-
-/* Signal handlers for the EStorageSet.  */
-
-static void
-storage_set_new_folder_callback (EStorageSet *storage_set,
-				 const char *path,
-				 void *data)
-{
-	EShortcuts *shortcuts;
-
-	shortcuts = E_SHORTCUTS (data);
-
-	update_shortcuts_by_path (shortcuts, path);
-}
-
-static void
-storage_set_updated_folder_callback (EStorageSet *storage_set,
-				     const char *path,
-				     void *data)
-{
-	EShortcuts *shortcuts;
-
-	shortcuts = E_SHORTCUTS (data);
-
-	update_shortcuts_by_path (shortcuts, path);
-}
-
-
-/* GObject methods.  */
-
-static void
-impl_dispose (GObject *object)
-{
-	EShortcuts *shortcuts;
-	EShortcutsPrivate *priv;
-	GSList *p;
-
-	shortcuts = E_SHORTCUTS (object);
-	priv = shortcuts->priv;
-
-	unload_shortcuts (shortcuts);
-
-	if (priv->save_idle_id != 0) {
-		gtk_idle_remove (priv->save_idle_id);
-		priv->save_idle_id = 0;
-	}
-
-	if (priv->dirty) {
-		if (! e_shortcuts_save (shortcuts, NULL))
-			g_warning (_("Error saving shortcuts.")); /* FIXME */
-		priv->dirty = FALSE;
-	}
-
-	for (p = priv->views; p != NULL; p = p->next)
-		g_object_weak_unref (G_OBJECT (p->data), view_weak_notify, shortcuts);
-	g_slist_free (priv->views);
-	priv->views = NULL;
-
-	(* G_OBJECT_CLASS (parent_class)->dispose) (object);
-}
-
-static void
-impl_finalize (GObject *object)
-{
-	EShortcuts *shortcuts;
-	EShortcutsPrivate *priv;
-
-	shortcuts = E_SHORTCUTS (object);
-	priv = shortcuts->priv;
-
-	g_free (priv->file_name);
-	g_free (priv);
-
-	(* G_OBJECT_CLASS (parent_class)->finalize) (object);
-}
-
-
-static void
-class_init (EShortcutsClass *klass)
-{
-	GObjectClass *object_class;
-
-	object_class = G_OBJECT_CLASS (klass);
-	object_class->dispose  = impl_dispose;
-	object_class->finalize = impl_finalize;
-
-	parent_class = g_type_class_ref(gtk_object_get_type ());
-
-	signals[NEW_GROUP]
-		= g_signal_new ("new_group",
-				G_OBJECT_CLASS_TYPE (object_class),
-				G_SIGNAL_RUN_FIRST,
-				G_STRUCT_OFFSET (EShortcutsClass, new_group),
-				NULL, NULL,
-				e_shell_marshal_NONE__INT,
-				G_TYPE_NONE, 1,
-				G_TYPE_INT);
-
-	signals[REMOVE_GROUP]
-		= g_signal_new ("remove_group",
-				G_OBJECT_CLASS_TYPE (object_class),
-				G_SIGNAL_RUN_FIRST,
-				G_STRUCT_OFFSET (EShortcutsClass, remove_group),
-				NULL, NULL,
-				e_shell_marshal_NONE__INT,
-				G_TYPE_NONE, 1,
-				G_TYPE_INT);
-
-	signals[RENAME_GROUP]
-		= g_signal_new ("rename_group",
-				G_OBJECT_CLASS_TYPE (object_class),
-				G_SIGNAL_RUN_FIRST,
-				G_STRUCT_OFFSET (EShortcutsClass, rename_group),
-				NULL, NULL,
-				e_shell_marshal_NONE__INT_STRING,
-				G_TYPE_NONE, 2,
-				G_TYPE_INT,
-				G_TYPE_STRING);
-
-	signals[GROUP_CHANGE_ICON_SIZE]
-		= g_signal_new ("group_change_icon_size",
-				G_OBJECT_CLASS_TYPE (object_class),
-				G_SIGNAL_RUN_FIRST,
-				G_STRUCT_OFFSET (EShortcutsClass, group_change_icon_size),
-				NULL, NULL,
-				e_shell_marshal_NONE__INT_INT,
-				G_TYPE_NONE, 2,
-				G_TYPE_INT,
-				G_TYPE_INT);
-
-	signals[NEW_SHORTCUT]
-		= g_signal_new ("new_shortcut",
-				G_OBJECT_CLASS_TYPE (object_class),
-				G_SIGNAL_RUN_FIRST,
-				G_STRUCT_OFFSET (EShortcutsClass, new_shortcut),
-				NULL, NULL,
-				e_shell_marshal_NONE__INT_INT,
-				G_TYPE_NONE, 2,
-				G_TYPE_INT,
-				G_TYPE_INT);
-
-	signals[REMOVE_SHORTCUT]
-		= g_signal_new ("remove_shortcut",
-				G_OBJECT_CLASS_TYPE (object_class),
-				G_SIGNAL_RUN_FIRST,
-				G_STRUCT_OFFSET (EShortcutsClass, remove_shortcut),
-				NULL, NULL,
-				e_shell_marshal_NONE__INT_INT,
-				G_TYPE_NONE, 2,
-				G_TYPE_INT,
-				G_TYPE_INT);
-
-	signals[UPDATE_SHORTCUT]
-		= g_signal_new ("update_shortcut",
-				G_OBJECT_CLASS_TYPE (object_class),
-				G_SIGNAL_RUN_FIRST,
-				G_STRUCT_OFFSET (EShortcutsClass, update_shortcut),
-				NULL, NULL,
-				e_shell_marshal_NONE__INT_INT,
-				G_TYPE_NONE, 2,
-				G_TYPE_INT,
-				G_TYPE_INT);
-}
-
-
-static void
-init (EShortcuts *shortcuts)
-{
-	EShortcutsPrivate *priv;
-
-	priv = g_new (EShortcutsPrivate, 1);
-
-	priv->file_name      = NULL;
-	priv->num_groups     = 0;
-	priv->groups         = NULL;
-	priv->views          = NULL;
-	priv->dirty          = 0;
-	priv->save_idle_id   = 0;
-	priv->shell          = NULL;
-
-	shortcuts->priv = priv;
-}
-
-
-void
-e_shortcuts_construct (EShortcuts *shortcuts,
-		       EShell *shell)
-{
-	EShortcutsPrivate *priv;
-	EStorageSet *storage_set;
-
-	g_return_if_fail (E_IS_SHORTCUTS (shortcuts));
-	g_return_if_fail (E_IS_SHELL (shell));
-
-	GTK_OBJECT_UNSET_FLAGS (GTK_OBJECT (shortcuts), GTK_FLOATING);
-
-	priv = shortcuts->priv;
-
-	/* Don't ref it so we don't create a circular dependency.  */
-	priv->shell = shell;
-
-	storage_set = e_shell_get_storage_set (shell);
-
-	g_signal_connect_object (storage_set, "new_folder",
-				 G_CALLBACK (storage_set_new_folder_callback), shortcuts, 0);
-	g_signal_connect_object (storage_set, "updated_folder",
-				 G_CALLBACK (storage_set_updated_folder_callback), shortcuts, 0);
-}
-
-EShortcuts *
-e_shortcuts_new_from_file (EShell *shell,
-			   const char *file_name)
-{
-	EShortcuts *new;
-
-	g_return_val_if_fail (E_IS_SHELL (shell), NULL);
-	g_return_val_if_fail (file_name != NULL, NULL);
-
-	new = g_object_new (e_shortcuts_get_type (), NULL);
-	e_shortcuts_construct (new, shell);
-
-	if (! e_shortcuts_load (new, file_name))
-		new->priv->file_name = g_strdup (file_name);
-
-	return new;
-}
-
-
-int
-e_shortcuts_get_num_groups (EShortcuts *shortcuts)
-{
-	g_return_val_if_fail (shortcuts != NULL, 0);
-	g_return_val_if_fail (E_IS_SHORTCUTS (shortcuts), 0);
-
-	return shortcuts->priv->num_groups;
-}
-
-GSList *
-e_shortcuts_get_group_titles (EShortcuts *shortcuts)
-{
-	EShortcutsPrivate *priv;
-	ShortcutGroup *group;
-	GSList *list;
-	GSList *p;
-
-	g_return_val_if_fail (shortcuts != NULL, NULL);
-	g_return_val_if_fail (E_IS_SHORTCUTS (shortcuts), NULL);
-
-	priv = shortcuts->priv;
-
-	list = NULL;
-
-	for (p = priv->groups; p != NULL; p = p->next) {
-		group = (ShortcutGroup *) p->data;
-		list = g_slist_prepend (list, g_strdup (group->title));
-	}
-
-	return g_slist_reverse (list);
-}
-
-const GSList *
-e_shortcuts_get_shortcuts_in_group (EShortcuts *shortcuts,
-				    int group_num)
-{
-	EShortcutsPrivate *priv;
-	ShortcutGroup *shortcut_group;
-	GSList *shortcut_group_list_item;
-
-	priv = shortcuts->priv;
-
-	g_return_val_if_fail (shortcuts != NULL, NULL);
-	g_return_val_if_fail (E_IS_SHORTCUTS (shortcuts), NULL);
-
-	shortcut_group_list_item = g_slist_nth (priv->groups, group_num);
-	if (shortcut_group_list_item == NULL)
-		return NULL;
-
-	shortcut_group = (ShortcutGroup *) shortcut_group_list_item->data;
-
-	return shortcut_group->shortcuts;
-}
-
-
-EShell *
-e_shortcuts_get_shell (EShortcuts *shortcuts)
-{
-	g_return_val_if_fail (shortcuts != NULL, NULL);
-	g_return_val_if_fail (E_IS_SHORTCUTS (shortcuts), NULL);
-
-	return shortcuts->priv->shell;
-}
-
-
-GtkWidget *
-e_shortcuts_new_view (EShortcuts *shortcuts)
-{
-	EShortcutsPrivate *priv;
-	GtkWidget *new;
-
-	g_return_val_if_fail (shortcuts != NULL, NULL);
-	g_return_val_if_fail (E_IS_SHORTCUTS (shortcuts), NULL);
-
-	priv = shortcuts->priv;
-
-	new = e_shortcuts_view_new (shortcuts);
-	priv->views = g_slist_prepend (priv->views, new);
-
-	g_object_weak_ref (G_OBJECT (new), view_weak_notify, shortcuts);
-
-	return new;
-}
-
-
-gboolean
-e_shortcuts_load (EShortcuts *shortcuts,
-		  const char *file_name)
-{
-	EShortcutsPrivate *priv;
-	char *tmp;
-
-	g_return_val_if_fail (shortcuts != NULL, FALSE);
-	g_return_val_if_fail (E_IS_SHORTCUTS (shortcuts), FALSE);
-	g_return_val_if_fail (file_name == NULL || g_path_is_absolute (file_name), FALSE);
-
-	priv = shortcuts->priv;
-
-	if (file_name == NULL) {
-		if (priv->file_name == NULL)
-			return FALSE;
-		file_name = priv->file_name;
-	}
-
-	if (! load_shortcuts (shortcuts, file_name))
-		return FALSE;
-
-	tmp = g_strdup (file_name);
-	g_free (priv->file_name);
-	priv->file_name = tmp;
-
-	return TRUE;
-}
-
-gboolean
-e_shortcuts_save (EShortcuts *shortcuts,
-		  const char *file_name)
-{
-	EShortcutsPrivate *priv;
-	char *tmp;
-
-	g_return_val_if_fail (shortcuts != NULL, FALSE);
-	g_return_val_if_fail (E_IS_SHORTCUTS (shortcuts), FALSE);
-	g_return_val_if_fail (file_name == NULL || g_path_is_absolute (file_name), FALSE);
-
-	priv = shortcuts->priv;
-
-	if (file_name == NULL) {
-		if (priv->file_name == NULL)
-			return FALSE;
-		file_name = priv->file_name;
-	}
-
-	if (! save_shortcuts (shortcuts, file_name))
-		return FALSE;
-
-	tmp = g_strdup (file_name);
-	g_free (priv->file_name);
-	priv->file_name = tmp;
-
-	return TRUE;
-}
-
-
-const EShortcutItem *
-e_shortcuts_get_shortcut (EShortcuts *shortcuts,
-			  int group_num,
-			  int num)
-{
-	g_return_val_if_fail (shortcuts != NULL, NULL);
-	g_return_val_if_fail (E_IS_SHORTCUTS (shortcuts), NULL);
-
-	return (const EShortcutItem *) get_item (shortcuts, group_num, num);
-}
-
-
-void
-e_shortcuts_remove_shortcut (EShortcuts *shortcuts,
-			     int group_num,
-			     int num)
-{
-	EShortcutsPrivate *priv;
-	ShortcutGroup *group;
-	GSList *p;
-	EShortcutItem *item;
-
-	g_return_if_fail (shortcuts != NULL);
-	g_return_if_fail (E_IS_SHORTCUTS (shortcuts));
-
-	priv = shortcuts->priv;
-
-	p = g_slist_nth (priv->groups, group_num);
-	g_return_if_fail (p != NULL);
-
-	group = (ShortcutGroup *) p->data;
-
-	p = g_slist_nth (group->shortcuts, num);
-	g_return_if_fail (p != NULL);
-
-	g_signal_emit (shortcuts, signals[REMOVE_SHORTCUT], 0, group_num, num);
-
-	item = (EShortcutItem *) p->data;
-	shortcut_item_free (item);
-
-	group->shortcuts = g_slist_remove_link (group->shortcuts, p);
-
-	make_dirty (shortcuts);
-}
-
-void
-e_shortcuts_add_shortcut (EShortcuts *shortcuts,
-			  int group_num,
-			  int num,
-			  const char *uri,
-			  const char *name,
-			  int unread_count,
-			  const char *type,
-			  const char *custom_icon_name)
-{
-	EShortcutsPrivate *priv;
-	ShortcutGroup *group;
-	EShortcutItem *item;
-	GSList *p;
-
-	g_return_if_fail (shortcuts != NULL);
-	g_return_if_fail (E_IS_SHORTCUTS (shortcuts));
-
-	priv = shortcuts->priv;
-
-	p = g_slist_nth (priv->groups, group_num);
-	g_return_if_fail (p != NULL);
-
-	group = (ShortcutGroup *) p->data;
-
-	if (num == -1)
-		num = g_slist_length (group->shortcuts);
-
-	item = shortcut_item_new (uri, name, unread_count, type, custom_icon_name);
-
-	group->shortcuts = g_slist_insert (group->shortcuts, item, num);
-
-	g_signal_emit (shortcuts, signals[NEW_SHORTCUT], 0, group_num, num);
-
-	make_dirty (shortcuts);
-}
-
-void
-e_shortcuts_update_shortcut (EShortcuts *shortcuts,
-			     int         group_num,
-			     int         num,
-			     const char *uri,
-			     const char *name,
-			     int unread_count,
-			     const char *type,
-			     const char *custom_icon_name)
-{
-	EShortcutItem *shortcut_item;
-
-	g_return_if_fail (shortcuts != NULL);
-	g_return_if_fail (E_IS_SHORTCUTS (shortcuts));
-
-	shortcut_item = get_item (shortcuts, group_num, num);
-
-	update_shortcut_and_emit_signal (shortcuts, shortcut_item, group_num, num,
-					 uri, name, unread_count, type, custom_icon_name);
-
-	make_dirty (shortcuts);
-}
-
-
-void
-e_shortcuts_add_default_shortcuts (EShortcuts *shortcuts,
-				   int group_num)
-{
-	e_shortcuts_add_shortcut (shortcuts, group_num, -1, E_SUMMARY_URI, _("Summary"), 0, "summary", NULL);
-
-	e_shortcuts_add_shortcut (shortcuts, group_num, -1, "default:mail", _("Inbox"), 0, "mail", "inbox");
-	e_shortcuts_add_shortcut (shortcuts, group_num, -1, "default:calendar", _("Calendar"), 0, "calendar", NULL);
-	e_shortcuts_add_shortcut (shortcuts, group_num, -1, "default:tasks", _("Tasks"), 0, "tasks", NULL);
-	e_shortcuts_add_shortcut (shortcuts, group_num, -1, "default:contacts", _("Contacts"), 0, "contacts", NULL);
-}
-
-void
-e_shortcuts_add_default_group (EShortcuts *shortcuts)
-{
-	g_return_if_fail (shortcuts != NULL);
-	g_return_if_fail (E_IS_SHORTCUTS (shortcuts));
-
-	e_shortcuts_add_group (shortcuts, -1, _("Shortcuts"));
-
-	e_shortcuts_add_default_shortcuts (shortcuts, e_shortcuts_get_num_groups (shortcuts) - 1);
-}
-
-void
-e_shortcuts_remove_group (EShortcuts *shortcuts,
-			  int group_num)
-{
-	EShortcutsPrivate *priv;
-	GSList *p;
-
-	g_return_if_fail (shortcuts != NULL);
-	g_return_if_fail (E_IS_SHORTCUTS (shortcuts));
-
-	priv = shortcuts->priv;
-
-	p = g_slist_nth (priv->groups, group_num);
-	g_return_if_fail (p != NULL);
-
-	g_signal_emit (shortcuts, signals[REMOVE_GROUP], 0, group_num);
-
-	shortcut_group_free ((ShortcutGroup *) p->data);
-
-	priv->groups = g_slist_remove_link (priv->groups, p);
-	priv->num_groups --;
-
-	make_dirty (shortcuts);
-}
-
-void
-e_shortcuts_rename_group (EShortcuts *shortcuts,
-			  int group_num,
-			  const char *new_title)
-{
-	EShortcutsPrivate *priv;
-	GSList *p;
-	ShortcutGroup *group;
-
-	g_return_if_fail (shortcuts != NULL);
-	g_return_if_fail (E_IS_SHORTCUTS (shortcuts));
-
-	priv = shortcuts->priv;
-
-	p = g_slist_nth (priv->groups, group_num);
-	g_return_if_fail (p != NULL);
-
-	group = (ShortcutGroup *) p->data;
-	if (strcmp (group->title, new_title)) {
-		g_free (group->title);
-		group->title = g_strdup (new_title);
-	} else
-		return;
-
-	g_signal_emit (shortcuts, signals[RENAME_GROUP], 0, group_num, new_title);
-
-	make_dirty (shortcuts);
-}
-
-void
-e_shortcuts_add_group (EShortcuts *shortcuts,
-		       int group_num,
-		       const char *group_name)
-{
-	EShortcutsPrivate *priv;
-	ShortcutGroup *group;
-
-	g_return_if_fail (shortcuts != NULL);
-	g_return_if_fail (E_IS_SHORTCUTS (shortcuts));
-
-	priv = shortcuts->priv;
-
-	group = shortcut_group_new (group_name);
-
-	if (group_num == -1)
-		group_num = g_slist_length (priv->groups);
-
-	priv->groups = g_slist_insert (priv->groups, group, group_num);
-	priv->num_groups ++;
-
-	g_signal_emit (shortcuts, signals[NEW_GROUP], 0, group_num);
-
-	make_dirty (shortcuts);
-}
-
-
-const char *
-e_shortcuts_get_group_title (EShortcuts *shortcuts,
-			     int group_num)
-{
-	EShortcutsPrivate *priv;
-	GSList *group_element;
-	const ShortcutGroup *group;
-
-	g_return_val_if_fail (shortcuts != NULL, NULL);
-	g_return_val_if_fail (E_IS_SHORTCUTS (shortcuts), NULL);
-
-	priv = shortcuts->priv;
-
-	group_element = g_slist_nth (priv->groups, group_num);
-	if (group_element == NULL)
-		return NULL;
-
-	group = (ShortcutGroup *) group_element->data;
-
-	return group->title;
-}
-
-void
-e_shortcuts_set_group_uses_small_icons  (EShortcuts *shortcuts,
-					 int group_num,
-					 gboolean use_small_icons)
-{
-	EShortcutsPrivate *priv;
-	ShortcutGroup *group;
-	GSList *group_element;
-
-	g_return_if_fail (E_IS_SHORTCUTS (shortcuts));
-
-	priv = shortcuts->priv;
-
-	group_element = g_slist_nth (priv->groups, group_num);
-	if (group_element == NULL)
-		return;
-
-	group = (ShortcutGroup *) group_element->data;
-
-	use_small_icons = !! use_small_icons;
-	if (group->use_small_icons != use_small_icons) {
-		group->use_small_icons = use_small_icons;
-		g_signal_emit (shortcuts, signals[GROUP_CHANGE_ICON_SIZE], 0, group_num, use_small_icons);
-
-		make_dirty (shortcuts);
-	}
-}
-
-gboolean
-e_shortcuts_get_group_uses_small_icons  (EShortcuts *shortcuts,
-					 int group_num)
-{
-	EShortcutsPrivate *priv;
-	ShortcutGroup *group;
-	GSList *group_element;
-
-	g_return_val_if_fail (E_IS_SHORTCUTS (shortcuts), FALSE);
-
-	priv = shortcuts->priv;
-
-	group_element = g_slist_nth (priv->groups, group_num);
-	if (group_element == NULL)
-		return FALSE;
-
-	group = (ShortcutGroup *) group_element->data;
-	return group->use_small_icons;
-}
-
-
-void
-e_shortcuts_update_shortcuts_for_changed_uri (EShortcuts *shortcuts,
-					      const char *old_uri,
-					      const char *new_uri)
-{
-	EShortcutsPrivate *priv;
-	GSList *p;
-
-	g_return_if_fail (E_IS_SHORTCUTS (shortcuts));
-	g_return_if_fail (old_uri != NULL);
-	g_return_if_fail (new_uri != NULL);
-
-	priv = shortcuts->priv;
-
-	for (p = priv->groups; p != NULL; p = p->next) {
-		ShortcutGroup *group;
-		GSList *q;
-
-		group = (ShortcutGroup *) p->data;
-		for (q = group->shortcuts; q != NULL; q = q->next) {
-			EShortcutItem *item;
-
-			item = (EShortcutItem *) q->data;
-
-			if (strcmp (item->uri, old_uri) == 0) {
-				g_free (item->uri);
-				item->uri = g_strdup (new_uri);
-
-				make_dirty (shortcuts);
-			}
-		}
-	}
-}
-
-
-E_MAKE_TYPE (e_shortcuts, "EShortcuts", EShortcuts, class_init, init, PARENT_TYPE)
Index: shell/e-shortcuts.h
===================================================================
RCS file: shell/e-shortcuts.h
diff -N shell/e-shortcuts.h
--- shell/e-shortcuts.h	24 Sep 2002 21:01:04 -0000	1.24
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,167 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/* e-shortcuts.h
- *
- * Copyright (C) 2000, 2001 Ximian, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Ettore Perazzoli
- */
-
-#ifndef _E_SHORTCUTS_H_
-#define _E_SHORTCUTS_H_
-
-#include <gtk/gtkwidget.h>
-
-#include "e-folder-type-registry.h"
-#include "e-storage-set.h"
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-#define E_TYPE_SHORTCUTS			(e_shortcuts_get_type ())
-#define E_SHORTCUTS(obj)			(GTK_CHECK_CAST ((obj), E_TYPE_SHORTCUTS, EShortcuts))
-#define E_SHORTCUTS_CLASS(klass)		(GTK_CHECK_CLASS_CAST ((klass), E_TYPE_SHORTCUTS, EShortcutsClass))
-#define E_IS_SHORTCUTS(obj)			(GTK_CHECK_TYPE ((obj), E_TYPE_SHORTCUTS))
-#define E_IS_SHORTCUTS_CLASS(klass)		(GTK_CHECK_CLASS_TYPE ((obj), E_TYPE_SHORTCUTS))
-
-
-typedef struct _EShortcuts        EShortcuts;
-typedef struct _EShortcutsPrivate EShortcutsPrivate;
-typedef struct _EShortcutsClass   EShortcutsClass;
-
-struct _EShortcutItem {
-	/* URI of the shortcut.  */
-	char *uri;
-
-	/* Name of the shortcut.  */
-	char *name;
-
-	/* Folder type for the shortcut.  If the shortcut doesn't point to a
-	   folder, this is NULL.  */
-	char *type;
-
-	/* Custom icon for the shortcut.  If this is NULL, then the shortcut
-	   should just use the icon for the type.  */
-	char *custom_icon_name;
-
-	/* Number of unread items in the folder.  Zero if not a folder.  */
-	int unread_count;
-};
-typedef struct _EShortcutItem EShortcutItem;
-
-struct _EShortcuts {
-	GtkObject parent;
-
-	EShortcutsPrivate *priv;
-};
-
-struct _EShortcutsClass {
-	GtkObjectClass parent_class;
-
-	/* Signals.  */
-
-	void  (* new_group)               (EShortcuts *shortcuts, int group_num);
-	void  (* remove_group)     	  (EShortcuts *shortcuts, int group_num);
-	void  (* rename_group)     	  (EShortcuts *shortcuts, int group_num, const char *new_title);
-
-	void  (* group_change_icon_size)  (EShortcuts *shortcuts, int group_num, gboolean use_small_icons);
-
-	void  (* new_shortcut)     	  (EShortcuts *shortcuts, int group_num, int item_num);
-	void  (* remove_shortcut)  	  (EShortcuts *shortcuts, int group_num, int item_num);
-	void  (* update_shortcut)  	  (EShortcuts *shortcuts, int group_num, int item_num);
-};
-
-
-#include "e-shell.h"
-
-
-GtkType     e_shortcuts_get_type       (void);
-void        e_shortcuts_construct      (EShortcuts *shortcuts,
-					EShell     *shell);
-EShortcuts *e_shortcuts_new_from_file  (EShell     *shell,
-					const char *file_name);
-
-int           e_shortcuts_get_num_groups          (EShortcuts *shortcuts);
-
-GSList       *e_shortcuts_get_group_titles        (EShortcuts *shortcuts);
-const char   *e_shortcuts_get_group_title         (EShortcuts *shortcuts,
-						   int         group_num);
-const GSList *e_shortcuts_get_shortcuts_in_group  (EShortcuts *shortcuts,
-						   int         group_num);
-
-const EShortcutItem *e_shortcuts_get_shortcut  (EShortcuts *shortcuts,
-						int         group_num,
-						int         num);
-
-EShell *e_shortcuts_get_shell  (EShortcuts *shortcuts);
-
-GtkWidget *e_shortcuts_new_view  (EShortcuts *shortcuts);
-
-gboolean     e_shortcuts_load                    (EShortcuts          *shortcuts,
-						  const char          *path);
-gboolean     e_shortcuts_save                    (EShortcuts          *shortcuts,
-						  const char          *path);
-
-void  e_shortcuts_add_default_shortcuts  (EShortcuts *shortcuts,
-					  int         group_num);
-void  e_shortcuts_add_default_group      (EShortcuts *shortcuts);
-
-void  e_shortcuts_remove_shortcut    (EShortcuts *shortcuts,
-				      int         group_num,
-				      int         num);
-void  e_shortcuts_add_shortcut       (EShortcuts *shortcuts,
-				      int         group_num,
-				      int         num,
-				      const char *uri,
-				      const char *name,
-				      int unread_count,
-				      const char *type,
-				      const char *custom_icon_name);
-void  e_shortcuts_update_shortcut    (EShortcuts *shortcuts,
-				      int         group_num,
-				      int         num,
-				      const char *uri,
-				      const char *name,
-				      int unread_count,
-				      const char *type,
-				      const char *custom_icon_name);
-
-void  e_shortcuts_remove_group  (EShortcuts *shortcuts,
-				 int         group_num);
-void  e_shortcuts_add_group     (EShortcuts *shortcuts,
-				 int         group_num,
-				 const char *group_title);
-void  e_shortcuts_rename_group  (EShortcuts *shortcuts,
-				 int         group_num,
-				 const char *new_title);
-
-void      e_shortcuts_set_group_uses_small_icons  (EShortcuts *shortcuts,
-						   int         group_num,
-						   gboolean    use_small_icons);
-gboolean  e_shortcuts_get_group_uses_small_icons  (EShortcuts *shortcuts,
-						   int         group_num);
-
-void  e_shortcuts_update_shortcuts_for_changed_uri  (EShortcuts *shortcuts,
-						     const char *old_uri_,
-						     const char *new_uri);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* _E_SHORTCUTS_H_ */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]