diff options
Diffstat (limited to 'mail/e-mail-browser.c')
-rw-r--r-- | mail/e-mail-browser.c | 143 |
1 files changed, 44 insertions, 99 deletions
diff --git a/mail/e-mail-browser.c b/mail/e-mail-browser.c index 1125510915..ec0e9251e0 100644 --- a/mail/e-mail-browser.c +++ b/mail/e-mail-browser.c @@ -30,12 +30,10 @@ #include "e-util/e-util.h" #include "e-util/e-plugin-ui.h" -#include "e-util/e-alert-dialog.h" #include "e-util/gconf-bridge.h" #include "shell/e-shell.h" #include "shell/e-shell-utils.h" #include "shell/e-shell-settings.h" -#include "widgets/misc/e-alert-bar.h" #include "widgets/misc/e-popup-action.h" #include "widgets/misc/e-preview-pane.h" @@ -45,6 +43,10 @@ #include "mail/em-format-html-display.h" #include "mail/message-list.h" +#define E_MAIL_BROWSER_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE \ + ((obj), E_TYPE_MAIL_BROWSER, EMailBrowserPrivate)) + #define MAIL_BROWSER_GCONF_PREFIX "/apps/evolution/mail/mail_browser" #define ACTION_GROUP_STANDARD "action-group-standard" @@ -59,8 +61,7 @@ struct _EMailBrowserPrivate { GtkWidget *main_menu; GtkWidget *main_toolbar; GtkWidget *message_list; - GtkWidget *alert_bar; - GtkWidget *search_bar; + GtkWidget *preview_pane; GtkWidget *statusbar; guint show_deleted : 1; @@ -102,8 +103,6 @@ static const gchar *ui = " </menubar>" "</ui>"; -static void e_mail_browser_alert_sink_init - (EAlertSinkInterface *interface); static void e_mail_browser_reader_init (EMailReaderInterface *interface); @@ -112,8 +111,6 @@ G_DEFINE_TYPE_WITH_CODE ( e_mail_browser, GTK_TYPE_WINDOW, G_IMPLEMENT_INTERFACE ( - E_TYPE_ALERT_SINK, e_mail_browser_alert_sink_init) - G_IMPLEMENT_INTERFACE ( E_TYPE_MAIL_READER, e_mail_browser_reader_init) G_IMPLEMENT_INTERFACE ( E_TYPE_EXTENSIBLE, NULL)) @@ -482,7 +479,7 @@ mail_browser_dispose (GObject *object) { EMailBrowserPrivate *priv; - priv = E_MAIL_BROWSER (object)->priv; + priv = E_MAIL_BROWSER_GET_PRIVATE (object); if (priv->backend != NULL) { g_object_unref (priv->backend); @@ -520,14 +517,9 @@ mail_browser_dispose (GObject *object) priv->message_list = NULL; } - if (priv->alert_bar != NULL) { - g_object_unref (priv->alert_bar); - priv->alert_bar = NULL; - } - - if (priv->search_bar != NULL) { - g_object_unref (priv->search_bar); - priv->search_bar = NULL; + if (priv->preview_pane != NULL) { + g_object_unref (priv->preview_pane); + priv->preview_pane = NULL; } if (priv->statusbar != NULL) { @@ -542,7 +534,7 @@ mail_browser_dispose (GObject *object) static void mail_browser_constructed (GObject *object) { - EMailBrowserPrivate *priv; + EMailBrowser *browser; EMFormatHTML *formatter; EMailReader *reader; EMailBackend *backend; @@ -565,7 +557,7 @@ mail_browser_constructed (GObject *object) /* Chain up to parent's constructed() method. */ G_OBJECT_CLASS (parent_class)->constructed (object); - priv = E_MAIL_BROWSER (object)->priv; + browser = E_MAIL_BROWSER (object); reader = E_MAIL_READER (object); backend = e_mail_reader_get_backend (reader); @@ -576,7 +568,7 @@ mail_browser_constructed (GObject *object) ui_manager = e_ui_manager_new (); e_shell_configure_ui_manager (shell, E_UI_MANAGER (ui_manager)); - priv->ui_manager = ui_manager; + browser->priv->ui_manager = ui_manager; domain = GETTEXT_PACKAGE; gtk_application_add_window ( @@ -588,15 +580,15 @@ mail_browser_constructed (GObject *object) /* 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 (backend); - g_object_ref_sink (priv->message_list); + browser->priv->message_list = message_list_new (backend); + g_object_ref_sink (browser->priv->message_list); g_signal_connect_swapped ( - priv->message_list, "message-selected", + browser->priv->message_list, "message-selected", G_CALLBACK (mail_browser_message_selected_cb), object); g_signal_connect_swapped ( - priv->message_list, "message-list-built", + browser->priv->message_list, "message-list-built", G_CALLBACK (mail_browser_message_list_built_cb), object); g_signal_connect_swapped ( @@ -661,7 +653,7 @@ mail_browser_constructed (GObject *object) e_focus_tracker_set_paste_clipboard_action (focus_tracker, action); action = e_mail_reader_get_action (reader, "select-all"); e_focus_tracker_set_select_all_action (focus_tracker, action); - priv->focus_tracker = focus_tracker; + browser->priv->focus_tracker = focus_tracker; /* Construct window widgets. */ @@ -674,40 +666,36 @@ mail_browser_constructed (GObject *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); + browser->priv->statusbar = g_object_ref (widget); gtk_widget_show (widget); widget = gtk_ui_manager_get_widget (ui_manager, "/main-menu"); gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0); - priv->main_menu = g_object_ref (widget); + browser->priv->main_menu = g_object_ref (widget); gtk_widget_show (widget); widget = gtk_ui_manager_get_widget (ui_manager, "/main-toolbar"); gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0); - priv->main_toolbar = g_object_ref (widget); + browser->priv->main_toolbar = g_object_ref (widget); gtk_widget_show (widget); gtk_style_context_add_class ( gtk_widget_get_style_context (widget), GTK_STYLE_CLASS_PRIMARY_TOOLBAR); - widget = e_alert_bar_new (); - gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0); - priv->alert_bar = g_object_ref (widget); - /* EAlertBar controls its own visibility. */ - 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); + browser->priv->preview_pane = g_object_ref (widget); 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_queue_redraw), priv->formatter); + G_CALLBACK (em_format_queue_redraw), + browser->priv->formatter); /* Bind GObject properties to GSettings keys. */ @@ -740,34 +728,6 @@ mail_browser_key_press_event (GtkWidget *widget, key_press_event (widget, event); } -static void -mail_browser_submit_alert (EAlertSink *alert_sink, - EAlert *alert) -{ - EMailBrowserPrivate *priv; - EAlertBar *alert_bar; - GtkWidget *dialog; - GtkWindow *parent; - - priv = E_MAIL_BROWSER (alert_sink)->priv; - - switch (e_alert_get_message_type (alert)) { - case GTK_MESSAGE_INFO: - case GTK_MESSAGE_WARNING: - case GTK_MESSAGE_ERROR: - alert_bar = E_ALERT_BAR (priv->alert_bar); - e_alert_bar_add_alert (alert_bar, alert); - break; - - default: - parent = GTK_WINDOW (alert_sink); - dialog = e_alert_dialog_new (parent, alert); - gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); - break; - } -} - static GtkActionGroup * mail_browser_get_action_group (EMailReader *reader, EMailReaderActionGroup group) @@ -788,20 +748,14 @@ mail_browser_get_action_group (EMailReader *reader, return g_object_get_data (G_OBJECT (reader), group_name); } -static EAlertSink * -mail_browser_get_alert_sink (EMailReader *reader) -{ - return E_ALERT_SINK (reader); -} - static EMailBackend * mail_browser_get_backend (EMailReader *reader) { - EMailBrowserPrivate *priv; + EMailBrowser *browser; - priv = E_MAIL_BROWSER (reader)->priv; + browser = E_MAIL_BROWSER (reader); - return priv->backend; + return browser->priv->backend; } static gboolean @@ -817,21 +771,21 @@ mail_browser_get_hide_deleted (EMailReader *reader) static EMFormatHTML * mail_browser_get_formatter (EMailReader *reader) { - EMailBrowserPrivate *priv; + EMailBrowser *browser; - priv = E_MAIL_BROWSER (reader)->priv; + browser = E_MAIL_BROWSER (reader); - return EM_FORMAT_HTML (priv->formatter); + return EM_FORMAT_HTML (browser->priv->formatter); } static GtkWidget * mail_browser_get_message_list (EMailReader *reader) { - EMailBrowserPrivate *priv; + EMailBrowser *browser; - priv = E_MAIL_BROWSER (reader)->priv; + browser = E_MAIL_BROWSER (reader); - return priv->message_list; + return browser->priv->message_list; } static GtkMenu * @@ -848,6 +802,16 @@ mail_browser_get_popup_menu (EMailReader *reader) return GTK_MENU (widget); } +static EPreviewPane * +mail_browser_get_preview_pane (EMailReader *reader) +{ + EMailBrowser *browser; + + browser = E_MAIL_BROWSER (reader); + + return E_PREVIEW_PANE (browser->priv->preview_pane); +} + static GtkWindow * mail_browser_get_window (EMailReader *reader) { @@ -883,16 +847,6 @@ mail_browser_set_message (EMailReader *reader, } static void -mail_browser_show_search_bar (EMailReader *reader) -{ - EMailBrowserPrivate *priv; - - priv = E_MAIL_BROWSER (reader)->priv; - - gtk_widget_show (priv->search_bar); -} - -static void e_mail_browser_class_init (EMailBrowserClass *class) { GObjectClass *object_class; @@ -961,24 +915,17 @@ e_mail_browser_class_init (EMailBrowserClass *class) } static void -e_mail_browser_alert_sink_init (EAlertSinkInterface *interface) -{ - interface->submit_alert = mail_browser_submit_alert; -} - -static void e_mail_browser_reader_init (EMailReaderInterface *interface) { interface->get_action_group = mail_browser_get_action_group; - interface->get_alert_sink = mail_browser_get_alert_sink; interface->get_backend = mail_browser_get_backend; interface->get_formatter = mail_browser_get_formatter; interface->get_hide_deleted = mail_browser_get_hide_deleted; interface->get_message_list = mail_browser_get_message_list; interface->get_popup_menu = mail_browser_get_popup_menu; + interface->get_preview_pane = mail_browser_get_preview_pane; interface->get_window = mail_browser_get_window; interface->set_message = mail_browser_set_message; - interface->show_search_bar = mail_browser_show_search_bar; } static void @@ -987,9 +934,7 @@ e_mail_browser_init (EMailBrowser *browser) GConfBridge *bridge; const gchar *prefix; - browser->priv = G_TYPE_INSTANCE_GET_PRIVATE ( - browser, E_TYPE_MAIL_BROWSER, EMailBrowserPrivate); - + browser->priv = E_MAIL_BROWSER_GET_PRIVATE (browser); browser->priv->formatter = em_format_html_display_new (); bridge = gconf_bridge_get (); |