aboutsummaryrefslogtreecommitdiffstats
path: root/mail/e-mail-folder-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-folder-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-folder-pane.c')
-rw-r--r--mail/e-mail-folder-pane.c804
1 files changed, 52 insertions, 752 deletions
diff --git a/mail/e-mail-folder-pane.c b/mail/e-mail-folder-pane.c
index 1b9632778e..be05cb3fca 100644
--- a/mail/e-mail-folder-pane.c
+++ b/mail/e-mail-folder-pane.c
@@ -43,366 +43,78 @@
((obj), E_TYPE_MAIL_FOLDER_PANE, EMailFolderPanePrivate))
struct _EMailFolderPanePrivate {
- 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,
- EMailFolderPane *browser)
-{
- e_mail_folder_pane_close (browser);
-}
-
-static GtkActionEntry mail_folder_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_folder_pane_popup_entries[] = {
-
- { "popup-copy-clipboard",
- NULL,
- "copy-clipboard" }
-};
-
-static void
-mail_folder_pane_menu_item_select_cb (EMailFolderPane *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_folder_pane_menu_item_deselect_cb (EMailFolderPane *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_folder_pane_connect_proxy_cb (EMailFolderPane *browser,
- GtkAction *action,
- GtkWidget *proxy)
+mail_folder_pane_dispose (GObject *object)
{
- 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));
+ EMailFolderPanePrivate *priv;
- g_signal_connect_swapped (
- proxy, "select",
- G_CALLBACK (mail_folder_pane_menu_item_select_cb), browser);
+ priv = E_MAIL_FOLDER_PANE_GET_PRIVATE (object);
- g_signal_connect_swapped (
- proxy, "deselect",
- G_CALLBACK (mail_folder_pane_menu_item_deselect_cb), browser);
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (parent_class)->dispose (object);
}
static void
-mail_folder_pane_message_selected_cb (EMailFolderPane *browser,
- const gchar *uid)
+mail_folder_pane_constructed (GObject *object)
{
- 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_widget_grab_focus (GTK_WIDGET (web_view));
-
- camel_folder_free_message_info (folder, info);
-}
+ /* Chain up to parent's constructed() method. */
+ if (G_OBJECT_CLASS (parent_class)->constructed)
+ G_OBJECT_CLASS (parent_class)->constructed (object);
-static gboolean
-close_on_idle_cb (gpointer browser)
-{
- e_mail_folder_pane_close (browser);
- return FALSE;
}
static void
-mail_folder_pane_message_list_built_cb (EMailFolderPane *browser,
- MessageList *message_list)
+folder_pane_set_preview_visible (EMailPanedView *view,
+ gboolean preview_visible)
{
- g_return_if_fail (E_IS_MAIL_FOLDER_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);
+ return;
}
static gboolean
-mail_folder_pane_popup_event_cb (EMailFolderPane *browser,
- GdkEventButton *event,
- const gchar *uri)
+folder_pane_get_preview_visible (EMailPanedView *view)
{
- 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_folder_pane_status_message_cb (EMailFolderPane *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_folder_pane_set_shell_backend (EMailFolderPane *browser,
- EShellBackend *shell_backend)
-{
- g_return_if_fail (browser->priv->shell_backend == NULL);
-
- browser->priv->shell_backend = g_object_ref (shell_backend);
+ return FALSE;
}
static void
-mail_folder_pane_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
+mail_folder_pane_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ 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));
+ case PROP_PREVIEW_VISIBLE:
+ g_value_set_boolean (
+ value,
+ FALSE);
return;
- case PROP_SHELL_BACKEND:
- mail_folder_pane_set_shell_backend (
- E_MAIL_FOLDER_PANE (object),
- g_value_get_object (value));
- return;
- case PROP_SHOW_DELETED:
- e_mail_folder_pane_set_show_deleted (
- E_MAIL_FOLDER_PANE (object),
- g_value_get_boolean (value));
- return;
}
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
static void
-mail_folder_pane_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
+mail_folder_pane_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
switch (property_id) {
- case PROP_FOCUS_TRACKER:
- g_value_set_object (
- value, e_mail_folder_pane_get_focus_tracker (
- E_MAIL_FOLDER_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:
- g_value_set_boolean (
- value, e_mail_folder_pane_get_show_deleted (
- E_MAIL_FOLDER_PANE (object)));
- return;
-
- case PROP_UI_MANAGER:
- g_value_set_object (
- value, e_mail_folder_pane_get_ui_manager (
- E_MAIL_FOLDER_PANE (object)));
+ case PROP_PREVIEW_VISIBLE:
return;
}
@@ -410,416 +122,52 @@ mail_folder_pane_get_property (GObject *object,
}
static void
-mail_folder_pane_dispose (GObject *object)
+mfp_open_selected_mail (EMailPanedView *view)
{
- EMailFolderPanePrivate *priv;
-
- priv = E_MAIL_FOLDER_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;
- }
+ GPtrArray *uids;
+ int i;
- if (priv->formatter != NULL) {
- g_object_unref (priv->formatter);
- priv->formatter = NULL;
+ uids = e_mail_reader_get_selected_uids (E_MAIL_READER(view));
+ for (i=0; i<uids->len; i++) {
+ g_signal_emit_by_name (view, "open-mail", uids->pdata[i]);
}
-
- 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);
+
+ printf("I WIN\n");
}
static void
-mail_folder_pane_constructed (GObject *object)
-{
- EMailFolderPanePrivate *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_FOLDER_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_folder_pane_message_selected_cb), object);
-
- g_signal_connect_swapped (
- priv->message_list, "message-list-built",
- G_CALLBACK (mail_folder_pane_message_list_built_cb), object);
-
- g_signal_connect_swapped (
- web_view, "popup-event",
- G_CALLBACK (mail_folder_pane_popup_event_cb), object);
-
- g_signal_connect_swapped (
- web_view, "status-message",
- G_CALLBACK (mail_folder_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_folder_pane_entries,
- G_N_ELEMENTS (mail_folder_pane_entries), object);
- e_action_group_add_popup_actions (
- action_group, mail_folder_pane_popup_entries,
- G_N_ELEMENTS (mail_folder_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_folder_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 window widgets. */
-
- widget = (GtkWidget *)object;
- gtk_box_set_spacing (GTK_BOX (widget), 0);
-
- container = (GtkWidget *)object;
-
- 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.folder.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_folder_pane_key_press_event (GtkWidget *widget,
- GdkEventKey *event)
-{
- if (event->keyval == GDK_Escape) {
- e_mail_folder_pane_close (E_MAIL_FOLDER_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_folder_pane_get_action_group (EMailReader *reader)
-{
- EMailFolderPanePrivate *priv;
-
- priv = E_MAIL_FOLDER_PANE_GET_PRIVATE (reader);
-
- return priv->action_group;
-}
-
-static gboolean
-mail_folder_pane_get_hide_deleted (EMailReader *reader)
-{
- EMailFolderPane *browser;
-
- browser = E_MAIL_FOLDER_PANE (reader);
-
- return !e_mail_folder_pane_get_show_deleted (browser);
-}
-
-static EMFormatHTML *
-mail_folder_pane_get_formatter (EMailReader *reader)
-{
- EMailFolderPanePrivate *priv;
-
- priv = E_MAIL_FOLDER_PANE_GET_PRIVATE (reader);
-
- return EM_FORMAT_HTML (priv->formatter);
-}
-
-static GtkWidget *
-mail_folder_pane_get_message_list (EMailReader *reader)
-{
- EMailFolderPanePrivate *priv;
-
- priv = E_MAIL_FOLDER_PANE_GET_PRIVATE (reader);
-
- return priv->message_list;
-}
-
-static GtkMenu *
-mail_folder_pane_get_popup_menu (EMailReader *reader)
-{
- EMailFolderPane *browser;
- GtkUIManager *ui_manager;
- GtkWidget *widget;
-
- browser = E_MAIL_FOLDER_PANE (reader);
- ui_manager = e_mail_folder_pane_get_ui_manager (browser);
- widget = gtk_ui_manager_get_widget (ui_manager, "/mail-preview-popup");
-
- return GTK_MENU (widget);
-}
-
-static EShellBackend *
-mail_folder_pane_get_shell_backend (EMailReader *reader)
-{
- EMailFolderPanePrivate *priv;
-
- priv = E_MAIL_FOLDER_PANE_GET_PRIVATE (reader);
-
- return priv->shell_backend;
-}
-
-static GtkWindow *
-mail_folder_pane_get_window (EMailReader *reader)
-{
- return NULL;
-}
-
-static void
-mail_folder_pane_set_message (EMailReader *reader,
- const gchar *uid)
-{
- 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);
-
- if (uid == NULL) {
- e_mail_folder_pane_close (E_MAIL_FOLDER_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);
- }
-}
-
-static void
-mail_folder_pane_show_search_bar (EMailReader *reader)
-{
- EMailFolderPanePrivate *priv;
-
- priv = E_MAIL_FOLDER_PANE_GET_PRIVATE (reader);
-
- gtk_widget_show (priv->search_bar);
-}
-
-static void
-mail_folder_pane_class_init (EMailFolderPaneClass *class)
+mail_folder_pane_class_init (EMailPanedViewClass *class)
{
GObjectClass *object_class;
- GtkWidgetClass *widget_class;
parent_class = g_type_class_peek_parent (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;
object_class->dispose = mail_folder_pane_dispose;
object_class->constructed = mail_folder_pane_constructed;
+ object_class->set_property = mail_folder_pane_set_property;
+ object_class->get_property = mail_folder_pane_get_property;
- widget_class = GTK_WIDGET_CLASS (class);
- widget_class->key_press_event = mail_folder_pane_key_press_event;
+ class->open_selected_mail = mfp_open_selected_mail;
+
+ E_MAIL_VIEW_CLASS(g_type_class_peek_parent(class))->set_preview_visible = folder_pane_set_preview_visible;
+ E_MAIL_VIEW_CLASS(g_type_class_peek_parent(class))->get_preview_visible = folder_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");
+ PROP_PREVIEW_VISIBLE,
+ "preview-visible");
- 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_folder_pane_iface_init (EMailReaderIface *iface)
-{
- iface->get_action_group = mail_folder_pane_get_action_group;
- iface->get_formatter = mail_folder_pane_get_formatter;
- iface->get_hide_deleted = mail_folder_pane_get_hide_deleted;
- iface->get_message_list = mail_folder_pane_get_message_list;
- iface->get_popup_menu = mail_folder_pane_get_popup_menu;
- iface->get_shell_backend = mail_folder_pane_get_shell_backend;
- iface->get_window = mail_folder_pane_get_window;
- iface->set_message = mail_folder_pane_set_message;
- iface->show_search_bar = mail_folder_pane_show_search_bar;
-}
static void
mail_folder_pane_init (EMailFolderPane *browser)
{
- GConfBridge *bridge;
- const gchar *prefix;
browser->priv = E_MAIL_FOLDER_PANE_GET_PRIVATE (browser);
- browser->priv->action_group = gtk_action_group_new ("mail-browser");
- browser->priv->formatter = em_format_html_display_new ();
-
- bridge = gconf_bridge_get ();
- prefix = "/apps/evolution/mail/mail_browser";
- gconf_bridge_bind_window_size (bridge, prefix, GTK_WINDOW (browser));
-
- gtk_window_set_title (GTK_WINDOW (browser), _("Evolution"));
}
GType
@@ -841,71 +189,23 @@ e_mail_folder_pane_get_type (void)
NULL /* value_table */
};
- static const GInterfaceInfo iface_info = {
- (GInterfaceInitFunc) mail_folder_pane_iface_init,
- (GInterfaceFinalizeFunc) NULL,
- NULL /* interface_data */
- };
-
type = g_type_register_static (
- GTK_TYPE_WINDOW, "EMailFolderPane", &type_info, 0);
+ E_MAIL_PANED_VIEW_TYPE, "EMailFolderPane", &type_info, 0);
- g_type_add_interface_static (
- type, E_TYPE_MAIL_READER, &iface_info);
}
return type;
}
GtkWidget *
-e_mail_folder_pane_new (EShellBackend *shell_backend)
+e_mail_folder_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_FOLDER_PANE,
- "shell-backend", shell_backend, NULL);
-}
-
-void
-e_mail_folder_pane_close (EMailFolderPane *browser)
-{
- g_return_if_fail (E_IS_MAIL_FOLDER_PANE (browser));
-
- gtk_widget_destroy (GTK_WIDGET (browser));
-}
-
-gboolean
-e_mail_folder_pane_get_show_deleted (EMailFolderPane *browser)
-{
- g_return_val_if_fail (E_IS_MAIL_FOLDER_PANE (browser), FALSE);
-
- return browser->priv->show_deleted;
-}
-
-void
-e_mail_folder_pane_set_show_deleted (EMailFolderPane *browser,
- gboolean show_deleted)
-{
- g_return_if_fail (E_IS_MAIL_FOLDER_PANE (browser));
-
- browser->priv->show_deleted = show_deleted;
-
- g_object_notify (G_OBJECT (browser), "show-deleted");
+ "shell-content", content,
+ "preview-visible", FALSE,
+ NULL);
}
-EFocusTracker *
-e_mail_folder_pane_get_focus_tracker (EMailFolderPane *browser)
-{
- g_return_val_if_fail (E_IS_MAIL_FOLDER_PANE (browser), NULL);
-
- return browser->priv->focus_tracker;
-}
-
-GtkUIManager *
-e_mail_folder_pane_get_ui_manager (EMailFolderPane *browser)
-{
- g_return_val_if_fail (E_IS_MAIL_FOLDER_PANE (browser), NULL);
-
- return browser->priv->ui_manager;
-}