[evolution] More code cleanup.



commit 36b9debed099b1ad0b5d6a8af792f620bf7f124a
Author: Matthew Barnes <mbarnes redhat com>
Date:   Mon Jul 26 11:15:44 2010 -0400

    More code cleanup.

 mail/e-mail-backend.c                    |    1 +
 mail/e-mail-folder-pane.c                |   69 +-----
 mail/e-mail-folder-pane.h                |    3 +-
 mail/e-mail-message-pane.c               |   75 +------
 mail/e-mail-message-pane.h               |    2 +-
 mail/e-mail-notebook-view.c              |  354 +++++++++++++-----------------
 mail/e-mail-notebook-view.h              |    4 +-
 mail/e-mail-paned-view.c                 |  332 ++++++----------------------
 mail/e-mail-paned-view.h                 |    4 +-
 mail/e-mail-reader.c                     |   10 +-
 mail/e-mail-view.c                       |  225 ++++++++++++++++----
 mail/e-mail-view.h                       |   27 +--
 mail/em-format-html.c                    |    2 +-
 mail/message-list.c                      |   23 +--
 modules/mail/e-mail-shell-content.c      |   42 +++-
 modules/mail/e-mail-shell-view-private.c |    8 +-
 modules/mail/evolution-module-mail.c     |    5 -
 17 files changed, 489 insertions(+), 697 deletions(-)
---
diff --git a/mail/e-mail-backend.c b/mail/e-mail-backend.c
index 4d2038a..b2e22e3 100644
--- a/mail/e-mail-backend.c
+++ b/mail/e-mail-backend.c
@@ -374,6 +374,7 @@ mail_backend_constructed (GObject *object)
 	EShell *shell;
 	EShellBackend *shell_backend;
 	MailFolderCache *folder_cache;
+	const gchar *data_dir;
 
 	shell_backend = E_SHELL_BACKEND (object);
 	shell = e_shell_backend_get_shell (shell_backend);
diff --git a/mail/e-mail-folder-pane.c b/mail/e-mail-folder-pane.c
index 3d9dfc2..d12cc48 100644
--- a/mail/e-mail-folder-pane.c
+++ b/mail/e-mail-folder-pane.c
@@ -49,60 +49,23 @@ struct _EMailFolderPanePrivate {
 	gint placeholder;
 };
 
-enum {
-	PROP_0,
-	PROP_PREVIEW_VISIBLE
-};
-
 G_DEFINE_TYPE (EMailFolderPane, e_mail_folder_pane, E_TYPE_MAIL_PANED_VIEW)
 
-static void
-folder_pane_set_preview_visible (EMailView *view,
-                                 gboolean preview_visible)
-{
-}
-
 static gboolean
 folder_pane_get_preview_visible (EMailView *view)
 {
-
 	return FALSE;
 }
 
 static void
-mail_folder_pane_get_property (GObject *object,
-                               guint property_id,
-                               GValue *value,
-                               GParamSpec *pspec)
-{
-	switch (property_id) {
-		case PROP_PREVIEW_VISIBLE:
-			g_value_set_boolean (
-				value,
-				FALSE);
-			return;
-
-	}
-
-	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-}
-
-static void
-mail_folder_pane_set_property (GObject *object,
-                               guint property_id,
-                               const GValue *value,
-                               GParamSpec *pspec)
+folder_pane_set_preview_visible (EMailView *view,
+                                 gboolean preview_visible)
 {
-	switch (property_id) {
-		case PROP_PREVIEW_VISIBLE:
-			return;
-	}
-
-	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+	/* Ignore the request. */
 }
 
 static guint
-mfp_open_selected_mail (EMailPanedView *view)
+mail_paned_view_open_selected_mail (EMailPanedView *view)
 {
 	GPtrArray *uids;
 	gint i;
@@ -182,27 +145,17 @@ mfp_open_selected_mail (EMailPanedView *view)
 static void
 e_mail_folder_pane_class_init (EMailFolderPaneClass *class)
 {
-	GObjectClass *object_class;
 	EMailViewClass *mail_view_class;
 	EMailPanedViewClass *mail_paned_view_class;
 
 	g_type_class_add_private (class, sizeof (EMailFolderPanePrivate));
 
-	object_class = G_OBJECT_CLASS (class);
-	object_class->set_property = mail_folder_pane_set_property;
-	object_class->get_property = mail_folder_pane_get_property;
-
 	mail_view_class = E_MAIL_VIEW_CLASS (class);
-	mail_view_class->set_preview_visible = folder_pane_set_preview_visible;
 	mail_view_class->get_preview_visible = folder_pane_get_preview_visible;
+	mail_view_class->set_preview_visible = folder_pane_set_preview_visible;
 
 	mail_paned_view_class = E_MAIL_PANED_VIEW_CLASS (class);
-	mail_paned_view_class->open_selected_mail = mfp_open_selected_mail;
-
-	g_object_class_override_property (
-		object_class,
-		PROP_PREVIEW_VISIBLE,
-		"preview-visible");
+	mail_paned_view_class->open_selected_mail = mail_paned_view_open_selected_mail;
 }
 
 static void
@@ -211,15 +164,13 @@ e_mail_folder_pane_init (EMailFolderPane *browser)
 	browser->priv = E_MAIL_FOLDER_PANE_GET_PRIVATE (browser);
 }
 
-GtkWidget *
-e_mail_folder_pane_new (EShellContent *content)
+EMailView *
+e_mail_folder_pane_new (EShellView *shell_view)
 {
-	g_return_val_if_fail (E_IS_SHELL_CONTENT (content), NULL);
+	g_return_val_if_fail (E_IS_SHELL_VIEW (shell_view), NULL);
 
 	return g_object_new (
 		E_TYPE_MAIL_FOLDER_PANE,
-		"shell-content", content,
-		"preview-visible", FALSE,
-		NULL);
+		"shell-view", shell_view, NULL);
 }
 
diff --git a/mail/e-mail-folder-pane.h b/mail/e-mail-folder-pane.h
index a7a84a5..e9d9ee0 100644
--- a/mail/e-mail-folder-pane.h
+++ b/mail/e-mail-folder-pane.h
@@ -22,7 +22,6 @@
 #ifndef E_MAIL_FOLDER_PANE_H
 #define E_MAIL_FOLDER_PANE_H
 
-#include <shell/e-shell-content.h>
 #include <mail/e-mail-paned-view.h>
 
 /* Standard GObject macros */
@@ -60,7 +59,7 @@ struct _EMailFolderPaneClass {
 };
 
 GType		e_mail_folder_pane_get_type	(void);
-GtkWidget *	e_mail_folder_pane_new		(EShellContent *content);
+EMailView *	e_mail_folder_pane_new		(EShellView *shell_view);
 
 G_END_DECLS
 
diff --git a/mail/e-mail-message-pane.c b/mail/e-mail-message-pane.c
index 8ca6802..8df46a1 100644
--- a/mail/e-mail-message-pane.c
+++ b/mail/e-mail-message-pane.c
@@ -36,46 +36,8 @@ struct _EMailMessagePanePrivate {
 	gint placeholder;
 };
 
-enum {
-	PROP_0,
-	PROP_PREVIEW_VISIBLE
-};
-
 G_DEFINE_TYPE (EMailMessagePane, e_mail_message_pane, E_TYPE_MAIL_PANED_VIEW)
 
-/* This is too trivial to put in a file.
- * It gets merged with the EMailReader UI. */
-static void
-mail_message_pane_set_property (GObject *object,
-                                guint property_id,
-                                const GValue *value,
-                                GParamSpec *pspec)
-{
-	switch (property_id) {
-		case PROP_PREVIEW_VISIBLE:
-			return;
-	}
-
-	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-}
-
-static void
-mail_message_pane_get_property (GObject *object,
-                                guint property_id,
-                                GValue *value,
-                                GParamSpec *pspec)
-{
-	switch (property_id) {
-		case PROP_PREVIEW_VISIBLE:
-			g_value_set_boolean (
-				value,
-				TRUE);
-			return;
-	}
-
-	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-}
-
 static void
 mail_message_pane_constructed (GObject *object)
 {
@@ -90,19 +52,17 @@ mail_message_pane_constructed (GObject *object)
 	e_mail_paned_view_hide_message_list_pane (E_MAIL_PANED_VIEW(object), FALSE);
 }
 
-static void
-message_pane_set_preview_visible (EMailView *view,
-                                  gboolean preview_visible)
+static gboolean
+mail_message_pane_get_preview_visible (EMailView *view)
 {
-	/* Chain up to parent's set_preview_visible() method. */
-	E_MAIL_VIEW_CLASS (e_mail_message_pane_parent_class)->
-		set_preview_visible (view, TRUE);
+	return TRUE;
 }
 
-static gboolean
-message_pane_get_preview_visible (EMailView *view)
+static void
+mail_message_pane_set_preview_visible (EMailView *view,
+                                       gboolean preview_visible)
 {
-	return TRUE;
+	/* Ignore the request. */
 }
 
 static void
@@ -114,18 +74,11 @@ e_mail_message_pane_class_init (EMailMessagePaneClass *class)
 	g_type_class_add_private (class, sizeof (EMailMessagePanePrivate));
 
 	object_class = G_OBJECT_CLASS (class);
-	object_class->set_property = mail_message_pane_set_property;
-	object_class->get_property = mail_message_pane_get_property;
 	object_class->constructed = mail_message_pane_constructed;
 
 	mail_view_class = E_MAIL_VIEW_CLASS (class);
-	mail_view_class->set_preview_visible = message_pane_set_preview_visible;
-	mail_view_class->get_preview_visible = message_pane_get_preview_visible;
-
-	g_object_class_override_property (
-		object_class,
-		PROP_PREVIEW_VISIBLE,
-		"preview-visible");
+	mail_view_class->get_preview_visible = mail_message_pane_get_preview_visible;
+	mail_view_class->set_preview_visible = mail_message_pane_set_preview_visible;
 }
 
 static void
@@ -134,14 +87,12 @@ e_mail_message_pane_init (EMailMessagePane *browser)
 	browser->priv = E_MAIL_MESSAGE_PANE_GET_PRIVATE (browser);
 }
 
-GtkWidget *
-e_mail_message_pane_new (EShellContent *content)
+EMailView *
+e_mail_message_pane_new (EShellView *shell_view)
 {
-	g_return_val_if_fail (E_IS_SHELL_CONTENT (content), NULL);
+	g_return_val_if_fail (E_IS_SHELL_VIEW (shell_view), NULL);
 
 	return g_object_new (
 		E_TYPE_MAIL_MESSAGE_PANE,
-		"shell-content", content,
-		"preview-visible", TRUE,
-		NULL);
+		"shell-view", shell_view, NULL);
 }
