aboutsummaryrefslogtreecommitdiffstats
path: root/mail/e-mail-message-pane.c
diff options
context:
space:
mode:
authorSrinivasa Ragavan <sragavan@gnome.org>2010-07-14 16:17:41 +0800
committerMatthew Barnes <mbarnes@redhat.com>2010-07-26 09:29:59 +0800
commitb9564c4d01c08c976e01256b308e3f2891c6e164 (patch)
tree90999088a74fb9f7f7d4064af0a0431b412ca85c /mail/e-mail-message-pane.c
parent75de89ef04f0bd69fe5d33919e281bdb8c30bd9e (diff)
downloadgsoc2013-evolution-b9564c4d01c08c976e01256b308e3f2891c6e164.tar
gsoc2013-evolution-b9564c4d01c08c976e01256b308e3f2891c6e164.tar.gz
gsoc2013-evolution-b9564c4d01c08c976e01256b308e3f2891c6e164.tar.bz2
gsoc2013-evolution-b9564c4d01c08c976e01256b308e3f2891c6e164.tar.lz
gsoc2013-evolution-b9564c4d01c08c976e01256b308e3f2891c6e164.tar.xz
gsoc2013-evolution-b9564c4d01c08c976e01256b308e3f2891c6e164.tar.zst
gsoc2013-evolution-b9564c4d01c08c976e01256b308e3f2891c6e164.zip
Add folder pane for tabbed browser.
Diffstat (limited to 'mail/e-mail-message-pane.c')
-rw-r--r--mail/e-mail-message-pane.c782
1 files changed, 30 insertions, 752 deletions
diff --git a/mail/e-mail-message-pane.c b/mail/e-mail-message-pane.c
index 85a3e9e30b..0f3488dccb 100644
--- a/mail/e-mail-message-pane.c
+++ b/mail/e-mail-message-pane.c
@@ -24,323 +24,28 @@
#include <string.h>
#include <glib/gi18n.h>
-#include "e-util/e-util.h"
-#include "e-util/e-plugin-ui.h"
#include "e-util/gconf-bridge.h"
-#include "shell/e-shell.h"
-#include "shell/e-shell-utils.h"
-#include "widgets/misc/e-popup-action.h"
-#include "widgets/misc/e-preview-pane.h"
#include "mail/e-mail-reader.h"
-#include "mail/e-mail-reader-utils.h"
-#include "mail/em-folder-tree-model.h"
-#include "mail/em-format-html-display.h"
-#include "mail/message-list.h"
#define e_mail_message_pane_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE \
- ((obj), E_TYPe_mail_message_pane, EMailMessagePanePrivate))
+ ((obj), E_TYPE_MAIL_MESSAGE_PANE, EMailMessagePanePrivate))
struct _EMailMessagePanePrivate {
- GtkUIManager *ui_manager;
- EFocusTracker *focus_tracker;
- EShellBackend *shell_backend;
- GtkActionGroup *action_group;
- EMFormatHTMLDisplay *formatter;
-
- GtkWidget *main_menu;
- GtkWidget *main_toolbar;
- GtkWidget *message_list;
- GtkWidget *search_bar;
- GtkWidget *statusbar;
-
- guint show_deleted : 1;
+ int fo;
};
enum {
PROP_0,
- PROP_FOCUS_TRACKER,
- PROP_GROUP_BY_THREADS,
- PROP_SHELL_BACKEND,
- PROP_SHOW_DELETED,
- PROP_UI_MANAGER
+ PROP_PREVIEW_VISIBLE
};
static gpointer parent_class;
/* This is too trivial to put in a file.
* It gets merged with the EMailReader UI. */
-static const gchar *ui =
-"<ui>"
-" <menubar name='main-menu'>"
-" <menu action='file-menu'>"
-" <placeholder name='file-actions'/>"
-" <placeholder name='print-actions'/>"
-" <separator/>"
-" <menuitem action='close'/>"
-" </menu>"
-" <menu action='edit-menu'>"
-" <placeholder name='selection-actions'>"
-" <menuitem action='cut-clipboard'/>"
-" <menuitem action='copy-clipboard'/>"
-" <menuitem action='paste-clipboard'/>"
-" <separator/>"
-" <menuitem action='select-all'/>"
-" </placeholder>"
-" </menu>"
-" </menubar>"
-"</ui>";
-
-static void
-action_close_cb (GtkAction *action,
- EMailMessagePane *browser)
-{
- e_mail_message_pane_close (browser);
-}
-
-static GtkActionEntry mail_message_pane_entries[] = {
-
- { "close",
- GTK_STOCK_CLOSE,
- NULL,
- NULL,
- N_("Close this window"),
- G_CALLBACK (action_close_cb) },
-
- { "copy-clipboard",
- GTK_STOCK_COPY,
- NULL,
- NULL,
- N_("Copy the selection"),
- NULL }, /* Handled by EFocusTracker */
-
- { "cut-clipboard",
- GTK_STOCK_CUT,
- NULL,
- NULL,
- N_("Cut the selection"),
- NULL }, /* Handled by EFocusTracker */
-
- { "paste-clipboard",
- GTK_STOCK_PASTE,
- NULL,
- NULL,
- N_("Paste the clipboard"),
- NULL }, /* Handled by EFocusTracker */
-
- { "select-all",
- GTK_STOCK_SELECT_ALL,
- NULL,
- NULL,
- N_("Select all text"),
- NULL }, /* Handled by EFocusTracker */
-
- /*** Menus ***/
-
- { "file-menu",
- NULL,
- N_("_File"),
- NULL,
- NULL,
- NULL },
-
- { "edit-menu",
- NULL,
- N_("_Edit"),
- NULL,
- NULL,
- NULL },
-
- { "view-menu",
- NULL,
- N_("_View"),
- NULL,
- NULL,
- NULL }
-};
-
-static EPopupActionEntry mail_message_pane_popup_entries[] = {
-
- { "popup-copy-clipboard",
- NULL,
- "copy-clipboard" }
-};
-
-static void
-mail_message_pane_menu_item_select_cb (EMailMessagePane *browser,
- GtkWidget *widget)
-{
- GtkAction *action;
- GtkActivatable *activatable;
- GtkStatusbar *statusbar;
- const gchar *tooltip;
- guint context_id;
- gpointer data;
-
- activatable = GTK_ACTIVATABLE (widget);
- action = gtk_activatable_get_related_action (activatable);
- tooltip = gtk_action_get_tooltip (action);
-
- data = g_object_get_data (G_OBJECT (widget), "context-id");
- context_id = GPOINTER_TO_UINT (data);
-
- if (tooltip == NULL)
- return;
-
- statusbar = GTK_STATUSBAR (browser->priv->statusbar);
- gtk_statusbar_push (statusbar, context_id, tooltip);
-}
-
-static void
-mail_message_pane_menu_item_deselect_cb (EMailMessagePane *browser,
- GtkWidget *menu_item)
-{
- GtkStatusbar *statusbar;
- guint context_id;
- gpointer data;
-
- data = g_object_get_data (G_OBJECT (menu_item), "context-id");
- context_id = GPOINTER_TO_UINT (data);
-
- statusbar = GTK_STATUSBAR (browser->priv->statusbar);
- gtk_statusbar_pop (statusbar, context_id);
-}
-
-static void
-mail_message_pane_connect_proxy_cb (EMailMessagePane *browser,
- GtkAction *action,
- GtkWidget *proxy)
-{
- GtkStatusbar *statusbar;
- guint context_id;
-
- if (!GTK_IS_MENU_ITEM (proxy))
- return;
-
- statusbar = GTK_STATUSBAR (browser->priv->statusbar);
- context_id = gtk_statusbar_get_context_id (statusbar, G_STRFUNC);
-
- g_object_set_data (
- G_OBJECT (proxy), "context-id",
- GUINT_TO_POINTER (context_id));
-
- g_signal_connect_swapped (
- proxy, "select",
- G_CALLBACK (mail_message_pane_menu_item_select_cb), browser);
-
- g_signal_connect_swapped (
- proxy, "deselect",
- G_CALLBACK (mail_message_pane_menu_item_deselect_cb), browser);
-}
-
-static void
-mail_message_pane_message_selected_cb (EMailMessagePane *browser,
- const gchar *uid)
-{
- EMFormatHTML *formatter;
- CamelMessageInfo *info;
- CamelFolder *folder;
- EMailReader *reader;
- EWebView *web_view;
- const gchar *title;
-
- if (uid == NULL)
- return;
-
- reader = E_MAIL_READER (browser);
- folder = e_mail_reader_get_folder (reader);
- formatter = e_mail_reader_get_formatter (reader);
- web_view = em_format_html_get_web_view (formatter);
-
- info = camel_folder_get_message_info (folder, uid);
-
- if (info == NULL)
- return;
-
- title = camel_message_info_subject (info);
- if (title == NULL || *title == '\0')
- title = _("(No Subject)");
-
- gtk_window_set_title (GTK_WINDOW (browser), title);
- gtk_widget_grab_focus (GTK_WIDGET (web_view));
-
- camel_folder_free_message_info (folder, info);
-}
-
-static gboolean
-close_on_idle_cb (gpointer browser)
-{
- e_mail_message_pane_close (browser);
- return FALSE;
-}
-
-static void
-mail_message_pane_message_list_built_cb (EMailMessagePane *browser,
- MessageList *message_list)
-{
- g_return_if_fail (E_IS_MAIL_MESSAGE_PANE (browser));
- g_return_if_fail (IS_MESSAGE_LIST (message_list));
-
- if (!message_list_count (message_list))
- g_idle_add (close_on_idle_cb, browser);
-}
-
-static gboolean
-mail_message_pane_popup_event_cb (EMailMessagePane *browser,
- GdkEventButton *event,
- const gchar *uri)
-{
- EMailReader *reader;
- GtkMenu *menu;
-
- if (uri != NULL)
- return FALSE;
-
- reader = E_MAIL_READER (browser);
- menu = e_mail_reader_get_popup_menu (reader);
-
- e_mail_reader_update_actions (reader);
-
- if (event == NULL)
- gtk_menu_popup (
- menu, NULL, NULL, NULL, NULL,
- 0, gtk_get_current_event_time ());
- else
- gtk_menu_popup (
- menu, NULL, NULL, NULL, NULL,
- event->button, event->time);
-
- return TRUE;
-}
-
-static void
-mail_message_pane_status_message_cb (EMailMessagePane *browser,
- const gchar *status_message)
-{
- GtkStatusbar *statusbar;
- guint context_id;
-
- statusbar = GTK_STATUSBAR (browser->priv->statusbar);
- context_id = gtk_statusbar_get_context_id (statusbar, G_STRFUNC);
-
- /* Always pop first. This prevents messages from piling up. */
- gtk_statusbar_pop (statusbar, context_id);
-
- if (status_message != NULL && *status_message != '\0')
- gtk_statusbar_push (statusbar, context_id, status_message);
-}
-
-static void
-mail_message_pane_set_shell_backend (EMailMessagePane *browser,
- EShellBackend *shell_backend)
-{
- g_return_if_fail (browser->priv->shell_backend == NULL);
-
- browser->priv->shell_backend = g_object_ref (shell_backend);
-}
-
static void
mail_message_pane_set_property (GObject *object,
guint property_id,
@@ -348,23 +53,9 @@ mail_message_pane_set_property (GObject *object,
GParamSpec *pspec)
{
switch (property_id) {
- case PROP_GROUP_BY_THREADS:
- e_mail_reader_set_group_by_threads (
- E_MAIL_READER (object),
- g_value_get_boolean (value));
- return;
-
- case PROP_SHELL_BACKEND:
- mail_message_pane_set_shell_backend (
- e_mail_message_pane (object),
- g_value_get_object (value));
- return;
-
- case PROP_SHOW_DELETED:
- e_mail_message_pane_set_show_deleted (
- e_mail_message_pane (object),
- g_value_get_boolean (value));
+ case PROP_PREVIEW_VISIBLE:
return;
+
}
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -377,35 +68,11 @@ mail_message_pane_get_property (GObject *object,
GParamSpec *pspec)
{
switch (property_id) {
- case PROP_FOCUS_TRACKER:
- g_value_set_object (
- value, e_mail_message_pane_get_focus_tracker (
- e_mail_message_pane (object)));
- return;
-
- case PROP_GROUP_BY_THREADS:
- g_value_set_boolean (
- value, e_mail_reader_get_group_by_threads (
- E_MAIL_READER (object)));
- return;
-
- case PROP_SHELL_BACKEND:
- g_value_set_object (
- value, e_mail_reader_get_shell_backend (
- E_MAIL_READER (object)));
- return;
-
- case PROP_SHOW_DELETED:
+ case PROP_PREVIEW_VISIBLE:
g_value_set_boolean (
- value, e_mail_message_pane_get_show_deleted (
- e_mail_message_pane (object)));
- return;
-
- case PROP_UI_MANAGER:
- g_value_set_object (
- value, e_mail_message_pane_get_ui_manager (
- e_mail_message_pane (object)));
- return;
+ value,
+ TRUE);
+ return;
}
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -418,56 +85,6 @@ mail_message_pane_dispose (GObject *object)
priv = e_mail_message_pane_GET_PRIVATE (object);
- if (priv->ui_manager != NULL) {
- g_object_unref (priv->ui_manager);
- priv->ui_manager = NULL;
- }
-
- if (priv->focus_tracker != NULL) {
- g_object_unref (priv->focus_tracker);
- priv->focus_tracker = NULL;
- }
-
- if (priv->shell_backend != NULL) {
- g_object_unref (priv->shell_backend);
- priv->shell_backend = NULL;
- }
-
- if (priv->action_group != NULL) {
- g_object_unref (priv->action_group);
- priv->action_group = NULL;
- }
-
- if (priv->formatter != NULL) {
- g_object_unref (priv->formatter);
- priv->formatter = NULL;
- }
-
- if (priv->main_menu != NULL) {
- g_object_unref (priv->main_menu);
- priv->main_menu = NULL;
- }
-
- if (priv->main_toolbar != NULL) {
- g_object_unref (priv->main_toolbar);
- priv->main_toolbar = NULL;
- }
-
- if (priv->message_list != NULL) {
- /* This will cancel a regen operation. */
- gtk_widget_destroy (priv->message_list);
- priv->message_list = NULL;
- }
-
- if (priv->search_bar != NULL) {
- g_object_unref (priv->search_bar);
- priv->search_bar = NULL;
- }
-
- if (priv->statusbar != NULL) {
- g_object_unref (priv->statusbar);
- priv->statusbar = NULL;
- }
/* Chain up to parent's dispose() method. */
G_OBJECT_CLASS (parent_class)->dispose (object);
@@ -477,275 +94,37 @@ static void
mail_message_pane_constructed (GObject *object)
{
EMailMessagePanePrivate *priv;
- EMFormatHTML *formatter;
- EMailReader *reader;
- EShellBackend *shell_backend;
- EShell *shell;
- EFocusTracker *focus_tracker;
- ESearchBar *search_bar;
- GConfBridge *bridge;
- GtkAccelGroup *accel_group;
- GtkActionGroup *action_group;
- GtkAction *action;
- GtkUIManager *ui_manager;
- GtkWidget *container;
- GtkWidget *widget;
- EWebView *web_view;
- const gchar *domain;
- const gchar *key;
- const gchar *id;
- guint merge_id;
-
+
/* Chain up to parent's constructed() method. */
if (G_OBJECT_CLASS (parent_class)->constructed)
G_OBJECT_CLASS (parent_class)->constructed (object);
priv = e_mail_message_pane_GET_PRIVATE (object);
- reader = E_MAIL_READER (object);
-
- shell_backend = e_mail_reader_get_shell_backend (reader);
- shell = e_shell_backend_get_shell (shell_backend);
-
- ui_manager = e_ui_manager_new ();
- e_shell_configure_ui_manager (shell, E_UI_MANAGER (ui_manager));
-
- priv->ui_manager = ui_manager;
- domain = GETTEXT_PACKAGE;
-
- formatter = e_mail_reader_get_formatter (reader);
-
- web_view = em_format_html_get_web_view (formatter);
-
- /* The message list is a widget, but it is not shown in the browser.
- * Unfortunately, the widget is inseparable from its model, and the
- * model is all we need. */
- priv->message_list = message_list_new (shell_backend);
- g_object_ref_sink (priv->message_list);
-
- g_signal_connect_swapped (
- priv->message_list, "message-selected",
- G_CALLBACK (mail_message_pane_message_selected_cb), object);
-
- g_signal_connect_swapped (
- priv->message_list, "message-list-built",
- G_CALLBACK (mail_message_pane_message_list_built_cb), object);
-
- g_signal_connect_swapped (
- web_view, "popup-event",
- G_CALLBACK (mail_message_pane_popup_event_cb), object);
-
- g_signal_connect_swapped (
- web_view, "status-message",
- G_CALLBACK (mail_message_pane_status_message_cb), object);
-
- e_mail_reader_init (reader);
-
- action_group = priv->action_group;
- gtk_action_group_set_translation_domain (action_group, domain);
- gtk_action_group_add_actions (
- action_group, mail_message_pane_entries,
- G_N_ELEMENTS (mail_message_pane_entries), object);
- e_action_group_add_popup_actions (
- action_group, mail_message_pane_popup_entries,
- G_N_ELEMENTS (mail_message_pane_popup_entries));
- gtk_ui_manager_insert_action_group (ui_manager, action_group, 0);
-
- e_ui_manager_add_ui_from_file (
- E_UI_MANAGER (ui_manager), E_MAIL_READER_UI_DEFINITION);
- e_ui_manager_add_ui_from_string (
- E_UI_MANAGER (ui_manager), ui, NULL);
-
- merge_id = gtk_ui_manager_new_merge_id (GTK_UI_MANAGER (ui_manager));
- e_mail_reader_create_charset_menu (reader, ui_manager, merge_id);
-
- accel_group = gtk_ui_manager_get_accel_group (ui_manager);
- gtk_window_add_accel_group (GTK_WINDOW (object), accel_group);
-
- g_signal_connect_swapped (
- ui_manager, "connect-proxy",
- G_CALLBACK (mail_message_pane_connect_proxy_cb), object);
-
- /* Configure an EFocusTracker to manage selection actions. */
-
- focus_tracker = e_focus_tracker_new (GTK_WINDOW (object));
- action = gtk_action_group_get_action (action_group, "cut-clipboard");
- e_focus_tracker_set_cut_clipboard_action (focus_tracker, action);
- action = gtk_action_group_get_action (action_group, "copy-clipboard");
- e_focus_tracker_set_copy_clipboard_action (focus_tracker, action);
- action = gtk_action_group_get_action (action_group, "paste-clipboard");
- e_focus_tracker_set_paste_clipboard_action (focus_tracker, action);
- action = gtk_action_group_get_action (action_group, "select-all");
- e_focus_tracker_set_select_all_action (focus_tracker, action);
- priv->focus_tracker = focus_tracker;
-
- /* Construct base widgets widgets. */
- widget = (GtkWidget *)object;
- gtk_box_set_spacing (GTK_BOX (widget), 0);
-
- container = (GtkWidget *)object;
-
- /* Create the status bar before connecting proxy widgets. */
- widget = gtk_statusbar_new ();
- gtk_box_pack_end (GTK_BOX (container), widget, FALSE, FALSE, 0);
- priv->statusbar = g_object_ref (widget);
- gtk_widget_show (widget);
-
- gtk_widget_show (GTK_WIDGET (web_view));
-
- widget = e_preview_pane_new (web_view);
- gtk_box_pack_start (GTK_BOX (container), widget, TRUE, TRUE, 0);
- gtk_widget_show (widget);
-
- search_bar = e_preview_pane_get_search_bar (E_PREVIEW_PANE (widget));
- priv->search_bar = g_object_ref (search_bar);
-
- g_signal_connect_swapped (
- search_bar, "changed",
- G_CALLBACK (em_format_redraw), priv->formatter);
-
- /* Bind GObject properties to GConf keys. */
-
- bridge = gconf_bridge_get ();
-
- object = G_OBJECT (reader);
- key = "/apps/evolution/mail/display/show_deleted";
- gconf_bridge_bind_property (bridge, key, object, "show-deleted");
-
- id = "org.gnome.evolution.mail.message.pane";
- e_plugin_ui_register_manager (ui_manager, id, object);
- e_plugin_ui_enable_manager (ui_manager, id);
-
- e_mail_reader_connect_headers (E_MAIL_READER (reader));
-}
-
-static gboolean
-mail_message_pane_key_press_event (GtkWidget *widget,
- GdkEventKey *event)
-{
- if (event->keyval == GDK_Escape) {
- e_mail_message_pane_close (e_mail_message_pane (widget));
- return TRUE;
- }
-
- /* Chain up to parent's key_press_event() method. */
- return GTK_WIDGET_CLASS (parent_class)->
- key_press_event (widget, event);
-}
-
-static GtkActionGroup *
-mail_message_pane_get_action_group (EMailReader *reader)
-{
- EMailMessagePanePrivate *priv;
-
- priv = e_mail_message_pane_GET_PRIVATE (reader);
-
- return priv->action_group;
-}
-
-static gboolean
-mail_message_pane_get_hide_deleted (EMailReader *reader)
-{
- EMailMessagePane *browser;
-
- browser = e_mail_message_pane (reader);
-
- return !e_mail_message_pane_get_show_deleted (browser);
-}
-
-static EMFormatHTML *
-mail_message_pane_get_formatter (EMailReader *reader)
-{
- EMailMessagePanePrivate *priv;
-
- priv = e_mail_message_pane_GET_PRIVATE (reader);
-
- return EM_FORMAT_HTML (priv->formatter);
-}
-
-static GtkWidget *
-mail_message_pane_get_message_list (EMailReader *reader)
-{
- EMailMessagePanePrivate *priv;
-
- priv = e_mail_message_pane_GET_PRIVATE (reader);
-
- return priv->message_list;
-}
-
-static GtkMenu *
-mail_message_pane_get_popup_menu (EMailReader *reader)
-{
- EMailMessagePane *browser;
- GtkUIManager *ui_manager;
- GtkWidget *widget;
-
- browser = e_mail_message_pane (reader);
- ui_manager = e_mail_message_pane_get_ui_manager (browser);
- widget = gtk_ui_manager_get_widget (ui_manager, "/mail-preview-popup");
-
- return GTK_MENU (widget);
-}
-
-static EShellBackend *
-mail_message_pane_get_shell_backend (EMailReader *reader)
-{
- EMailMessagePanePrivate *priv;
-
- priv = e_mail_message_pane_GET_PRIVATE (reader);
-
- return priv->shell_backend;
-}
-
-static GtkWindow *
-mail_message_pane_get_window (EMailReader *reader)
-{
- return NULL;
+ gtk_widget_hide (e_mail_reader_get_message_list (E_MAIL_READER(object)));
+ e_mail_paned_view_hide_message_list_pane (E_MAIL_PANED_VIEW(object), FALSE);
}
static void
-mail_message_pane_set_message (EMailReader *reader,
- const gchar *uid)
+message_pane_set_preview_visible (EMailMessagePane *view,
+ gboolean preview_visible)
{
- EMailReaderIface *iface;
- CamelMessageInfo *info;
- CamelFolder *folder;
-
- /* Chain up to parent's set_message() method. */
- iface = g_type_default_interface_peek (E_TYPE_MAIL_READER);
- iface->set_message (reader, uid);
+ e_mail_paned_view_set_preview_visible (E_MAIL_PANED_VIEW(view), TRUE);
- if (uid == NULL) {
- e_mail_message_pane_close (e_mail_message_pane (reader));
- return;
- }
-
- folder = e_mail_reader_get_folder (reader);
- info = camel_folder_get_message_info (folder, uid);
-
- if (info != NULL) {
- gtk_window_set_title (
- GTK_WINDOW (reader),
- camel_message_info_subject (info));
- camel_folder_free_message_info (folder, info);
- }
+ return;
}
-static void
-mail_message_pane_show_search_bar (EMailReader *reader)
+static gboolean
+message_pane_get_preview_visible (EMailMessagePane *view)
{
- EMailMessagePanePrivate *priv;
- priv = e_mail_message_pane_GET_PRIVATE (reader);
-
- gtk_widget_show (priv->search_bar);
+ return TRUE;
}
static void
mail_message_pane_class_init (EMailMessagePaneClass *class)
{
GObjectClass *object_class;
- GtkWidgetClass *widget_class;
parent_class = g_type_class_peek_parent (class);
g_type_class_add_private (class, sizeof (EMailMessagePanePrivate));
@@ -756,72 +135,20 @@ mail_message_pane_class_init (EMailMessagePaneClass *class)
object_class->dispose = mail_message_pane_dispose;
object_class->constructed = mail_message_pane_constructed;
- widget_class = GTK_WIDGET_CLASS (class);
- widget_class->key_press_event = mail_message_pane_key_press_event;
+ E_MAIL_VIEW_CLASS(g_type_class_peek_parent(class))->set_preview_visible = message_pane_set_preview_visible;
+ E_MAIL_VIEW_CLASS(g_type_class_peek_parent(class))->get_preview_visible = message_pane_get_preview_visible;
- g_object_class_install_property (
- object_class,
- PROP_FOCUS_TRACKER,
- g_param_spec_object (
- "focus-tracker",
- "Focus Tracker",
- NULL,
- E_TYPE_FOCUS_TRACKER,
- G_PARAM_READABLE));
-
- /* 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_SHELL_BACKEND,
- g_param_spec_object (
- "shell-backend",
- "Shell Module",
- "The mail shell backend",
- E_TYPE_SHELL_BACKEND,
- 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",
- "Show deleted messages",
- FALSE,
- G_PARAM_READWRITE));
-}
-
-static void
-mail_message_pane_iface_init (EMailReaderIface *iface)
-{
- iface->get_action_group = mail_message_pane_get_action_group;
- iface->get_formatter = mail_message_pane_get_formatter;
- iface->get_hide_deleted = mail_message_pane_get_hide_deleted;
- iface->get_message_list = mail_message_pane_get_message_list;
- iface->get_popup_menu = mail_message_pane_get_popup_menu;
- iface->get_shell_backend = mail_message_pane_get_shell_backend;
- iface->get_window = mail_message_pane_get_window;
- iface->set_message = mail_message_pane_set_message;
- iface->show_search_bar = mail_message_pane_show_search_bar;
+ PROP_PREVIEW_VISIBLE,
+ "preview-visible");
}
static void
mail_message_pane_init (EMailMessagePane *browser)
{
- GConfBridge *bridge;
- const gchar *prefix;
browser->priv = e_mail_message_pane_GET_PRIVATE (browser);
-
- browser->priv->action_group = gtk_action_group_new ("mail-browser");
- browser->priv->formatter = em_format_html_display_new ();
-
}
GType
@@ -843,71 +170,22 @@ e_mail_message_pane_get_type (void)
NULL /* value_table */
};
- static const GInterfaceInfo iface_info = {
- (GInterfaceInitFunc) mail_message_pane_iface_init,
- (GInterfaceFinalizeFunc) NULL,
- NULL /* interface_data */
- };
-
type = g_type_register_static (
- GTK_TYPE_WINDOW, "EMailMessagePane", &type_info, 0);
+ E_MAIL_PANED_VIEW_TYPE , "EMailMessagePane", &type_info, 0);
- g_type_add_interface_static (
- type, E_TYPE_MAIL_READER, &iface_info);
}
return type;
}
GtkWidget *
-e_mail_message_pane_new (EShellBackend *shell_backend)
+e_mail_message_pane_new (EShellContent *content)
{
- g_return_val_if_fail (E_IS_SHELL_BACKEND (shell_backend), NULL);
+ g_return_val_if_fail (E_IS_SHELL_CONTENT (content), NULL);
return g_object_new (
- E_TYPe_mail_message_pane,
- "shell-backend", shell_backend, NULL);
-}
-
-void
-e_mail_message_pane_close (EMailMessagePane *browser)
-{
- g_return_if_fail (E_IS_MAIL_MESSAGE_PANE (browser));
-
- gtk_widget_destroy (GTK_WIDGET (browser));
-}
-
-gboolean
-e_mail_message_pane_get_show_deleted (EMailMessagePane *browser)
-{
- g_return_val_if_fail (E_IS_MAIL_MESSAGE_PANE (browser), FALSE);
-
- return browser->priv->show_deleted;
-}
-
-void
-e_mail_message_pane_set_show_deleted (EMailMessagePane *browser,
- gboolean show_deleted)
-{
- g_return_if_fail (E_IS_MAIL_MESSAGE_PANE (browser));
-
- browser->priv->show_deleted = show_deleted;
-
- g_object_notify (G_OBJECT (browser), "show-deleted");
-}
-
-EFocusTracker *
-e_mail_message_pane_get_focus_tracker (EMailMessagePane *browser)
-{
- g_return_val_if_fail (E_IS_MAIL_MESSAGE_PANE (browser), NULL);
-
- return browser->priv->focus_tracker;
-}
-
-GtkUIManager *
-e_mail_message_pane_get_ui_manager (EMailMessagePane *browser)
-{
- g_return_val_if_fail (E_IS_MAIL_MESSAGE_PANE (browser), NULL);
-
- return browser->priv->ui_manager;
+ E_TYPE_MAIL_MESSAGE_PANE,
+ "shell-content", content,
+ "preview-visible", TRUE,
+ NULL);
}