aboutsummaryrefslogtreecommitdiffstats
path: root/mail/e-mail-shell-content.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@src.gnome.org>2009-03-02 11:14:42 +0800
committerMatthew Barnes <mbarnes@src.gnome.org>2009-03-02 11:14:42 +0800
commit85d0142d21286ce87cd5f6c3d1e2f71aa994151f (patch)
treeadf19534f082b2074b3c7e7faf0ef10aa5c51806 /mail/e-mail-shell-content.c
parent08b1d0ae8e36ef20da800bf6358ca0cd9fb4e026 (diff)
downloadgsoc2013-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.c68
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;