diff options
author | Matthew Barnes <mbarnes@src.gnome.org> | 2009-03-02 11:14:42 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@src.gnome.org> | 2009-03-02 11:14:42 +0800 |
commit | 85d0142d21286ce87cd5f6c3d1e2f71aa994151f (patch) | |
tree | adf19534f082b2074b3c7e7faf0ef10aa5c51806 /mail/e-mail-shell-content.c | |
parent | 08b1d0ae8e36ef20da800bf6358ca0cd9fb4e026 (diff) | |
download | gsoc2013-evolution-85d0142d21286ce87cd5f6c3d1e2f71aa994151f.tar gsoc2013-evolution-85d0142d21286ce87cd5f6c3d1e2f71aa994151f.tar.gz gsoc2013-evolution-85d0142d21286ce87cd5f6c3d1e2f71aa994151f.tar.bz2 gsoc2013-evolution-85d0142d21286ce87cd5f6c3d1e2f71aa994151f.tar.lz gsoc2013-evolution-85d0142d21286ce87cd5f6c3d1e2f71aa994151f.tar.xz gsoc2013-evolution-85d0142d21286ce87cd5f6c3d1e2f71aa994151f.tar.zst gsoc2013-evolution-85d0142d21286ce87cd5f6c3d1e2f71aa994151f.zip |
Move text searching UI into a new EMailSearchBar widget.
svn path=/branches/kill-bonobo/; revision=37351
Diffstat (limited to 'mail/e-mail-shell-content.c')
-rw-r--r-- | mail/e-mail-shell-content.c | 68 |
1 files changed, 62 insertions, 6 deletions
diff --git a/mail/e-mail-shell-content.c b/mail/e-mail-shell-content.c index 17d873e8c0..0f7e91f4ad 100644 --- a/mail/e-mail-shell-content.c +++ b/mail/e-mail-shell-content.c @@ -36,6 +36,7 @@ #include "mail-ops.h" #include "e-mail-reader.h" +#include "e-mail-search-bar.h" #include "e-mail-shell-module.h" #include "e-mail-shell-view-actions.h" @@ -46,6 +47,7 @@ struct _EMailShellContentPrivate { GtkWidget *paned; GtkWidget *message_list; + GtkWidget *search_bar; EMFormatHTMLDisplay *html_display; GalViewInstance *view_instance; @@ -307,6 +309,11 @@ mail_shell_content_dispose (GObject *object) priv->message_list = NULL; } + if (priv->search_bar != NULL) { + g_object_unref (priv->search_bar); + priv->search_bar = NULL; + } + if (priv->html_display != NULL) { g_object_unref (priv->html_display); priv->html_display = NULL; @@ -347,10 +354,12 @@ mail_shell_content_constructed (GObject *object) GConfBridge *bridge; GtkWidget *container; GtkWidget *widget; + GtkHTML *html; GalViewCollection *view_collection; const gchar *key; priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (object); + priv->html_display = em_format_html_display_new (); /* Chain up to parent's constructed() method. */ G_OBJECT_CLASS (parent_class)->constructed (object); @@ -361,6 +370,8 @@ mail_shell_content_constructed (GObject *object) shell_module = e_shell_view_get_shell_module (shell_view); view_collection = shell_view_class->view_collection; + html = EM_FORMAT_HTML (priv->html_display)->html; + /* Build content widgets. */ container = GTK_WIDGET (object); @@ -377,21 +388,31 @@ mail_shell_content_constructed (GObject *object) priv->message_list = g_object_ref (widget); gtk_widget_show (widget); + widget = gtk_vbox_new (FALSE, 0); + gtk_paned_add2 (GTK_PANED (container), widget); + gtk_widget_show (widget); + + container = widget; + widget = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy ( GTK_SCROLLED_WINDOW (widget), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type ( GTK_SCROLLED_WINDOW (widget), GTK_SHADOW_IN); - gtk_paned_add2 (GTK_PANED (container), widget); + gtk_container_add (GTK_CONTAINER (widget), GTK_WIDGET (html)); + gtk_box_pack_start (GTK_BOX (container), widget, TRUE, TRUE, 0); + gtk_widget_show (GTK_WIDGET (html)); gtk_widget_show (widget); - container = widget; + widget = e_mail_search_bar_new (html); + gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0); + priv->search_bar = g_object_ref (widget); + gtk_widget_hide (widget); - priv->html_display = em_format_html_display_new (); - widget = GTK_WIDGET (((EMFormatHTML *) priv->html_display)->html); - gtk_container_add (GTK_CONTAINER (container), widget); - gtk_widget_show (widget); + g_signal_connect_swapped ( + widget, "changed", + G_CALLBACK (em_format_redraw), priv->html_display); /* Load the view instance. */ @@ -547,6 +568,16 @@ exit: } static void +mail_shell_content_show_search_bar (EMailReader *reader) +{ + EMailShellContentPrivate *priv; + + priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (reader); + + gtk_widget_show (priv->search_bar); +} + +static void mail_shell_content_class_init (EMailShellContentClass *class) { GObjectClass *object_class; @@ -597,6 +628,7 @@ mail_shell_content_iface_init (EMailReaderIface *iface) iface->get_shell_module = mail_shell_content_get_shell_module; iface->get_window = mail_shell_content_get_window; iface->set_folder = mail_shell_content_set_folder; + iface->show_search_bar = mail_shell_content_show_search_bar; } static void @@ -763,6 +795,30 @@ e_mail_shell_content_get_view_instance (EMailShellContent *mail_shell_content) } void +e_mail_shell_content_set_search_strings (EMailShellContent *mail_shell_content, + GSList *search_strings) +{ + EMailSearchBar *search_bar; + ESearchingTokenizer *tokenizer; + + g_return_if_fail (E_IS_MAIL_SHELL_CONTENT (mail_shell_content)); + + search_bar = E_MAIL_SEARCH_BAR (mail_shell_content->priv->search_bar); + tokenizer = e_mail_search_bar_get_tokenizer (search_bar); + + e_searching_tokenizer_set_secondary_case_sensitivity (tokenizer, FALSE); + e_searching_tokenizer_set_secondary_search_string (tokenizer, NULL); + + while (search_strings != NULL) { + e_searching_tokenizer_add_secondary_search_string ( + tokenizer, search_strings->data); + search_strings = g_slist_next (search_strings); + } + + e_mail_search_bar_changed (search_bar); +} + +void e_mail_shell_content_update_view_instance (EMailShellContent *mail_shell_content) { EMailReader *reader; |