diff --git a/mail/e-mail-message-pane.h b/mail/e-mail-message-pane.h
index f947f79..82cee3a 100644
--- a/mail/e-mail-message-pane.h
+++ b/mail/e-mail-message-pane.h
@@ -59,7 +59,7 @@ struct _EMailMessagePaneClass {
 };
 
 GType		e_mail_message_pane_get_type	(void);
-GtkWidget *	e_mail_message_pane_new		(EShellContent *content);
+EMailView *	e_mail_message_pane_new		(EShellView *shell_view);
 
 G_END_DECLS
 
diff --git a/mail/e-mail-notebook-view.c b/mail/e-mail-notebook-view.c
index 436804d..fa6d340 100644
--- a/mail/e-mail-notebook-view.c
+++ b/mail/e-mail-notebook-view.c
@@ -70,13 +70,18 @@ enum {
 #define E_SHELL_WINDOW_ACTION_GROUP_MAIL(window) \
 	E_SHELL_WINDOW_ACTION_GROUP ((window), "mail")
 
-static EMailViewClass *parent_class;
-static GType mail_notebook_view_type;
+/* Forward Declarations */
+static void e_mail_notebook_view_reader_init (EMailReaderIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (
+	EMailNotebookView, e_mail_notebook_view, E_TYPE_MAIL_VIEW,
+	G_IMPLEMENT_INTERFACE (
+		E_TYPE_MAIL_READER, e_mail_notebook_view_reader_init))
 
 #if HAVE_CLUTTER
 static void
 mnv_set_current_tab (EMailNotebookView *view,
-		     gint page)
+                     gint page)
 {
 	ClutterAnimation *animation;
 
@@ -91,7 +96,7 @@ mnv_set_current_tab (EMailNotebookView *view,
 
 static gint
 emnv_get_page_num (EMailNotebookView *view,
-		   GtkWidget *widget)
+                   GtkWidget *widget)
 {
 	EMailNotebookViewPrivate *priv = view->priv;
 	gint i, n;
@@ -108,32 +113,45 @@ emnv_get_page_num (EMailNotebookView *view,
 }
 
 static void
-mnv_page_changed (GtkNotebook *book, GtkWidget *page,
-		  guint page_num, EMailNotebookView *view)
+mnv_page_changed (GtkNotebook *book,
+                  GtkWidget *page,
+                  guint page_num,
+                  EMailView *view)
 {
-	EMailView *mview = (EMailView *)gtk_notebook_get_nth_page (book, page_num);
-	EShellContent *content = E_MAIL_VIEW(view)->content;
-	EShellView *shell_view = e_shell_content_get_shell_view (content);
-	EShellSidebar *sidebar = e_shell_view_get_shell_sidebar (shell_view);
-	EMFolderTree *tree;
-	const gchar *uri = e_mail_reader_get_folder_uri (E_MAIL_READER(mview));
-
-	g_object_get (sidebar, "folder-tree", &tree, NULL);
+	EMailNotebookViewPrivate *priv;
+	EShellView *shell_view;
+	EShellSidebar *shell_sidebar;
+	EMFolderTree *folder_tree;
+	EMailView *mview;
+	const gchar *uri;
+
+	priv = E_MAIL_NOTEBOOK_VIEW_GET_PRIVATE (view);
+
+	shell_view = e_mail_view_get_shell_view (view);
+	shell_sidebar = e_shell_view_get_shell_sidebar (shell_view);
+
+	page = gtk_notebook_get_nth_page (book, page_num);
+	uri = e_mail_reader_get_folder_uri (E_MAIL_READER (page));
+	mview = E_MAIL_VIEW (page);
+
+	g_object_get (shell_sidebar, "folder-tree", &folder_tree, NULL);
+
 	if (uri && E_IS_MAIL_FOLDER_PANE (mview))
-		em_folder_tree_set_selected (tree, uri, FALSE);
+		em_folder_tree_set_selected (folder_tree, uri, FALSE);
 
-	if (mview != view->priv->current_view) {
-		mview->prev = view->priv->current_view;
-		view->priv->current_view = mview;
+	if (mview != priv->current_view) {
+		mview->prev = priv->current_view;
+		priv->current_view = mview;
 	}
 
-	/* For EMailReader related changes to EShellView*/
+	/* For EMailReader related changes to EShellView */
 	g_signal_emit_by_name (view, "changed");
 	g_signal_emit_by_name (view, "folder-loaded");
 
 	/* For EMailShellContent related changes */
 	g_signal_emit_by_name (view, "view-changed");
 
+	g_object_unref (folder_tree);
 }
 
 #if HAVE_CLUTTER
@@ -412,8 +430,10 @@ create_under_clutter (GtkWidget *widget, GtkWidget *paned)
 static void
 mail_notebook_view_constructed (GObject *object)
 {
-	GtkWidget *widget, *container;
 	EMailNotebookViewPrivate *priv;
+	EShellView *shell_view;
+	GtkWidget *container;
+	GtkWidget *widget;
 #if HAVE_CLUTTER
 	EMailTab *tab;
 	ClutterActor *stage, *clone;
@@ -505,18 +525,20 @@ mail_notebook_view_constructed (GObject *object)
 #endif
 
 	gtk_notebook_set_show_border ((GtkNotebook *)widget, FALSE);
-	g_signal_connect (widget, "switch-page",
-		    G_CALLBACK(mnv_page_changed), object);
 
-	priv->current_view = (EMailView *)e_mail_folder_pane_new (E_MAIL_VIEW(object)->content);
+	shell_view = e_mail_view_get_shell_view (E_MAIL_VIEW (object));
+	priv->current_view = e_mail_folder_pane_new (shell_view);
 	e_mail_view_set_preview_visible (priv->current_view, FALSE);
-	gtk_widget_show ((GtkWidget *)priv->current_view);
+	gtk_widget_show (GTK_WIDGET (priv->current_view));
 
-	gtk_notebook_append_page (priv->book, (GtkWidget *)priv->current_view,
-			create_tab_label (E_MAIL_NOTEBOOK_VIEW(object),
-				priv->current_view,
-				_("Please select a folder")));
+	gtk_notebook_append_page (
+		priv->book, GTK_WIDGET (priv->current_view),
+		create_tab_label (E_MAIL_NOTEBOOK_VIEW (object),
+		priv->current_view, _("Please select a folder")));
 
+	g_signal_connect (
+		priv->book, "switch-page",
+		G_CALLBACK (mnv_page_changed), object);
 }
 
 static void
@@ -555,27 +577,6 @@ mail_notebook_view_get_property (GObject *object,
 	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
 }
 
-static EShellSearchbar *
-mail_notebook_view_get_searchbar (EMailView *view)
-{
-	EShellView *shell_view;
-	EShellContent *shell_content;
-	GtkWidget *widget;
-
-	g_return_val_if_fail (
-		E_IS_MAIL_NOTEBOOK_VIEW (view), NULL);
-
-	shell_content = E_MAIL_VIEW (view)->content;
-	shell_view = e_shell_content_get_shell_view (shell_content);
-	widget = e_shell_view_get_searchbar (shell_view);
-
-	return E_SHELL_SEARCHBAR (widget);
-/*
-	if (!E_MAIL_NOTEBOOK_VIEW(view)->priv->current_view)
-		return NULL;
-	return e_mail_view_get_searchbar (E_MAIL_NOTEBOOK_VIEW(view)->priv->current_view); */
-}
-
 static void
 mail_notebook_view_set_search_strings (EMailView *view,
                                        GSList *search_strings)
@@ -625,20 +626,6 @@ mail_notebook_view_get_orientation (EMailView *view)
 	return e_mail_view_get_orientation (priv->current_view);
 }
 
-static void
-mail_notebook_view_set_show_deleted (EMailView *view,
-                                     gboolean show_deleted)
-{
-	EMailNotebookViewPrivate *priv;
-
-	priv = E_MAIL_NOTEBOOK_VIEW_GET_PRIVATE (view);
-
-	if (!priv->current_view)
-		return;
-
-	e_mail_view_set_show_deleted (priv->current_view, show_deleted);
-}
-
 static gboolean
 mail_notebook_view_get_show_deleted (EMailView *view)
 {
@@ -653,8 +640,8 @@ mail_notebook_view_get_show_deleted (EMailView *view)
 }
 
 static void
-mail_notebook_view_set_preview_visible (EMailView *view,
-                                        gboolean preview_visible)
+mail_notebook_view_set_show_deleted (EMailView *view,
+                                     gboolean show_deleted)
 {
 	EMailNotebookViewPrivate *priv;
 
@@ -663,7 +650,7 @@ mail_notebook_view_set_preview_visible (EMailView *view,
 	if (!priv->current_view)
 		return;
 
-	e_mail_view_set_preview_visible (priv->current_view, preview_visible);
+	e_mail_view_set_show_deleted (priv->current_view, show_deleted);
 }
 
 static gboolean
@@ -680,89 +667,28 @@ mail_notebook_view_get_preview_visible (EMailView *view)
 }
 
 static void
-mail_notebook_view_class_init (EMailNotebookViewClass *class)
-{
-	GObjectClass *object_class;
-	EMailViewClass *mail_view_class;
-
-	parent_class = g_type_class_peek_parent (class);
-	g_type_class_add_private (class, sizeof (EMailNotebookViewPrivate));
-
-	object_class = G_OBJECT_CLASS (class);
-	object_class->constructed = mail_notebook_view_constructed;
-	object_class->set_property = mail_notebook_view_set_property;
-	object_class->get_property = mail_notebook_view_get_property;
-
-	mail_view_class = E_MAIL_VIEW_CLASS (class);
-	mail_view_class->get_searchbar = mail_notebook_view_get_searchbar;
-	mail_view_class->set_search_strings = mail_notebook_view_set_search_strings;
-	mail_view_class->get_view_instance = mail_notebook_view_get_view_instance;
-	mail_view_class->update_view_instance = mail_notebook_view_update_view_instance;
-	mail_view_class->set_orientation = mail_notebook_view_set_orientation;
-	mail_view_class->get_orientation = mail_notebook_view_get_orientation;
-	mail_view_class->set_show_deleted = mail_notebook_view_set_show_deleted;
-	mail_view_class->get_show_deleted = mail_notebook_view_get_show_deleted;
-	mail_view_class->set_preview_visible = mail_notebook_view_set_preview_visible;
-	mail_view_class->get_preview_visible = mail_notebook_view_get_preview_visible;
-
-	/* Inherited from EMailReader */
-	g_object_class_override_property (
-		object_class,
-		PROP_GROUP_BY_THREADS,
-		"group-by-threads");
-/*
-	g_object_class_install_property (
-		object_class,
-		PROP_PREVIEW_VISIBLE,
-		g_param_spec_boolean (
-			"preview-visible",
-			"Preview is Visible",
-			"Whether the preview pane is visible",
-			TRUE,
-			G_PARAM_READWRITE));
-
-	g_object_class_install_property (
-		object_class,
-		PROP_SHOW_DELETED,
-		g_param_spec_boolean (
-			"show-deleted",
-			"Show Deleted",
-			NULL,
-			FALSE,
-			G_PARAM_READWRITE));
-
-	g_object_class_override_property (
-		object_class, PROP_ORIENTATION, "orientation"); */
-}
-
-static void
-mail_notebook_view_init (EMailNotebookView  *view)
+mail_notebook_view_set_preview_visible (EMailView *view,
+                                        gboolean preview_visible)
 {
-	view->priv = E_MAIL_NOTEBOOK_VIEW_GET_PRIVATE (view);
+	EMailNotebookViewPrivate *priv;
 
-	view->priv->inited = FALSE;
-	view->priv->views = g_hash_table_new (g_str_hash, g_str_equal);
-}
+	priv = E_MAIL_NOTEBOOK_VIEW_GET_PRIVATE (view);
 
-GtkWidget *
-e_mail_notebook_view_new (EShellContent *content)
-{
-	g_return_val_if_fail (E_IS_SHELL_CONTENT (content), NULL);
+	if (!priv->current_view)
+		return;
 
-	return g_object_new (
-		E_TYPE_MAIL_NOTEBOOK_VIEW,
-		"shell-content", content, NULL);
+	e_mail_view_set_preview_visible (priv->current_view, preview_visible);
 }
 
 static GtkActionGroup *
 mail_notebook_view_get_action_group (EMailReader *reader)
 {
-	EShellContent *shell_content;
+	EMailView *view;
 	EShellWindow *shell_window;
 	EShellView *shell_view;
 
-	shell_content = E_MAIL_VIEW (reader)->content;
-	shell_view = e_shell_content_get_shell_view (shell_content);
+	view = E_MAIL_VIEW (reader);
+	shell_view = e_mail_view_get_shell_view (view);
 	shell_window = e_shell_view_get_shell_window (shell_view);
 
 	return E_SHELL_WINDOW_ACTION_GROUP_MAIL (shell_window);
@@ -815,11 +741,11 @@ mail_notebook_view_get_popup_menu (EMailReader *reader)
 static EShellBackend *
 mail_notebook_view_get_shell_backend (EMailReader *reader)
 {
-	EShellContent *shell_content;
+	EMailView *view;
 	EShellView *shell_view;
 
-	shell_content = E_MAIL_VIEW (reader)->content;
-	shell_view = e_shell_content_get_shell_view (shell_content);
+	view = E_MAIL_VIEW (reader);
+	shell_view = e_mail_view_get_shell_view (view);
 
 	return e_shell_view_get_shell_backend (shell_view);
 }
@@ -827,12 +753,12 @@ mail_notebook_view_get_shell_backend (EMailReader *reader)
 static GtkWindow *
 mail_notebook_view_get_window (EMailReader *reader)
 {
-	EShellContent *shell_content;
+	EMailView *view;
 	EShellWindow *shell_window;
 	EShellView *shell_view;
 
-	shell_content = E_MAIL_VIEW (reader)->content;
-	shell_view = e_shell_content_get_shell_view (shell_content);
+	view = E_MAIL_VIEW (reader);
+	shell_view = e_mail_view_get_shell_view (view);
 	shell_window = e_shell_view_get_shell_window (shell_view);
 
 	return GTK_WINDOW (shell_window);
@@ -845,19 +771,23 @@ reconnect_changed_event (EMailReader *child, EMailReader *parent)
 }
 
 static void
-reconnect_folder_loaded_event (EMailReader *child, EMailReader *parent)
+reconnect_folder_loaded_event (EMailReader *child,
+                               EMailReader *parent)
 {
 	g_signal_emit_by_name (parent, "folder-loaded");
 }
 
 static void
-mail_netbook_view_open_mail (EMailView *view, const gchar *uid, EMailNotebookView *nview)
+mail_netbook_view_open_mail (EMailView *view,
+                             const gchar *uid,
+                             EMailNotebookView *nview)
 {
+	EMailNotebookViewPrivate *priv;
+	EShellView *shell_view;
 	const gchar *folder_uri;
 	CamelFolder *folder;
-	GtkWidget *pane;
+	EMailView *pane;
 	gint page;
-	EMailNotebookViewPrivate *priv = E_MAIL_NOTEBOOK_VIEW (nview)->priv;
 	CamelMessageInfo *info;
 	GtkWidget *preview;
 	gint pos;
@@ -867,17 +797,23 @@ mail_netbook_view_open_mail (EMailView *view, const gchar *uid, EMailNotebookVie
 	ClutterActor *clone;
 	ClutterTimeline *timeline;
 	GtkWidget *mlist;
+#endif
 
-	e_mail_tab_set_active (e_mail_tab_picker_get_tab (priv->tab_picker,
-						e_mail_tab_picker_get_current_tab (priv->tab_picker)),
-				FALSE);
+	priv = E_MAIL_NOTEBOOK_VIEW_GET_PRIVATE (nview);
+
+#if HAVE_CLUTTER
+	e_mail_tab_set_active (
+		e_mail_tab_picker_get_tab (priv->tab_picker,
+		e_mail_tab_picker_get_current_tab (priv->tab_picker)), FALSE);
 #endif
-	pos = emnv_get_page_num (nview, (GtkWidget *)priv->current_view);
-	pane = e_mail_message_pane_new (E_MAIL_VIEW(nview)->content);
-	E_MAIL_VIEW(pane)->prev = priv->current_view;
-	priv->current_view = (EMailView *)pane;
 
-	gtk_widget_show (pane);
+	shell_view = e_mail_view_get_shell_view (E_MAIL_VIEW (nview));
+	pos = emnv_get_page_num (nview, GTK_WIDGET (priv->current_view));
+	pane = e_mail_message_pane_new (shell_view);
+	pane->prev = priv->current_view;
+	priv->current_view = pane;
+
+	gtk_widget_show (GTK_WIDGET (pane));
 
 	preview = e_mail_paned_view_get_preview (E_MAIL_PANED_VIEW(pane));
 
@@ -886,11 +822,10 @@ mail_netbook_view_open_mail (EMailView *view, const gchar *uid, EMailNotebookVie
 
 	info = camel_folder_get_message_info (folder, uid);
 
-	page = gtk_notebook_insert_page (priv->book, pane,
-				create_tab_label (nview,
-				priv->current_view,
-				camel_message_info_subject(info)),
-				pos+1);
+	page = gtk_notebook_insert_page (
+		priv->book, GTK_WIDGET (pane),
+		create_tab_label (nview, priv->current_view,
+		camel_message_info_subject (info)), pos + 1);
 
 #if HAVE_CLUTTER
 	mlist = e_mail_reader_get_message_list (E_MAIL_READER(pane));
@@ -1000,8 +935,10 @@ mail_notebook_view_set_folder (EMailReader *reader,
 
 		if (priv->inited) {
 			EMailView *old_view = priv->current_view;
+			EShellView *shell_view;
 
-			priv->current_view = (EMailView *)e_mail_folder_pane_new (E_MAIL_VIEW(reader)->content);
+			shell_view = e_mail_view_get_shell_view (E_MAIL_VIEW (reader));
+			priv->current_view = e_mail_folder_pane_new (shell_view);
 			gtk_widget_show ((GtkWidget *)priv->current_view);
 			priv->current_view->prev = old_view;
 			page = gtk_notebook_append_page (
@@ -1082,14 +1019,15 @@ mail_notebook_view_set_folder (EMailReader *reader,
 #endif
 		e_mail_reader_set_folder (E_MAIL_READER(priv->current_view), folder, folder_uri);
 		g_hash_table_insert (priv->views, g_strdup(folder_uri), priv->current_view);
-		g_signal_connect ( E_MAIL_READER(priv->current_view), "changed",
-				   G_CALLBACK (reconnect_changed_event),
-				   reader);
-		g_signal_connect ( E_MAIL_READER (priv->current_view), "folder-loaded",
-				   G_CALLBACK (reconnect_folder_loaded_event),
-				   reader);
-		g_signal_connect ( priv->current_view, "open-mail",
-				   G_CALLBACK (mail_netbook_view_open_mail), reader);
+		g_signal_connect (
+			priv->current_view, "changed",
+			G_CALLBACK (reconnect_changed_event), reader);
+		g_signal_connect (
+			priv->current_view, "folder-loaded",
+			G_CALLBACK (reconnect_folder_loaded_event), reader);
+		g_signal_connect (
+			priv->current_view, "open-mail",
+			G_CALLBACK (mail_netbook_view_open_mail), reader);
 	}
 }
 
@@ -1113,7 +1051,38 @@ mail_notebook_view_open_selected_mail (EMailReader *reader)
 }
 
 static void
-mail_notebook_view_reader_init (EMailReaderIface *iface)
+e_mail_notebook_view_class_init (EMailNotebookViewClass *class)
+{
+	GObjectClass *object_class;
+	EMailViewClass *mail_view_class;
+
+	g_type_class_add_private (class, sizeof (EMailNotebookViewPrivate));
+
+	object_class = G_OBJECT_CLASS (class);
+	object_class->constructed = mail_notebook_view_constructed;
+	object_class->set_property = mail_notebook_view_set_property;
+	object_class->get_property = mail_notebook_view_get_property;
+
+	mail_view_class = E_MAIL_VIEW_CLASS (class);
+	mail_view_class->set_search_strings = mail_notebook_view_set_search_strings;
+	mail_view_class->get_view_instance = mail_notebook_view_get_view_instance;
+	mail_view_class->update_view_instance = mail_notebook_view_update_view_instance;
+	mail_view_class->set_orientation = mail_notebook_view_set_orientation;
+	mail_view_class->get_orientation = mail_notebook_view_get_orientation;
+	mail_view_class->get_show_deleted = mail_notebook_view_get_show_deleted;
+	mail_view_class->set_show_deleted = mail_notebook_view_set_show_deleted;
+	mail_view_class->get_preview_visible = mail_notebook_view_get_preview_visible;
+	mail_view_class->set_preview_visible = mail_notebook_view_set_preview_visible;
+
+	/* Inherited from EMailReader */
+	g_object_class_override_property (
+		object_class,
+		PROP_GROUP_BY_THREADS,
+		"group-by-threads");
+}
+
+static void
+e_mail_notebook_view_reader_init (EMailReaderIface *iface)
 {
 	iface->get_action_group = mail_notebook_view_get_action_group;
 	iface->get_formatter = mail_notebook_view_get_formatter;
@@ -1127,40 +1096,21 @@ mail_notebook_view_reader_init (EMailReaderIface *iface)
 	iface->open_selected_mail = mail_notebook_view_open_selected_mail;
 }
 
-GType
-e_mail_notebook_view_get_type (void)
+static void
+e_mail_notebook_view_init (EMailNotebookView  *view)
 {
-	return mail_notebook_view_type;
+	view->priv = E_MAIL_NOTEBOOK_VIEW_GET_PRIVATE (view);
+
+	view->priv->inited = FALSE;
+	view->priv->views = g_hash_table_new (g_str_hash, g_str_equal);
 }
 
-void
-e_mail_notebook_view_register_type (GTypeModule *type_module)
+GtkWidget *
+e_mail_notebook_view_new (EShellView *shell_view)
 {
-	static const GTypeInfo type_info = {
-		sizeof (EMailNotebookViewClass),
-		(GBaseInitFunc) NULL,
-		(GBaseFinalizeFunc) NULL,
-		(GClassInitFunc) mail_notebook_view_class_init,
-		(GClassFinalizeFunc) NULL,
-		NULL,  /* class_data */
-		sizeof (EMailNotebookView),
-		0,     /* n_preallocs */
-		(GInstanceInitFunc) mail_notebook_view_init,
-		NULL   /* value_table */
-	};
-
-	static const GInterfaceInfo reader_info = {
-		(GInterfaceInitFunc) mail_notebook_view_reader_init,
-		(GInterfaceFinalizeFunc) NULL,
-		NULL  /* interface_data */
-	};
-
-	mail_notebook_view_type = g_type_module_register_type (
-		type_module, E_TYPE_MAIL_VIEW,
-		"EMailNotebookView", &type_info, 0);
-
-	g_type_module_add_interface (
-		type_module, mail_notebook_view_type,
-		E_TYPE_MAIL_READER, &reader_info);
-}
+	g_return_val_if_fail (E_IS_SHELL_VIEW (shell_view), NULL);
 
+	return g_object_new (
+		E_TYPE_MAIL_NOTEBOOK_VIEW,
+		"shell-view", shell_view, NULL);
+}
diff --git a/mail/e-mail-notebook-view.h b/mail/e-mail-notebook-view.h
index cdc341e..04b0bd4 100644
--- a/mail/e-mail-notebook-view.h
+++ b/mail/e-mail-notebook-view.h
@@ -62,9 +62,7 @@ struct _EMailNotebookViewClass {
 };
 
 GType		e_mail_notebook_view_get_type	(void);
-void		e_mail_notebook_view_register_type
-						(GTypeModule *type_module);
-GtkWidget *	e_mail_notebook_view_new	(EShellContent *content);
+GtkWidget *	e_mail_notebook_view_new	(EShellView *shell_view);
 EShellSearchbar *
 		e_mail_notebook_view_get_searchbar
 						(EMailNotebookView *view);
diff --git a/mail/e-mail-paned-view.c b/mail/e-mail-paned-view.c
index cf13ac5..342dc39 100644
--- a/mail/e-mail-paned-view.c
+++ b/mail/e-mail-paned-view.c
@@ -63,7 +63,6 @@ struct _EMailPanedViewPrivate {
 
 	EMFormatHTMLDisplay *formatter;
 	GalViewInstance *view_instance;
-	GtkOrientation orientation;
 
 	/* ETable scrolling hack */
 	gdouble default_scrollbar_position;
@@ -72,40 +71,37 @@ struct _EMailPanedViewPrivate {
 
 	/* Signal handler IDs */
 	guint message_list_built_id;
-
-	guint preview_visible	: 1;
-	guint show_deleted	: 1;
 };
 
 enum {
 	PROP_0,
-	PROP_GROUP_BY_THREADS,
-	PROP_ORIENTATION,
-	PROP_PREVIEW_VISIBLE,
-	PROP_SHOW_DELETED
+	PROP_GROUP_BY_THREADS
 };
 
 #define STATE_KEY_GROUP_BY_THREADS	"GroupByThreads"
 #define STATE_KEY_SELECTED_MESSAGE	"SelectedMessage"
 #define STATE_KEY_PREVIEW_VISIBLE	"PreviewVisible"
 
-static EMailViewClass *parent_class;
-static GType mail_paned_view_type;
+/* Forward Declarations */
+static void e_mail_paned_view_reader_init (EMailReaderIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (
+	EMailPanedView, e_mail_paned_view, E_TYPE_MAIL_VIEW,
+	G_IMPLEMENT_INTERFACE (
+		E_TYPE_MAIL_READER, e_mail_paned_view_reader_init))
 
 static void
-mail_paned_view_save_boolean (EMailPanedView *view,
+mail_paned_view_save_boolean (EMailView *view,
                               const gchar *key,
                               gboolean value)
 {
 	EShellView *shell_view;
-	EShellContent *shell_content;
 	EMailReader *reader;
 	GKeyFile *key_file;
 	const gchar *folder_uri;
 	gchar *group_name;
 
-	shell_content = E_MAIL_VIEW (view)->content;
-	shell_view = e_shell_content_get_shell_view (shell_content);
+	shell_view = e_mail_view_get_shell_view (view);
 	key_file = e_shell_view_get_state_key_file (shell_view);
 
 	reader = E_MAIL_READER (view);
@@ -122,21 +118,21 @@ mail_paned_view_save_boolean (EMailPanedView *view,
 }
 
 static void
-mail_paned_view_message_list_built_cb (EMailPanedView *view,
+mail_paned_view_message_list_built_cb (EMailView *view,
                                        MessageList *message_list)
 {
-	EMailPanedViewPrivate *priv = view->priv;
+	EMailPanedViewPrivate *priv;
 	EShellView *shell_view;
 	EShellWindow *shell_window;
-	EShellContent *shell_content;
 	GKeyFile *key_file;
 
+	priv = E_MAIL_PANED_VIEW_GET_PRIVATE (view);
+
 	g_signal_handler_disconnect (
 		message_list, priv->message_list_built_id);
 	priv->message_list_built_id = 0;
 
-	shell_content = E_MAIL_VIEW (view)->content;
-	shell_view = e_shell_content_get_shell_view (shell_content);
+	shell_view = e_mail_view_get_shell_view (view);
 	shell_window = e_shell_view_get_shell_window (shell_view);
 
 	key_file = e_shell_view_get_state_key_file (shell_view);
@@ -170,11 +166,10 @@ mail_paned_view_message_list_built_cb (EMailPanedView *view,
 }
 
 static void
-mail_paned_view_message_selected_cb (EMailPanedView *view,
+mail_paned_view_message_selected_cb (EMailView *view,
                                      const gchar *message_uid,
                                      MessageList *message_list)
 {
-	EShellContent *shell_content;
 	EShellView *shell_view;
 	GKeyFile *key_file;
 	const gchar *folder_uri;
@@ -189,8 +184,7 @@ mail_paned_view_message_selected_cb (EMailPanedView *view,
 	if (folder_uri == NULL)
 		return;
 
-	shell_content = E_MAIL_VIEW (view)->content;
-	shell_view = e_shell_content_get_shell_view (shell_content);
+	shell_view = e_mail_view_get_shell_view (view);
 	key_file = e_shell_view_get_state_key_file (shell_view);
 
 	key = STATE_KEY_SELECTED_MESSAGE;
@@ -216,7 +210,7 @@ mail_paned_view_restore_state_cb (EShellWindow *shell_window,
 	GObject *object;
 	const gchar *key;
 
-	priv = view->priv;
+	priv = E_MAIL_PANED_VIEW_GET_PRIVATE (view);
 
 	/* Bind GObject properties to GConf keys. */
 
@@ -255,7 +249,7 @@ mail_paned_view_notify_group_by_threads_cb (EMailReader *reader)
 	group_by_threads = e_mail_reader_get_group_by_threads (reader);
 
 	mail_paned_view_save_boolean (
-		E_MAIL_PANED_VIEW (reader),
+		E_MAIL_VIEW (reader),
 		STATE_KEY_GROUP_BY_THREADS, group_by_threads);
 }
 
@@ -271,24 +265,6 @@ mail_paned_view_set_property (GObject *object,
 				E_MAIL_READER (object),
 				g_value_get_boolean (value));
 			return;
-
-		case PROP_ORIENTATION:
-			e_mail_view_set_orientation (
-				E_MAIL_VIEW (object),
-				g_value_get_enum (value));
-			return;
-
-		case PROP_PREVIEW_VISIBLE:
-			e_mail_view_set_preview_visible (
-				E_MAIL_VIEW  (object),
-				g_value_get_boolean (value));
-			return;
-
-		case PROP_SHOW_DELETED:
-			e_mail_view_set_show_deleted (
-				E_MAIL_VIEW (object),
-				g_value_get_boolean (value));
-			return;
 	}
 
 	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -307,27 +283,6 @@ mail_paned_view_get_property (GObject *object,
 				e_mail_reader_get_group_by_threads (
 				E_MAIL_READER (object)));
 			return;
-
-		case PROP_ORIENTATION:
-			g_value_set_enum (
-				value,
-				e_mail_view_get_orientation (
-				E_MAIL_VIEW (object)));
-			return;
-
-		case PROP_PREVIEW_VISIBLE:
-			g_value_set_boolean (
-				value,
-				e_mail_view_get_preview_visible (
-				E_MAIL_VIEW (object)));
-			return;
-
-		case PROP_SHOW_DELETED:
-			g_value_set_boolean (
-				value,
-				e_mail_view_get_show_deleted (
-				E_MAIL_VIEW (object)));
-			return;
 	}
 
 	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -338,7 +293,7 @@ mail_paned_view_dispose (GObject *object)
 {
 	EMailPanedViewPrivate *priv;
 
-	priv = E_MAIL_PANED_VIEW (object)->priv;
+	priv = E_MAIL_PANED_VIEW_GET_PRIVATE (object);
 
 	if (priv->paned != NULL) {
 		g_object_unref (priv->paned);
@@ -371,18 +326,18 @@ mail_paned_view_dispose (GObject *object)
 	}
 
 	/* Chain up to parent's dispose() method. */
-	G_OBJECT_CLASS (parent_class)->dispose (object);
+	G_OBJECT_CLASS (e_mail_paned_view_parent_class)->dispose (object);
 }
 
 static GtkActionGroup *
 mail_paned_view_get_action_group (EMailReader *reader)
 {
-	EShellContent *shell_content;
-	EShellWindow *shell_window;
+	EMailView *view;
 	EShellView *shell_view;
+	EShellWindow *shell_window;
 
-	shell_content = E_MAIL_VIEW (reader)->content;
-	shell_view = e_shell_content_get_shell_view (shell_content);
+	view = E_MAIL_VIEW (reader);
+	shell_view = e_mail_view_get_shell_view (view);
 	shell_window = e_shell_view_get_shell_window (shell_view);
 
 	return E_SHELL_WINDOW_ACTION_GROUP_MAIL (shell_window);
@@ -393,7 +348,7 @@ mail_paned_view_get_formatter (EMailReader *reader)
 {
 	EMailPanedViewPrivate *priv;
 
-	priv =  E_MAIL_PANED_VIEW (reader)->priv;
+	priv = E_MAIL_PANED_VIEW_GET_PRIVATE (reader);
 
 	return EM_FORMAT_HTML (priv->formatter);
 }
@@ -409,7 +364,7 @@ mail_paned_view_get_message_list (EMailReader *reader)
 {
 	EMailPanedViewPrivate *priv;
 
-	priv = E_MAIL_PANED_VIEW (reader)->priv;
+	priv = E_MAIL_PANED_VIEW_GET_PRIVATE (reader);
 
 	return priv->message_list;
 }
@@ -417,14 +372,14 @@ mail_paned_view_get_message_list (EMailReader *reader)
 static GtkMenu *
 mail_paned_view_get_popup_menu (EMailReader *reader)
 {
+	EMailView *view;
 	EShellView *shell_view;
 	EShellWindow *shell_window;
-	EShellContent *shell_content;
 	GtkUIManager *ui_manager;
 	GtkWidget *widget;
 
-	shell_content = E_MAIL_VIEW (reader)->content;
-	shell_view = e_shell_content_get_shell_view (shell_content);
+	view = E_MAIL_VIEW (reader);
+	shell_view = e_mail_view_get_shell_view (view);
 	shell_window = e_shell_view_get_shell_window (shell_view);
 
 	ui_manager = e_shell_window_get_ui_manager (shell_window);
@@ -436,11 +391,11 @@ mail_paned_view_get_popup_menu (EMailReader *reader)
 static EShellBackend *
 mail_paned_view_get_shell_backend (EMailReader *reader)
 {
-	EShellContent *shell_content;
+	EMailView *view;
 	EShellView *shell_view;
 
-	shell_content = E_MAIL_VIEW (reader)->content;
-	shell_view = e_shell_content_get_shell_view (shell_content);
+	view = E_MAIL_VIEW (reader);
+	shell_view = e_mail_view_get_shell_view (view);
 
 	return e_shell_view_get_shell_backend (shell_view);
 }
@@ -448,12 +403,12 @@ mail_paned_view_get_shell_backend (EMailReader *reader)
 static GtkWindow *
 mail_paned_view_get_window (EMailReader *reader)
 {
-	EShellContent *shell_content;
-	EShellWindow *shell_window;
+	EMailView *view;
 	EShellView *shell_view;
+	EShellWindow *shell_window;
 
-	shell_content = E_MAIL_VIEW (reader)->content;
-	shell_view = e_shell_content_get_shell_view (shell_content);
+	view = E_MAIL_VIEW (reader);
+	shell_view = e_mail_view_get_shell_view (view);
 	shell_window = e_shell_view_get_shell_window (shell_view);
 
 	return GTK_WINDOW (shell_window);
@@ -461,15 +416,15 @@ mail_paned_view_get_window (EMailReader *reader)
 
 static void
 mail_paned_view_set_folder (EMailReader *reader,
-                               CamelFolder *folder,
-                               const gchar *folder_uri)
+                            CamelFolder *folder,
+                            const gchar *folder_uri)
 {
+	EMailPanedViewPrivate *priv;
+	EMailView *view;
 	EShell *shell;
 	EShellView *shell_view;
 	EShellWindow *shell_window;
-	EShellContent *shell_content;
 	EShellSettings *shell_settings;
-	EMailPanedViewPrivate *priv;
 	EMailReaderIface *default_iface;
 	GtkWidget *message_list;
 	GKeyFile *key_file;
@@ -478,10 +433,10 @@ mail_paned_view_set_folder (EMailReader *reader,
 	gboolean value;
 	GError *error = NULL;
 
-	priv = E_MAIL_PANED_VIEW (reader)->priv;
+	priv = E_MAIL_PANED_VIEW_GET_PRIVATE (reader);
 
-	shell_content = E_MAIL_VIEW (reader)->content;
-	shell_view = e_shell_content_get_shell_view (shell_content);
+	view = E_MAIL_VIEW (reader);
+	shell_view = e_mail_view_get_shell_view (view);
 	shell_window = e_shell_view_get_shell_window (shell_view);
 
 	shell = e_shell_window_get_shell (shell_window);
@@ -553,7 +508,7 @@ mail_paned_view_show_search_bar (EMailReader *reader)
 {
 	EMailPanedViewPrivate *priv;
 
-	priv = E_MAIL_PANED_VIEW (reader)->priv;
+	priv = E_MAIL_PANED_VIEW_GET_PRIVATE (reader);
 
 	gtk_widget_show (priv->search_bar);
 }
@@ -561,10 +516,6 @@ mail_paned_view_show_search_bar (EMailReader *reader)
 static guint
 mail_paned_view_reader_open_selected_mail (EMailReader *reader)
 {
-	EMailPanedViewPrivate *priv;
-
-	priv = E_MAIL_PANED_VIEW (reader)->priv;
-
 	return E_MAIL_PANED_VIEW_CLASS (G_OBJECT_GET_CLASS (reader))->open_selected_mail (E_MAIL_PANED_VIEW (reader));
 }
 
@@ -572,22 +523,22 @@ static void
 mail_paned_view_constructed (GObject *object)
 {
 	EMailPanedViewPrivate *priv;
-	EShellContent *shell_content;
 	EShellBackend *shell_backend;
 	EShellWindow *shell_window;
 	EShellView *shell_view;
 	ESearchBar *search_bar;
 	EMailReader *reader;
+	EMailView *view;
 	GtkWidget *message_list;
 	GtkWidget *container;
 	GtkWidget *widget;
 	EWebView *web_view;
 
-	priv = E_MAIL_PANED_VIEW (object)->priv;
+	priv = E_MAIL_PANED_VIEW_GET_PRIVATE (object);
 	priv->formatter = em_format_html_display_new ();
 
-	shell_content = E_MAIL_VIEW (object)->content;
-	shell_view = e_shell_content_get_shell_view (shell_content);
+	view = E_MAIL_VIEW (object);
+	shell_view = e_mail_view_get_shell_view (view);
 	shell_window = e_shell_view_get_shell_window (shell_view);
 	shell_backend = e_shell_view_get_shell_backend (shell_view);
 
@@ -666,20 +617,10 @@ mail_paned_view_constructed (GObject *object)
 		object);
 
 	e_mail_reader_connect_headers (reader);
-}
-
-static EShellSearchbar *
-mail_paned_view_get_searchbar (EMailView *view)
-{
-	EShellView *shell_view;
-	EShellContent *shell_content;
-	GtkWidget *widget;
 
-	shell_content = view->content;
-	shell_view = e_shell_content_get_shell_view (shell_content);
-	widget = e_shell_view_get_searchbar (shell_view);
-
-	return E_SHELL_SEARCHBAR (widget);
+	/* Do this after creating the message list.  Our
+	 * set_preview_visible() method relies on it. */
+	e_mail_view_set_preview_visible (view, TRUE);
 }
 
 static void
@@ -723,7 +664,6 @@ mail_paned_view_update_view_instance (EMailView *view)
 	EMailPanedViewPrivate *priv;
 	EMailReader *reader;
 	EShell *shell;
-	EShellContent *shell_content;
 	EShellView *shell_view;
 	EShellWindow *shell_window;
 	EShellViewClass *shell_view_class;
@@ -740,8 +680,7 @@ mail_paned_view_update_view_instance (EMailView *view)
 
 	priv = E_MAIL_PANED_VIEW_GET_PRIVATE (view);
 
-	shell_content = view->content;
-	shell_view = e_shell_content_get_shell_view (shell_content);
+	shell_view = e_mail_view_get_shell_view (view);
 	shell_view_class = E_SHELL_VIEW_GET_CLASS (shell_view);
 	view_collection = shell_view_class->view_collection;
 
@@ -873,63 +812,10 @@ mail_paned_view_update_view_instance (EMailView *view)
 }
 
 static void
-mail_paned_view_set_orientation (EMailView *view,
-                                 GtkOrientation orientation)
-{
-	EMailPanedViewPrivate *priv;
-
-	priv = E_MAIL_PANED_VIEW_GET_PRIVATE (view);
-
-	priv->orientation = orientation;
-
-	g_object_notify (G_OBJECT (view), "orientation");
-
-	e_mail_view_update_view_instance (view);
-}
-
-static GtkOrientation
-mail_paned_view_get_orientation (EMailView *view)
-{
-	EMailPanedViewPrivate *priv;
-
-	priv = E_MAIL_PANED_VIEW_GET_PRIVATE (view);
-
-	return priv->orientation;
-}
-
-static void
-mail_paned_view_set_show_deleted (EMailView *view,
-                                  gboolean show_deleted)
-{
-	EMailPanedViewPrivate *priv;
-
-	priv = E_MAIL_PANED_VIEW_GET_PRIVATE (view);
-
-	priv->show_deleted = show_deleted;
-
-	g_object_notify (G_OBJECT (view), "show-deleted");
-}
-
-static gboolean
-mail_paned_view_get_show_deleted (EMailView *view)
-{
-	EMailPanedViewPrivate *priv;
-
-	priv = E_MAIL_PANED_VIEW_GET_PRIVATE (view);
-
-	return priv->show_deleted;
-}
-
-static void
 mail_paned_view_set_preview_visible (EMailView *view,
                                      gboolean preview_visible)
 {
-	EMailPanedViewPrivate *priv;
-
-	priv = E_MAIL_PANED_VIEW_GET_PRIVATE (view);
-
-	if (preview_visible == priv->preview_visible)
-		return;
+	EMailViewClass *parent_class;
 
 	/* If we're showing the preview, tell EMailReader to reload the
 	 * selected message.  This should force it to download the full
@@ -947,23 +833,13 @@ mail_paned_view_set_preview_visible (EMailView *view,
 			e_mail_reader_set_message (reader, cursor_uid);
 	}
 
-	priv->preview_visible = preview_visible;
-
 	mail_paned_view_save_boolean (
-		E_MAIL_PANED_VIEW (view),
+		E_MAIL_VIEW (view),
 		STATE_KEY_PREVIEW_VISIBLE, preview_visible);
 
-	g_object_notify (G_OBJECT (view), "preview-visible");
-}
-
-static gboolean
-mail_paned_view_get_preview_visible (EMailView *view)
-{
-	EMailPanedViewPrivate *priv;
-
-	priv = E_MAIL_PANED_VIEW_GET_PRIVATE (view);
-
-	return priv->preview_visible;
+	/* Chain up to parent's set_preview_visible() method. */
+	parent_class = E_MAIL_VIEW_CLASS (e_mail_paned_view_parent_class);
+	parent_class->set_preview_visible (view, preview_visible);
 }
 
 static guint
@@ -973,12 +849,11 @@ mail_paned_view_open_selected_mail (EMailPanedView *view)
 }
 
 static void
-mail_paned_view_class_init (EMailPanedViewClass *class)
+e_mail_paned_view_class_init (EMailPanedViewClass *class)
 {
 	GObjectClass *object_class;
 	EMailViewClass *mail_view_class;
 
-	parent_class = g_type_class_peek_parent (class);
 	g_type_class_add_private (class, sizeof (EMailPanedViewPrivate));
 
 	object_class = G_OBJECT_CLASS (class);
@@ -988,17 +863,11 @@ mail_paned_view_class_init (EMailPanedViewClass *class)
 	object_class->get_property = mail_paned_view_get_property;
 
 	mail_view_class = E_MAIL_VIEW_CLASS (class);
-	mail_view_class->get_searchbar = mail_paned_view_get_searchbar;
 	mail_view_class->set_search_strings = mail_paned_view_set_search_strings;
 	mail_view_class->get_view_instance = mail_paned_view_get_view_instance;
 	mail_view_class->update_view_instance = mail_paned_view_update_view_instance;
 
-	mail_view_class->set_orientation = mail_paned_view_set_orientation;
-	mail_view_class->get_orientation = mail_paned_view_get_orientation;
-	mail_view_class->set_show_deleted = mail_paned_view_set_show_deleted;
-	mail_view_class->get_show_deleted = mail_paned_view_get_show_deleted;
 	mail_view_class->set_preview_visible = mail_paned_view_set_preview_visible;
-	mail_view_class->get_preview_visible = mail_paned_view_get_preview_visible;
 
 	class->open_selected_mail = mail_paned_view_open_selected_mail;
 
@@ -1007,33 +876,10 @@ mail_paned_view_class_init (EMailPanedViewClass *class)
 		object_class,
 		PROP_GROUP_BY_THREADS,
 		"group-by-threads");
-
-	g_object_class_install_property (
-		object_class,
-		PROP_PREVIEW_VISIBLE,
-		g_param_spec_boolean (
-			"preview-visible",
-			"Preview is Visible",
-			"Whether the preview pane is visible",
-			TRUE,
-			G_PARAM_READWRITE));
-
-	g_object_class_install_property (
-		object_class,
-		PROP_SHOW_DELETED,
-		g_param_spec_boolean (
-			"show-deleted",
-			"Show Deleted",
-			NULL,
-			FALSE,
-			G_PARAM_READWRITE));
-
-	g_object_class_override_property (
-		object_class, PROP_ORIENTATION, "orientation");
 }
 
 static void
-mail_paned_view_reader_init (EMailReaderIface *iface)
+e_mail_paned_view_reader_init (EMailReaderIface *iface)
 {
 	iface->get_action_group = mail_paned_view_get_action_group;
 	iface->get_formatter = mail_paned_view_get_formatter;
@@ -1048,73 +894,24 @@ mail_paned_view_reader_init (EMailReaderIface *iface)
 }
 
 static void
-mail_paned_view_init (EMailPanedView *view)
+e_mail_paned_view_init (EMailPanedView *view)
 {
 	view->priv = E_MAIL_PANED_VIEW_GET_PRIVATE (view);
 
-	view->priv->preview_visible = TRUE;
-
 	g_signal_connect (
 		view, "notify::group-by-threads",
 		G_CALLBACK (mail_paned_view_notify_group_by_threads_cb),
 		NULL);
 }
 
-GType
-e_mail_paned_view_get_type (void)
-{
-	return mail_paned_view_type;
-}
-
-void
-e_mail_paned_view_register_type (GTypeModule *type_module)
-{
-	static const GTypeInfo type_info = {
-		sizeof (EMailPanedViewClass),
-		(GBaseInitFunc) NULL,
-		(GBaseFinalizeFunc) NULL,
-		(GClassInitFunc) mail_paned_view_class_init,
-		(GClassFinalizeFunc) NULL,
-		NULL,  /* class_data */
-		sizeof (EMailPanedView),
-		0,     /* n_preallocs */
-		(GInstanceInitFunc) mail_paned_view_init,
-		NULL   /* value_table */
-	};
-#if 0
-	static const GInterfaceInfo orientable_info = {
-		(GInterfaceInitFunc) NULL,
-		(GInterfaceFinalizeFunc) NULL,
-		NULL  /* interface_data */
-	};
-#endif
-	static const GInterfaceInfo reader_info = {
-		(GInterfaceInitFunc) mail_paned_view_reader_init,
-		(GInterfaceFinalizeFunc) NULL,
-		NULL  /* interface_data */
-	};
-
-	mail_paned_view_type = g_type_module_register_type (
-		type_module, E_TYPE_MAIL_VIEW,
-		"EMailPanedView", &type_info, 0);
-#if 0
-	g_type_module_add_interface (
-		type_module, mail_paned_view_type,
-		GTK_TYPE_ORIENTABLE, &orientable_info);
-#endif
-	g_type_module_add_interface (
-		type_module, mail_paned_view_type,
-		E_TYPE_MAIL_READER, &reader_info);
-}
-
 GtkWidget *
-e_mail_paned_view_new (EShellContent *content)
+e_mail_paned_view_new (EShellView *shell_view)
 {
-	g_return_val_if_fail (E_IS_SHELL_CONTENT (content), NULL);
+	g_return_val_if_fail (E_IS_SHELL_VIEW (shell_view), NULL);
 
 	return g_object_new (
 		E_TYPE_MAIL_PANED_VIEW,
-		"shell-content", content, NULL);
+		"shell-view", shell_view, NULL);
 }
 
 void
@@ -1127,7 +924,6 @@ e_mail_paned_view_hide_message_list_pane (EMailPanedView *view,
 		gtk_widget_show (view->priv->scrolled_window);
 	else
 		gtk_widget_hide (view->priv->scrolled_window);
-
 }
 
 GtkWidget *
diff --git a/mail/e-mail-paned-view.h b/mail/e-mail-paned-view.h
index 09d2299..9be60a8 100644
--- a/mail/e-mail-paned-view.h
+++ b/mail/e-mail-paned-view.h
@@ -25,7 +25,6 @@
 
 #include <mail/e-mail-view.h>
 
-#include <shell/e-shell-content.h>
 #include <shell/e-shell-searchbar.h>
 #include <shell/e-shell-view.h>
 
@@ -68,8 +67,7 @@ struct _EMailPanedViewClass {
 };
 
 GType		e_mail_paned_view_get_type	(void);
-void		e_mail_paned_view_register_type	(GTypeModule *type_module);
-GtkWidget *	e_mail_paned_view_new		(EShellContent *content);
+GtkWidget *	e_mail_paned_view_new		(EShellView *shell_view);
 void		e_mail_paned_view_hide_message_list_pane
 						(EMailPanedView *view,
 						 gboolean visible);
diff --git a/mail/e-mail-reader.c b/mail/e-mail-reader.c
index adf56fa..ff6245e 100644
--- a/mail/e-mail-reader.c
+++ b/mail/e-mail-reader.c
@@ -686,15 +686,17 @@ action_mail_next_cb (GtkAction *action,
 	mask  = 0;
 
 	message_list = e_mail_reader_get_message_list (reader);
+
 #if HAVE_CLUTTER
-	actor = g_object_get_data ((GObject *)message_list, "preview-actor");
-	if (actor) {
+	actor = g_object_get_data (G_OBJECT (message_list), "preview-actor");
+	if (actor != NULL) {
 		clutter_actor_set_opacity (actor, 0);
 		clutter_actor_animate (
 			actor, CLUTTER_EASE_OUT_SINE,
 			500, "opacity", 255, NULL);
 	}
 #endif
+
 	message_list_select (
 		MESSAGE_LIST (message_list), direction, flags, mask);
 }
@@ -2190,8 +2192,8 @@ mail_reader_message_selected_timeout_cb (EMailReader *reader)
 			string = g_strdup_printf (
 				_("Retrieving message '%s'"), cursor_uid);
 #if HAVE_CLUTTER
-		if (!e_shell_get_express_mode(e_shell_get_default()))
-			e_web_view_load_string (web_view, string);
+			if (!e_shell_get_express_mode (e_shell_get_default ()))
+				e_web_view_load_string (web_view, string);
 #else
 			e_web_view_load_string (web_view, string);
 #endif
diff --git a/mail/e-mail-view.c b/mail/e-mail-view.c
index a3a642a..909f38b 100644
--- a/mail/e-mail-view.c
+++ b/mail/e-mail-view.c
@@ -33,7 +33,11 @@
 	((obj), E_TYPE_MAIL_VIEW, EMailViewPrivate))
 
 struct _EMailViewPrivate {
-	gint placeholder;
+	EShellView *shell_view;
+	GtkOrientation orientation;
+
+	guint preview_visible : 1;
+	guint show_deleted    : 1;
 };
 
 enum {
@@ -45,7 +49,10 @@ enum {
 
 enum {
 	PROP_0,
-	PROP_SHELL_VIEW
+	PROP_ORIENTATION,
+	PROP_PREVIEW_VISIBLE,
+	PROP_SHELL_VIEW,
+	PROP_SHOW_DELETED
 };
 
 static guint signals[LAST_SIGNAL];
@@ -53,15 +60,44 @@ static guint signals[LAST_SIGNAL];
 G_DEFINE_TYPE (EMailView, e_mail_view, GTK_TYPE_VBOX)
 
 static void
+mail_view_set_shell_view (EMailView *view,
+                          EShellView *shell_view)
+{
+	g_return_if_fail (E_IS_SHELL_VIEW (shell_view));
+	g_return_if_fail (view->priv->shell_view == NULL);
+
+	view->priv->shell_view = g_object_ref (shell_view);
+}
+
+static void
 mail_view_set_property (GObject *object,
                         guint property_id,
                         const GValue *value,
                         GParamSpec *pspec)
 {
 	switch (property_id) {
+		case PROP_ORIENTATION:
+			e_mail_view_set_orientation (
+				E_MAIL_VIEW (object),
+				g_value_get_enum (value));
+			return;
+
+		case PROP_PREVIEW_VISIBLE:
+			e_mail_view_set_preview_visible (
+				E_MAIL_VIEW (object),
+				g_value_get_boolean (value));
+			return;
+
 		case PROP_SHELL_VIEW:
-			E_MAIL_VIEW(object)->content =
-				g_value_get_object (value);
+			mail_view_set_shell_view (
+				E_MAIL_VIEW (object),
+				g_value_get_object (value));
+			return;
+
+		case PROP_SHOW_DELETED:
+			e_mail_view_set_show_deleted (
+				E_MAIL_VIEW (object),
+				g_value_get_boolean (value));
 			return;
 	}
 
@@ -75,9 +111,28 @@ mail_view_get_property (GObject *object,
                         GParamSpec *pspec)
 {
 	switch (property_id) {
+		case PROP_ORIENTATION:
+			g_value_set_enum (
+				value, e_mail_view_get_orientation (
+				E_MAIL_VIEW (object)));
+			return;
+
+		case PROP_PREVIEW_VISIBLE:
+			g_value_set_boolean (
+				value, e_mail_view_get_preview_visible (
+				E_MAIL_VIEW (object)));
+			return;
+
 		case PROP_SHELL_VIEW:
 			g_value_set_object (
-				value, E_MAIL_VIEW(object)->content);
+				value, e_mail_view_get_shell_view (
+				E_MAIL_VIEW (object)));
+			return;
+
+		case PROP_SHOW_DELETED:
+			g_value_set_boolean (
+				value, e_mail_view_get_show_deleted (
+				E_MAIL_VIEW (object)));
 			return;
 	}
 
@@ -85,6 +140,69 @@ mail_view_get_property (GObject *object,
 }
 
 static void
+mail_view_dispose (GObject *object)
+{
+	EMailViewPrivate *priv;
+
+	priv = E_MAIL_VIEW_GET_PRIVATE (object);
+
+	if (priv->shell_view != NULL) {
+		g_object_unref (priv->shell_view);
+		priv->shell_view = NULL;
+	}
+
+	/* Chain up to parent's dispose() method. */
+	G_OBJECT_CLASS (e_mail_view_parent_class)->dispose (object);
+}
+
+static GtkOrientation
+mail_view_get_orientation (EMailView *view)
+{
+	return view->priv->orientation;
+}
+
+static void
+mail_view_set_orientation (EMailView *view,
+                           GtkOrientation orientation)
+{
+	view->priv->orientation = orientation;
+
+	g_object_notify (G_OBJECT (view), "orientation");
+
+	e_mail_view_update_view_instance (view);
+}
+
+static gboolean
+mail_view_get_preview_visible (EMailView *view)
+{
+	return view->priv->preview_visible;
+}
+
+static void
+mail_view_set_preview_visible (EMailView *view,
+                               gboolean preview_visible)
+{
+	view->priv->preview_visible = preview_visible;
+
+	g_object_notify (G_OBJECT (view), "preview-visible");
+}
+
+static gboolean
+mail_view_get_show_deleted (EMailView *view)
+{
+	return view->priv->show_deleted;
+}
+
+static void
+mail_view_set_show_deleted (EMailView *view,
+                            gboolean show_deleted)
+{
+	view->priv->show_deleted = show_deleted;
+
+	g_object_notify (G_OBJECT (view), "show-deleted");
+}
+
+static void
 e_mail_view_class_init (EMailViewClass *class)
 {
 	GObjectClass *object_class;
@@ -94,6 +212,14 @@ e_mail_view_class_init (EMailViewClass *class)
 	object_class = G_OBJECT_CLASS (class);
 	object_class->set_property = mail_view_set_property;
 	object_class->get_property = mail_view_get_property;
+	object_class->dispose = mail_view_dispose;
+
+	class->get_orientation = mail_view_get_orientation;
+	class->set_orientation = mail_view_set_orientation;
+	class->get_preview_visible = mail_view_get_preview_visible;
+	class->set_preview_visible = mail_view_set_preview_visible;
+	class->get_show_deleted = mail_view_get_show_deleted;
+	class->set_show_deleted = mail_view_set_show_deleted;
 
 	signals[PANE_CLOSE] = g_signal_new (
 		"pane-close",
@@ -122,21 +248,47 @@ e_mail_view_class_init (EMailViewClass *class)
 		g_cclosure_marshal_VOID__STRING,
 		G_TYPE_NONE, 1, G_TYPE_STRING);
 
-	/**
-	 * EMailView:shell-content
-	 *
-	 * The #EShellContent to which the widget belongs.
-	 **/
+	g_object_class_install_property (
+		object_class,
+		PROP_ORIENTATION,
+		g_param_spec_enum (
+			"orientation",
+			"Orientation",
+			NULL,
+			GTK_TYPE_ORIENTATION,
+			GTK_ORIENTATION_HORIZONTAL,
+			G_PARAM_READWRITE));
+
+	g_object_class_install_property (
+		object_class,
+		PROP_PREVIEW_VISIBLE,
+		g_param_spec_boolean (
+			"preview-visible",
+			"Preview Visible",
+			NULL,
+			FALSE,
+			G_PARAM_READWRITE));
+
 	g_object_class_install_property (
 		object_class,
 		PROP_SHELL_VIEW,
 		g_param_spec_object (
-			"shell-content",
+			"shell-view",
+			"Shell View",
 			NULL,
-			NULL,
-			E_TYPE_SHELL_CONTENT,
+			E_TYPE_SHELL_VIEW,
 			G_PARAM_READWRITE |
 			G_PARAM_CONSTRUCT_ONLY));
+
+	g_object_class_install_property (
+		object_class,
+		PROP_SHOW_DELETED,
+		g_param_spec_boolean (
+			"show-deleted",
+			"Show Deleted",
+			NULL,
+			FALSE,
+			G_PARAM_READWRITE));
 }
 
 static void
@@ -145,6 +297,14 @@ e_mail_view_init (EMailView *view)
 	view->priv = E_MAIL_VIEW_GET_PRIVATE (view);
 }
 
+EShellView *
+e_mail_view_get_shell_view (EMailView *view)
+{
+	g_return_val_if_fail (E_IS_MAIL_VIEW (view), NULL);
+
+	return view->priv->shell_view;
+}
+
 void
 e_mail_view_update_view_instance (EMailView *view)
 {
@@ -185,17 +345,17 @@ e_mail_view_set_search_strings (EMailView *view,
 	class->set_search_strings (view, search_strings);
 }
 
-EShellSearchbar *
-e_mail_view_get_searchbar (EMailView *view)
+GtkOrientation
+e_mail_view_get_orientation (EMailView *view)
 {
 	EMailViewClass *class;
 
-	g_return_val_if_fail (E_IS_MAIL_VIEW (view), NULL);
+	g_return_val_if_fail (E_IS_MAIL_VIEW (view), 0);
 
 	class = E_MAIL_VIEW_GET_CLASS (view);
-	g_return_val_if_fail (class->get_searchbar != NULL, NULL);
+	g_return_val_if_fail (class->get_orientation != NULL, 0);
 
-	return class->get_searchbar (view);
+	return class->get_orientation (view);
 }
 
 void
@@ -212,17 +372,17 @@ e_mail_view_set_orientation (EMailView *view,
 	class->set_orientation (view, orientation);
 }
 
-GtkOrientation
-e_mail_view_get_orientation (EMailView *view)
+gboolean
+e_mail_view_get_preview_visible (EMailView *view)
 {
 	EMailViewClass *class;
 
-	g_return_val_if_fail (E_IS_MAIL_VIEW (view), 0);
+	g_return_val_if_fail (E_IS_MAIL_VIEW (view), FALSE);
 
 	class = E_MAIL_VIEW_GET_CLASS (view);
-	g_return_val_if_fail (class->get_orientation != NULL, 0);
+	g_return_val_if_fail (class->get_preview_visible != NULL, FALSE);
 
-	return class->get_orientation (view);
+	return class->get_preview_visible (view);
 }
 
 void
@@ -240,16 +400,16 @@ e_mail_view_set_preview_visible (EMailView *view,
 }
 
 gboolean
-e_mail_view_get_preview_visible (EMailView *view)
+e_mail_view_get_show_deleted (EMailView *view)
 {
 	EMailViewClass *class;
 
 	g_return_val_if_fail (E_IS_MAIL_VIEW (view), FALSE);
 
 	class = E_MAIL_VIEW_GET_CLASS (view);
-	g_return_val_if_fail (class->get_preview_visible != NULL, FALSE);
+	g_return_val_if_fail (class->get_show_deleted != NULL, FALSE);
 
-	return class->get_preview_visible (view);
+	return class->get_show_deleted (view);
 }
 
 void
@@ -265,16 +425,3 @@ e_mail_view_set_show_deleted (EMailView *view,
 
 	class->set_show_deleted (view, show_deleted);
 }
-
-gboolean
-e_mail_view_get_show_deleted (EMailView *view)
-{
-	EMailViewClass *class;
-
-	g_return_val_if_fail (E_IS_MAIL_VIEW (view), FALSE);
-
-	class = E_MAIL_VIEW_GET_CLASS (view);
-	g_return_val_if_fail (class->get_show_deleted != NULL, FALSE);
-
-	return class->get_show_deleted (view);
-}
diff --git a/mail/e-mail-view.h b/mail/e-mail-view.h
index 5c6e6a4..da4e5e2 100644
--- a/mail/e-mail-view.h
+++ b/mail/e-mail-view.h
@@ -20,12 +20,12 @@
  *
  */
 
-#ifndef _E_MAIL_VIEW_H_
-#define _E_MAIL_VIEW_H_
+#ifndef E_MAIL_VIEW_H
+#define E_MAIL_VIEW_H
 
-#include <shell/e-shell-content.h>
+#include <shell/e-shell-view.h>
 #include <shell/e-shell-searchbar.h>
-#include "widgets/menus/gal-view-instance.h"
+#include <menus/gal-view-instance.h>
 
 /* Standard GObject macros */
 #define E_TYPE_MAIL_VIEW \
@@ -54,39 +54,38 @@ typedef struct _EMailViewPrivate EMailViewPrivate;
 
 struct _EMailView {
 	GtkVBox parent;
-
 	EMailViewPrivate *priv;
-        EShellContent *content;
 	EMailView *prev;
 };
 
 struct _EMailViewClass {
 	GtkVBoxClass parent_class;
 
+	/* Signals */
 	void		(*pane_close)		(EMailView *view);
 	void		(*view_changed)		(EMailView *view);
 	void		(*open_mail)		(EMailView *view,
-						 const gchar *);
+						 const gchar *uid);
 
-	EShellSearchbar *
-			(*get_searchbar)	(EMailView *view);
+	/* Methods */
 	void		(*set_search_strings)	(EMailView *view,
 						 GSList *search_strings);
 	GalViewInstance *
 			(*get_view_instance)	(EMailView *view);
 	void		(*update_view_instance)	(EMailView *view);
+	GtkOrientation	(*get_orientation)	(EMailView *view);
 	void		(*set_orientation)	(EMailView *view,
 						 GtkOrientation orientation);
-	GtkOrientation	(*get_orientation)	(EMailView *view);
+	gboolean	(*get_preview_visible)	(EMailView *view);
 	void		(*set_preview_visible)	(EMailView *view,
 						 gboolean visible);
-	gboolean	(*get_preview_visible)	(EMailView *view);
+	gboolean	(*get_show_deleted)	(EMailView *view);
 	void		(*set_show_deleted)	(EMailView *view,
 						 gboolean show_deleted);
-	gboolean	(*get_show_deleted)	(EMailView *view);
 };
 
 GType		e_mail_view_get_type		(void);
+EShellView *	e_mail_view_get_shell_view	(EMailView *view);
 void		e_mail_view_update_view_instance(EMailView *view);
 GalViewInstance *
 		e_mail_view_get_view_instance	(EMailView *view);
@@ -98,11 +97,9 @@ GtkOrientation	e_mail_view_get_orientation	(EMailView *);
 void		e_mail_view_set_preview_visible	(EMailView *view,
 						 gboolean visible);
 gboolean	e_mail_view_get_preview_visible	(EMailView *view);
+gboolean	e_mail_view_get_show_deleted	(EMailView *view);
 void		e_mail_view_set_show_deleted	(EMailView *view,
 						 gboolean show_deleted);
-gboolean	e_mail_view_get_show_deleted	(EMailView *view);
-EShellSearchbar *
-		e_mail_view_get_searchbar	(EMailView *view);
 
 G_END_DECLS
 
diff --git a/mail/em-format-html.c b/mail/em-format-html.c
index 302d5af..a7e4c03 100644
--- a/mail/em-format-html.c
+++ b/mail/em-format-html.c
@@ -50,7 +50,7 @@
 #include "e-util/e-extensible.h"
 #include "misc/e-web-view.h"
 
-#include "shell/e-shell.h"
+#include <shell/e-shell.h>
 
 #include <gtkhtml/gtkhtml.h>
 #include <gtkhtml/gtkhtml-stream.h>
diff --git a/mail/message-list.c b/mail/message-list.c
index 0a2a5d4..8296ea8 100644
--- a/mail/message-list.c
+++ b/mail/message-list.c
@@ -4120,20 +4120,6 @@ message_list_set_hidedeleted (MessageList *ml, gboolean hidedeleted)
 	}
 }
 
-#if HAVE_CLUTTER
-static void
-on_timeline_started (ClutterTimeline *timeline, ClutterActor *actor)
-{
-	clutter_actor_show(actor);
-}
-
-static void
-on_timeline_stopped (ClutterTimeline *timeline, ClutterActor *actor)
-{
-	clutter_actor_hide(actor);
-}
-#endif
-
 void
 message_list_set_search (MessageList *ml, const gchar *search)
 {
@@ -4175,9 +4161,12 @@ message_list_set_search (MessageList *ml, const gchar *search)
 			clutter_behaviour_apply (behaviour, texture);
 			clutter_timeline_set_loop (ml->priv->timeline, TRUE);
 
-			g_signal_connect(ml->priv->timeline, "started", G_CALLBACK(on_timeline_started), texture);
-			g_signal_connect(ml->priv->timeline, "paused", G_CALLBACK(on_timeline_stopped), texture);
-			//g_signal_connect(ml->priv->timeline, "completed", G_CALLBACK(on_timeline_stopped), texture);
+			g_signal_connect_swapped (
+				ml->priv->timeline, "started",
+				G_CALLBACK (clutter_actor_show), texture);
+			g_signal_connect (
+				ml->priv->timeline, "paused",
+				G_CALLBACK (clutter_actor_hide), texture);
 
 			clutter_timeline_pause (ml->priv->timeline);
 			clutter_timeline_stop (ml->priv->timeline);
diff --git a/modules/mail/e-mail-shell-content.c b/modules/mail/e-mail-shell-content.c
index 6e5168c..7a410ba 100644
--- a/modules/mail/e-mail-shell-content.c
+++ b/modules/mail/e-mail-shell-content.c
@@ -89,12 +89,15 @@ reconnect_folder_loaded_event (EMailReader *child, EMailReader *parent)
 }
 
 static void
-msc_view_changed (EMailView *view, EMailShellContent *content)
+mail_shell_content_view_changed_cb (EMailView *view,
+                                    EMailShellContent *content)
 {
+	g_object_freeze_notify (G_OBJECT (content));
 	g_object_notify (G_OBJECT (content), "group-by-threads");
 	g_object_notify (G_OBJECT (content), "show-deleted");
 	g_object_notify (G_OBJECT (content), "preview-visible");
 	g_object_notify (G_OBJECT (content), "orientation");
+	g_object_thaw_notify (G_OBJECT (content));
 }
 
 static void
@@ -123,19 +126,24 @@ mail_shell_content_constructed (GObject *object)
 	container = GTK_WIDGET (object);
 
 	if (e_shell_get_express_mode(e_shell_get_default ())) {
-		widget = e_mail_notebook_view_new (E_SHELL_CONTENT(object));
-		g_signal_connect (widget, "view-changed", G_CALLBACK(msc_view_changed), object);
+		widget = e_mail_notebook_view_new (shell_view);
+		g_signal_connect (
+			widget, "view-changed",
+			G_CALLBACK (mail_shell_content_view_changed_cb),
+			object);
 	} else
-		widget = e_mail_paned_view_new (E_SHELL_CONTENT(object));
+		widget = e_mail_paned_view_new (shell_view);
+
 	E_MAIL_SHELL_CONTENT(object)->view = (EMailView *)widget;
 	gtk_container_add (GTK_CONTAINER (container), widget);
 	gtk_widget_show (widget);
-	g_signal_connect ( E_MAIL_READER(widget), "changed",
-			   G_CALLBACK (reconnect_changed_event),
-			   object);
-	g_signal_connect ( E_MAIL_READER (widget), "folder-loaded",
-			   G_CALLBACK (reconnect_folder_loaded_event),
-			   object);
+
+	g_signal_connect (
+		widget, "changed",
+		G_CALLBACK (reconnect_changed_event), object);
+	g_signal_connect (
+		widget, "folder-loaded",
+		G_CALLBACK (reconnect_folder_loaded_event), object);
 
 }
 
@@ -422,7 +430,6 @@ e_mail_shell_content_register_type (GTypeModule *type_module)
 	g_type_module_add_interface (
 		type_module, mail_shell_content_type,
 		GTK_TYPE_ORIENTABLE, &orientable_info);
-
 }
 
 GtkWidget *
@@ -438,7 +445,18 @@ e_mail_shell_content_new (EShellView *shell_view)
 EShellSearchbar *
 e_mail_shell_content_get_searchbar (EMailShellContent *mail_shell_content)
 {
-	return e_mail_view_get_searchbar (mail_shell_content->view);
+	GtkWidget *searchbar;
+	EShellView *shell_view;
+	EShellContent *shell_content;
+
+	g_return_val_if_fail (
+		E_IS_MAIL_SHELL_CONTENT (mail_shell_content), NULL);
+
+	shell_content = E_SHELL_CONTENT (mail_shell_content);
+	shell_view = e_shell_content_get_shell_view (shell_content);
+	searchbar = e_shell_view_get_searchbar (shell_view);
+
+	return E_SHELL_SEARCHBAR (searchbar);
 }
 
 void
diff --git a/modules/mail/e-mail-shell-view-private.c b/modules/mail/e-mail-shell-view-private.c
index 75a272e..d113228 100644
--- a/modules/mail/e-mail-shell-view-private.c
+++ b/modules/mail/e-mail-shell-view-private.c
@@ -319,11 +319,11 @@ mail_shell_view_reader_changed_cb (EMailShellView *mail_shell_view,
 	e_mail_shell_view_update_sidebar (mail_shell_view);
 
 	/* Connect if its not connected already */
-	if (g_signal_handler_find (message_list, G_SIGNAL_MATCH_FUNC,
-				0, 0, NULL,
-				mail_shell_view_message_list_key_press_cb,
-				NULL))
+	if (g_signal_handler_find (
+		message_list, G_SIGNAL_MATCH_FUNC, 0, 0, NULL,
+		mail_shell_view_message_list_key_press_cb, NULL))
 		return;
+
 	g_signal_connect_swapped (
 		message_list, "key-press",
 		G_CALLBACK (mail_shell_view_message_list_key_press_cb),
diff --git a/modules/mail/evolution-module-mail.c b/modules/mail/evolution-module-mail.c
index cc4e8f4..9e97445 100644
--- a/modules/mail/evolution-module-mail.c
+++ b/modules/mail/evolution-module-mail.c
@@ -33,9 +33,6 @@
 #include "e-mail-config-format-html.h"
 #include "e-mail-config-web-view.h"
 
-#include "mail/e-mail-paned-view.h"
-#include "mail/e-mail-notebook-view.h"
-
 /* Module Entry Points */
 void e_module_load (GTypeModule *type_module);
 void e_module_unload (GTypeModule *type_module);
@@ -54,8 +51,6 @@ e_module_load (GTypeModule *type_module)
 
 	e_mail_shell_backend_register_type (type_module);
 	e_mail_shell_content_register_type (type_module);
-	e_mail_paned_view_register_type (type_module);
-	e_mail_notebook_view_register_type (type_module);
 	e_mail_shell_sidebar_register_type (type_module);
 	e_mail_shell_view_register_type (type_module);
 



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