From f9ffebc2f7a6fb285e686133dcccf17766c2ba79 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Mon, 21 Nov 2011 09:51:03 -0500 Subject: Mail widget cleanups. --- mail/e-mail-browser.c | 69 +++++++++++++++++++++++++++------------------------ 1 file changed, 36 insertions(+), 33 deletions(-) (limited to 'mail/e-mail-browser.c') diff --git a/mail/e-mail-browser.c b/mail/e-mail-browser.c index fe8b8984f3..29ddf3df09 100644 --- a/mail/e-mail-browser.c +++ b/mail/e-mail-browser.c @@ -45,6 +45,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" @@ -482,7 +486,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); @@ -542,7 +546,7 @@ mail_browser_dispose (GObject *object) static void mail_browser_constructed (GObject *object) { - EMailBrowserPrivate *priv; + EMailBrowser *browser; EMFormatHTML *formatter; EMailReader *reader; EMailBackend *backend; @@ -566,7 +570,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); @@ -577,7 +581,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 ( @@ -589,15 +593,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 ( @@ -662,7 +666,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. */ @@ -675,17 +679,17 @@ 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 ( @@ -694,7 +698,7 @@ mail_browser_constructed (GObject *object) widget = e_alert_bar_new (); gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0); - priv->alert_bar = g_object_ref (widget); + browser->priv->alert_bar = g_object_ref (widget); /* EAlertBar controls its own visibility. */ gtk_widget_show (GTK_WIDGET (web_view)); @@ -704,11 +708,12 @@ mail_browser_constructed (GObject *object) gtk_widget_show (widget); search_bar = e_preview_pane_get_search_bar (E_PREVIEW_PANE (widget)); - priv->search_bar = g_object_ref (search_bar); + browser->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 GConf keys. */ @@ -745,18 +750,18 @@ static void mail_browser_submit_alert (EAlertSink *alert_sink, EAlert *alert) { - EMailBrowserPrivate *priv; + EMailBrowser *browser; EAlertBar *alert_bar; GtkWidget *dialog; GtkWindow *parent; - priv = E_MAIL_BROWSER (alert_sink)->priv; + browser = E_MAIL_BROWSER (alert_sink); + alert_bar = E_ALERT_BAR (browser->priv->alert_bar); 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; @@ -798,11 +803,11 @@ mail_browser_get_alert_sink (EMailReader *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 @@ -818,21 +823,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 * @@ -886,11 +891,11 @@ mail_browser_set_message (EMailReader *reader, static void mail_browser_show_search_bar (EMailReader *reader) { - EMailBrowserPrivate *priv; + EMailBrowser *browser; - priv = E_MAIL_BROWSER (reader)->priv; + browser = E_MAIL_BROWSER (reader); - gtk_widget_show (priv->search_bar); + gtk_widget_show (browser->priv->search_bar); } static void @@ -988,9 +993,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 (); -- cgit From 5fabd29bd2580bbe479034634b405abfa36bb500 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Mon, 21 Nov 2011 12:42:34 -0500 Subject: Add EMailReader.get_preview_pane() method. Also give EMailReader::show-search-bar signal a default implementation, since it can now dig up the search bar widget itself. --- mail/e-mail-browser.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'mail/e-mail-browser.c') diff --git a/mail/e-mail-browser.c b/mail/e-mail-browser.c index 29ddf3df09..dbc2500713 100644 --- a/mail/e-mail-browser.c +++ b/mail/e-mail-browser.c @@ -64,7 +64,7 @@ struct _EMailBrowserPrivate { GtkWidget *main_toolbar; GtkWidget *message_list; GtkWidget *alert_bar; - GtkWidget *search_bar; + GtkWidget *preview_pane; GtkWidget *statusbar; guint show_deleted : 1; @@ -529,9 +529,9 @@ mail_browser_dispose (GObject *object) 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) { @@ -705,10 +705,10 @@ mail_browser_constructed (GObject *object) 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)); - browser->priv->search_bar = g_object_ref (search_bar); g_signal_connect_swapped ( search_bar, "changed", @@ -854,6 +854,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) { @@ -888,16 +898,6 @@ mail_browser_set_message (EMailReader *reader, } } -static void -mail_browser_show_search_bar (EMailReader *reader) -{ - EMailBrowser *browser; - - browser = E_MAIL_BROWSER (reader); - - gtk_widget_show (browser->priv->search_bar); -} - static void e_mail_browser_class_init (EMailBrowserClass *class) { @@ -982,9 +982,9 @@ e_mail_browser_reader_init (EMailReaderInterface *interface) 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 -- cgit From 2b8701fa2b3925ab94231884e211bbcdada5359f Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Mon, 21 Nov 2011 13:20:08 -0500 Subject: EPreviewPane: Implement EAlertSink. Means EMailBrowser no longer has to. Also, EMailReader now provides a default implementation for get_alert_sink() which just calls get_preview_pane() and casts. --- mail/e-mail-browser.c | 58 --------------------------------------------------- 1 file changed, 58 deletions(-) (limited to 'mail/e-mail-browser.c') diff --git a/mail/e-mail-browser.c b/mail/e-mail-browser.c index dbc2500713..e9c837206f 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" @@ -63,7 +61,6 @@ struct _EMailBrowserPrivate { GtkWidget *main_menu; GtkWidget *main_toolbar; GtkWidget *message_list; - GtkWidget *alert_bar; GtkWidget *preview_pane; GtkWidget *statusbar; @@ -106,8 +103,6 @@ static const gchar *ui = " " ""; -static void e_mail_browser_alert_sink_init - (EAlertSinkInterface *interface); static void e_mail_browser_reader_init (EMailReaderInterface *interface); @@ -115,8 +110,6 @@ G_DEFINE_TYPE_WITH_CODE ( EMailBrowser, 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 ( @@ -524,11 +517,6 @@ 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->preview_pane != NULL) { g_object_unref (priv->preview_pane); priv->preview_pane = NULL; @@ -696,11 +684,6 @@ mail_browser_constructed (GObject *object) 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); - browser->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); @@ -746,34 +729,6 @@ mail_browser_key_press_event (GtkWidget *widget, key_press_event (widget, event); } -static void -mail_browser_submit_alert (EAlertSink *alert_sink, - EAlert *alert) -{ - EMailBrowser *browser; - EAlertBar *alert_bar; - GtkWidget *dialog; - GtkWindow *parent; - - browser = E_MAIL_BROWSER (alert_sink); - alert_bar = E_ALERT_BAR (browser->priv->alert_bar); - - switch (e_alert_get_message_type (alert)) { - case GTK_MESSAGE_INFO: - case GTK_MESSAGE_WARNING: - case GTK_MESSAGE_ERROR: - 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) @@ -794,12 +749,6 @@ 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) { @@ -966,17 +915,10 @@ e_mail_browser_class_init (EMailBrowserClass *class) G_PARAM_READWRITE)); } -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; -- cgit