aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/Makefile.am4
-rw-r--r--mail/e-mail-browser.c30
-rw-r--r--mail/e-mail-search-bar.h87
-rw-r--r--modules/addressbook/e-book-shell-content.c61
-rw-r--r--modules/addressbook/e-book-shell-content.h7
-rw-r--r--modules/addressbook/e-book-shell-view-actions.c37
-rw-r--r--modules/addressbook/e-book-shell-view-actions.h2
-rw-r--r--modules/addressbook/e-book-shell-view.c4
-rw-r--r--modules/calendar/e-memo-shell-content.c59
-rw-r--r--modules/calendar/e-memo-shell-content.h7
-rw-r--r--modules/calendar/e-memo-shell-view-actions.c37
-rw-r--r--modules/calendar/e-memo-shell-view-actions.h2
-rw-r--r--modules/calendar/e-memo-shell-view-private.c7
-rw-r--r--modules/calendar/e-memo-shell-view.c13
-rw-r--r--modules/calendar/e-task-shell-content.c59
-rw-r--r--modules/calendar/e-task-shell-content.h7
-rw-r--r--modules/calendar/e-task-shell-view-actions.c37
-rw-r--r--modules/calendar/e-task-shell-view-actions.h2
-rw-r--r--modules/calendar/e-task-shell-view-private.c7
-rw-r--r--modules/calendar/e-task-shell-view.c13
-rw-r--r--modules/mail/e-mail-shell-content.c45
-rw-r--r--ui/evolution-contacts.ui2
-rw-r--r--ui/evolution-memos.ui2
-rw-r--r--ui/evolution-tasks.ui2
-rw-r--r--widgets/misc/Makefile.am6
-rw-r--r--widgets/misc/e-preview-pane.c275
-rw-r--r--widgets/misc/e-preview-pane.h74
-rw-r--r--widgets/misc/e-search-bar.c (renamed from mail/e-mail-search-bar.c)256
-rw-r--r--widgets/misc/e-search-bar.h87
-rw-r--r--widgets/misc/e-searching-tokenizer.c (renamed from mail/e-searching-tokenizer.c)0
-rw-r--r--widgets/misc/e-searching-tokenizer.h (renamed from mail/e-searching-tokenizer.h)0
31 files changed, 830 insertions, 401 deletions
diff --git a/mail/Makefile.am b/mail/Makefile.am
index 2e6a69a7f6..c31b4cd406 100644
--- a/mail/Makefile.am
+++ b/mail/Makefile.am
@@ -48,11 +48,9 @@ mailinclude_HEADERS = \
e-mail-migrate.h \
e-mail-reader.h \
e-mail-reader-utils.h \
- e-mail-search-bar.h \
e-mail-sidebar.h \
e-mail-store.h \
e-mail-tag-editor.h \
- e-searching-tokenizer.h \
em-account-editor.h \
em-composer-utils.h \
em-config.h \
@@ -107,11 +105,9 @@ libevolution_mail_la_SOURCES = \
e-mail-migrate.c \
e-mail-reader.c \
e-mail-reader-utils.c \
- e-mail-search-bar.c \
e-mail-sidebar.c \
e-mail-store.c \
e-mail-tag-editor.c \
- e-searching-tokenizer.c \
em-account-editor.c \
em-composer-utils.c \
em-config.c \
diff --git a/mail/e-mail-browser.c b/mail/e-mail-browser.c
index ab27694778..b0172ad3c2 100644
--- a/mail/e-mail-browser.c
+++ b/mail/e-mail-browser.c
@@ -29,10 +29,10 @@
#include "e-util/e-plugin-ui.h"
#include "e-util/gconf-bridge.h"
#include "shell/e-shell.h"
+#include "widgets/misc/e-preview-pane.h"
#include "mail/e-mail-reader.h"
#include "mail/e-mail-reader-utils.h"
-#include "mail/e-mail-search-bar.h"
#include "mail/em-folder-tree-model.h"
#include "mail/em-format-html-display.h"
#include "mail/message-list.h"
@@ -388,6 +388,7 @@ mail_browser_constructed (GObject *object)
EMailReader *reader;
EShellBackend *shell_backend;
EShell *shell;
+ ESearchBar *search_bar;
GConfBridge *bridge;
GtkAccelGroup *accel_group;
GtkActionGroup *action_group;
@@ -468,15 +469,6 @@ mail_browser_constructed (GObject *object)
priv->statusbar = g_object_ref (widget);
gtk_widget_show (widget);
- widget = e_mail_search_bar_new (web_view);
- gtk_box_pack_end (GTK_BOX (container), widget, FALSE, FALSE, 0);
- priv->search_bar = g_object_ref (widget);
- gtk_widget_hide (widget);
-
- g_signal_connect_swapped (
- widget, "changed",
- G_CALLBACK (em_format_redraw), html_display);
-
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);
@@ -487,20 +479,18 @@ mail_browser_constructed (GObject *object)
priv->main_toolbar = g_object_ref (widget);
gtk_widget_show (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_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);
- container = widget;
+ search_bar = e_preview_pane_get_search_bar (E_PREVIEW_PANE (widget));
+ priv->search_bar = g_object_ref (search_bar);
- widget = GTK_WIDGET (EM_FORMAT_HTML (html_display)->html);
- gtk_container_add (GTK_CONTAINER (container), widget);
- gtk_widget_show (widget);
+ g_signal_connect_swapped (
+ search_bar, "changed",
+ G_CALLBACK (em_format_redraw), priv->html_display);
/* Bind GObject properties to GConf keys. */
diff --git a/mail/e-mail-search-bar.h b/mail/e-mail-search-bar.h
deleted file mode 100644
index 69fa746687..0000000000
--- a/mail/e-mail-search-bar.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * e-mail-search-bar.h
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) version 3.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with the program; if not, see <http://www.gnu.org/licenses/>
- *
- *
- * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
- *
- */
-
-#ifndef E_MAIL_SEARCH_BAR_H
-#define E_MAIL_SEARCH_BAR_H
-
-#include <gtk/gtk.h>
-#include <mail/e-searching-tokenizer.h>
-#include <misc/e-web-view.h>
-
-/* Standard GObject macros */
-#define E_TYPE_MAIL_SEARCH_BAR \
- (e_mail_search_bar_get_type ())
-#define E_MAIL_SEARCH_BAR(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST \
- ((obj), E_TYPE_MAIL_SEARCH_BAR, EMailSearchBar))
-#define E_MAIL_SEARCH_BAR_CLASS(cls) \
- (G_TYPE_CHECK_CLASS_CAST \
- ((cls), E_TYPE_MAIL_SEARCH_BAR, EMailSearchBarClass))
-#define E_IS_MAIL_SEARCH_BAR(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE \
- ((obj), E_TYPE_MAIL_SEARCH_BAR))
-#define E_IS_MAIL_SEARCH_BAR_CLASS(cls) \
- (G_TYPE_CHECK_CLASS_TYPE \
- ((cls), E_TYPE_MAIL_SEARCH_BAR))
-#define E_MAIL_SEARCH_BAR_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS \
- ((obj), E_TYPE_MAIL_SEARCH_BAR, EMailSearchBarClass))
-
-G_BEGIN_DECLS
-
-typedef struct _EMailSearchBar EMailSearchBar;
-typedef struct _EMailSearchBarClass EMailSearchBarClass;
-typedef struct _EMailSearchBarPrivate EMailSearchBarPrivate;
-
-struct _EMailSearchBar {
- GtkHBox parent;
- EMailSearchBarPrivate *priv;
-};
-
-struct _EMailSearchBarClass {
- GtkHBoxClass parent_class;
-
- /* Signals */
- void (*changed) (EMailSearchBar *search_bar);
- void (*clear) (EMailSearchBar *search_bar);
-};
-
-GType e_mail_search_bar_get_type (void);
-GtkWidget * e_mail_search_bar_new (EWebView *web_view);
-void e_mail_search_bar_clear (EMailSearchBar *search_bar);
-void e_mail_search_bar_changed (EMailSearchBar *search_bar);
-EWebView * e_mail_search_bar_get_web_view (EMailSearchBar *search_bar);
-ESearchingTokenizer *
- e_mail_search_bar_get_tokenizer (EMailSearchBar *search_bar);
-gboolean e_mail_search_bar_get_active_search
- (EMailSearchBar *search_bar);
-gboolean e_mail_search_bar_get_case_sensitive
- (EMailSearchBar *search_bar);
-void e_mail_search_bar_set_case_sensitive
- (EMailSearchBar *search_bar,
- gboolean case_sensitive);
-gchar * e_mail_search_bar_get_text (EMailSearchBar *search_bar);
-void e_mail_search_bar_set_text (EMailSearchBar *search_bar,
- const gchar *text);
-
-G_END_DECLS
-
-#endif /* E_MAIL_SEARCH_BAR_H */
diff --git a/modules/addressbook/e-book-shell-content.c b/modules/addressbook/e-book-shell-content.c
index a7a616fc18..55b833269e 100644
--- a/modules/addressbook/e-book-shell-content.c
+++ b/modules/addressbook/e-book-shell-content.c
@@ -28,6 +28,7 @@
#include "e-util/gconf-bridge.h"
#include "shell/e-shell-utils.h"
#include "widgets/misc/e-paned.h"
+#include "widgets/misc/e-preview-pane.h"
#include "e-book-shell-view.h"
#define E_BOOK_SHELL_CONTENT_GET_PRIVATE(obj) \
@@ -37,7 +38,7 @@
struct _EBookShellContentPrivate {
GtkWidget *paned;
GtkWidget *notebook;
- GtkWidget *preview;
+ GtkWidget *preview_pane;
GtkOrientation orientation;
@@ -171,9 +172,9 @@ book_shell_content_dispose (GObject *object)
priv->notebook = NULL;
}
- if (priv->preview != NULL) {
- g_object_unref (priv->preview);
- priv->preview = NULL;
+ if (priv->preview_pane != NULL) {
+ g_object_unref (priv->preview_pane);
+ priv->preview_pane = NULL;
}
/* Chain up to parent's dispose() method. */
@@ -221,32 +222,24 @@ book_shell_content_constructed (GObject *object)
priv->notebook = g_object_ref (widget);
gtk_widget_show (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_pack2 (GTK_PANED (container), widget, FALSE, FALSE);
- gtk_widget_show (widget);
-
- e_binding_new (object, "preview-visible", widget, "visible");
-
- container = widget;
-
widget = eab_contact_display_new ();
eab_contact_display_set_mode (
EAB_CONTACT_DISPLAY (widget),
EAB_CONTACT_DISPLAY_RENDER_NORMAL);
e_shell_configure_web_view (shell, E_WEB_VIEW (widget));
- gtk_container_add (GTK_CONTAINER (container), widget);
- priv->preview = g_object_ref (widget);
gtk_widget_show (widget);
g_signal_connect_swapped (
widget, "send-message",
G_CALLBACK (book_shell_content_send_message_cb), object);
+ widget = e_preview_pane_new (E_WEB_VIEW (widget));
+ gtk_paned_pack2 (GTK_PANED (container), widget, FALSE, FALSE);
+ priv->preview_pane = g_object_ref (widget);
+ gtk_widget_show (widget);
+
+ e_binding_new (object, "preview-visible", widget, "visible");
+
/* Bind GObject properties to GConf keys. */
bridge = gconf_bridge_get ();
@@ -569,24 +562,19 @@ e_book_shell_content_set_current_view (EBookShellContent *book_shell_content,
g_object_notify (G_OBJECT (book_shell_content), "current-view");
}
-EABContactDisplay *
-e_book_shell_content_get_preview (EBookShellContent *book_shell_content)
-{
- g_return_val_if_fail (
- E_IS_BOOK_SHELL_CONTENT (book_shell_content), NULL);
-
- return EAB_CONTACT_DISPLAY (book_shell_content->priv->preview);
-}
-
EContact *
e_book_shell_content_get_preview_contact (EBookShellContent *book_shell_content)
{
+ EPreviewPane *preview_pane;
EABContactDisplay *display;
+ EWebView *web_view;
g_return_val_if_fail (
E_IS_BOOK_SHELL_CONTENT (book_shell_content), NULL);
- display = EAB_CONTACT_DISPLAY (book_shell_content->priv->preview);
+ preview_pane = E_PREVIEW_PANE (book_shell_content->priv->preview_pane);
+ web_view = e_preview_pane_get_web_view (preview_pane);
+ display = EAB_CONTACT_DISPLAY (web_view);
return eab_contact_display_get_contact (display);
}
@@ -595,16 +583,29 @@ void
e_book_shell_content_set_preview_contact (EBookShellContent *book_shell_content,
EContact *preview_contact)
{
+ EPreviewPane *preview_pane;
EABContactDisplay *display;
+ EWebView *web_view;
g_return_if_fail (E_IS_BOOK_SHELL_CONTENT (book_shell_content));
- display = EAB_CONTACT_DISPLAY (book_shell_content->priv->preview);
+ preview_pane = E_PREVIEW_PANE (book_shell_content->priv->preview_pane);
+ web_view = e_preview_pane_get_web_view (preview_pane);
+ display = EAB_CONTACT_DISPLAY (web_view);
eab_contact_display_set_contact (display, preview_contact);
g_object_notify (G_OBJECT (book_shell_content), "preview-contact");
}
+EPreviewPane *
+e_book_shell_content_get_preview_pane (EBookShellContent *book_shell_content)
+{
+ g_return_val_if_fail (
+ E_IS_BOOK_SHELL_CONTENT (book_shell_content), NULL);
+
+ return E_PREVIEW_PANE (book_shell_content->priv->preview_pane);
+}
+
gboolean
e_book_shell_content_get_preview_visible (EBookShellContent *book_shell_content)
{
diff --git a/modules/addressbook/e-book-shell-content.h b/modules/addressbook/e-book-shell-content.h
index 6ed5b38a62..595e366736 100644
--- a/modules/addressbook/e-book-shell-content.h
+++ b/modules/addressbook/e-book-shell-content.h
@@ -28,6 +28,8 @@
#include <shell/e-shell-searchbar.h>
#include <shell/e-shell-view.h>
+#include <misc/e-preview-pane.h>
+
#include "addressbook/gui/widgets/e-addressbook-view.h"
#include "eab-composer-util.h"
@@ -90,14 +92,13 @@ EAddressbookView *
void e_book_shell_content_set_current_view
(EBookShellContent *book_shell_content,
EAddressbookView *addressbook_view);
-EABContactDisplay *
- e_book_shell_content_get_preview
- (EBookShellContent *book_shell_content);
EContact * e_book_shell_content_get_preview_contact
(EBookShellContent *book_shell_content);
void e_book_shell_content_set_preview_contact
(EBookShellContent *book_shell_content,
EContact *preview_contact);
+EPreviewPane * e_book_shell_content_get_preview_pane
+ (EBookShellContent *book_shell_content);
gboolean e_book_shell_content_get_preview_visible
(EBookShellContent *book_shell_content);
void e_book_shell_content_set_preview_visible
diff --git a/modules/addressbook/e-book-shell-view-actions.c b/modules/addressbook/e-book-shell-view-actions.c
index e791f8e08d..32b227c723 100644
--- a/modules/addressbook/e-book-shell-view-actions.c
+++ b/modules/addressbook/e-book-shell-view-actions.c
@@ -341,6 +341,19 @@ action_contact_delete_cb (GtkAction *action,
}
static void
+action_contact_find_cb (GtkAction *action,
+ EBookShellView *book_shell_view)
+{
+ EBookShellContent *book_shell_content;
+ EPreviewPane *preview_pane;
+
+ book_shell_content = book_shell_view->priv->book_shell_content;
+ preview_pane = e_book_shell_content_get_preview_pane (book_shell_content);
+
+ e_preview_pane_show_search_bar (preview_pane);
+}
+
+static void
action_contact_forward_cb (GtkAction *action,
EBookShellView *book_shell_view)
{
@@ -722,6 +735,13 @@ static GtkActionEntry contact_entries[] = {
N_("Delete selected contacts"),
G_CALLBACK (action_contact_delete_cb) },
+ { "contact-find",
+ GTK_STOCK_FIND,
+ N_("_Find in Contact..."),
+ "<Shift><Control>f",
+ N_("Search for text in the displayed contact"),
+ G_CALLBACK (action_contact_find_cb) },
+
{ "contact-forward",
"mail-forward",
N_("_Forward Contact..."),
@@ -961,7 +981,8 @@ e_book_shell_view_actions_init (EBookShellView *book_shell_view)
EShellView *shell_view;
EShellWindow *shell_window;
EShellSearchbar *searchbar;
- EABContactDisplay *contact_preview;
+ EPreviewPane *preview_pane;
+ EWebView *web_view;
GtkActionGroup *action_group;
GConfBridge *bridge;
GtkAction *action;
@@ -973,7 +994,8 @@ e_book_shell_view_actions_init (EBookShellView *book_shell_view)
book_shell_content = book_shell_view->priv->book_shell_content;
searchbar = e_book_shell_content_get_searchbar (book_shell_content);
- contact_preview = e_book_shell_content_get_preview (book_shell_content);
+ preview_pane = e_book_shell_content_get_preview_pane (book_shell_content);
+ web_view = e_preview_pane_get_web_view (preview_pane);
/* Contact Actions */
action_group = ACTION_GROUP (CONTACTS);
@@ -1050,14 +1072,9 @@ e_book_shell_view_actions_init (EBookShellView *book_shell_view)
ACTION (CONTACT_PREVIEW), "active",
ACTION (CONTACT_VIEW_VERTICAL), "sensitive");
- e_web_view_set_open_proxy (
- E_WEB_VIEW (contact_preview), ACTION (CONTACT_OPEN));
-
- e_web_view_set_print_proxy (
- E_WEB_VIEW (contact_preview), ACTION (CONTACT_PRINT));
-
- e_web_view_set_save_as_proxy (
- E_WEB_VIEW (contact_preview), ACTION (CONTACT_SAVE_AS));
+ e_web_view_set_open_proxy (web_view, ACTION (CONTACT_OPEN));
+ e_web_view_set_print_proxy (web_view, ACTION (CONTACT_PRINT));
+ e_web_view_set_save_as_proxy (web_view, ACTION (CONTACT_SAVE_AS));
}
void
diff --git a/modules/addressbook/e-book-shell-view-actions.h b/modules/addressbook/e-book-shell-view-actions.h
index 250ec5fa99..ef40dd169f 100644
--- a/modules/addressbook/e-book-shell-view-actions.h
+++ b/modules/addressbook/e-book-shell-view-actions.h
@@ -49,6 +49,8 @@
E_SHELL_WINDOW_ACTION ((window), "contact-copy")
#define E_SHELL_WINDOW_ACTION_CONTACT_DELETE(window) \
E_SHELL_WINDOW_ACTION ((window), "contact-delete")
+#define E_SHELL_WINDOW_ACTION_CONTACT_FIND(window) \
+ E_SHELL_WINDOW_ACTION ((window), "contact-find")
#define E_SHELL_WINDOW_ACTION_CONTACT_FORWARD(window) \
E_SHELL_WINDOW_ACTION ((window), "contact-forward")
#define E_SHELL_WINDOW_ACTION_CONTACT_MOVE(window) \
diff --git a/modules/addressbook/e-book-shell-view.c b/modules/addressbook/e-book-shell-view.c
index 555ab13abf..3ecea2c49f 100644
--- a/modules/addressbook/e-book-shell-view.c
+++ b/modules/addressbook/e-book-shell-view.c
@@ -327,6 +327,10 @@ book_shell_view_update_actions (EShellView *shell_view)
sensitive = source_is_editable && any_contacts_selected;
gtk_action_set_sensitive (action, sensitive);
+ action = ACTION (CONTACT_FIND);
+ sensitive = single_contact_selected;
+ gtk_action_set_sensitive (action, sensitive);
+
action = ACTION (CONTACT_FORWARD);
sensitive = any_contacts_selected;
gtk_action_set_sensitive (action, sensitive);
diff --git a/modules/calendar/e-memo-shell-content.c b/modules/calendar/e-memo-shell-content.c
index 852c0bbf42..e34af1fbf8 100644
--- a/modules/calendar/e-memo-shell-content.c
+++ b/modules/calendar/e-memo-shell-content.c
@@ -29,8 +29,10 @@
#include "shell/e-shell-utils.h"
#include "widgets/menus/gal-view-etable.h"
#include "widgets/misc/e-paned.h"
+#include "widgets/misc/e-preview-pane.h"
#include "calendar/gui/comp-util.h"
+#include "calendar/gui/e-cal-component-preview.h"
#include "calendar/gui/e-cal-model-memos.h"
#include "calendar/gui/e-memo-table.h"
@@ -50,7 +52,7 @@
struct _EMemoShellContentPrivate {
GtkWidget *paned;
GtkWidget *memo_table;
- GtkWidget *memo_preview;
+ GtkWidget *preview_pane;
ECalModel *memo_model;
GalViewInstance *view_instance;
@@ -192,10 +194,15 @@ memo_shell_content_cursor_change_cb (EMemoShellContent *memo_shell_content,
ECalModel *memo_model;
ECalModelComponent *comp_data;
ECalComponent *comp;
+ EPreviewPane *preview_pane;
+ EWebView *web_view;
const gchar *uid;
memo_model = e_memo_shell_content_get_memo_model (memo_shell_content);
- memo_preview = e_memo_shell_content_get_memo_preview (memo_shell_content);
+ preview_pane = e_memo_shell_content_get_preview_pane (memo_shell_content);
+
+ web_view = e_preview_pane_get_web_view (preview_pane);
+ memo_preview = E_CAL_COMPONENT_PREVIEW (web_view);
if (e_table_selected_count (table) != 1) {
e_cal_component_preview_clear (memo_preview);
@@ -223,8 +230,13 @@ memo_shell_content_selection_change_cb (EMemoShellContent *memo_shell_content,
ETable *table)
{
ECalComponentPreview *memo_preview;
+ EPreviewPane *preview_pane;
+ EWebView *web_view;
+
+ preview_pane = e_memo_shell_content_get_preview_pane (memo_shell_content);
- memo_preview = e_memo_shell_content_get_memo_preview (memo_shell_content);
+ web_view = e_preview_pane_get_web_view (preview_pane);
+ memo_preview = E_CAL_COMPONENT_PREVIEW (web_view);
/* XXX Old code emits a "selection-changed" signal here. */
@@ -347,9 +359,9 @@ memo_shell_content_dispose (GObject *object)
priv->memo_table = NULL;
}
- if (priv->memo_preview != NULL) {
- g_object_unref (priv->memo_preview);
- priv->memo_preview = NULL;
+ if (priv->preview_pane != NULL) {
+ g_object_unref (priv->preview_pane);
+ priv->preview_pane = NULL;
}
if (priv->memo_model != NULL) {
@@ -445,25 +457,10 @@ memo_shell_content_constructed (GObject *object)
container = priv->paned;
- 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_pack2 (GTK_PANED (container), widget, FALSE, FALSE);
- gtk_widget_show (widget);
-
- e_binding_new (object, "preview-visible", widget, "visible");
-
- container = widget;
-
widget = e_cal_component_preview_new ();
e_cal_component_preview_set_default_timezone (
E_CAL_COMPONENT_PREVIEW (widget), timezone);
e_shell_configure_web_view (shell, E_WEB_VIEW (widget));
- gtk_container_add (GTK_CONTAINER (container), widget);
- priv->memo_preview = g_object_ref (widget);
gtk_widget_show (widget);
g_signal_connect_swapped (
@@ -471,6 +468,13 @@ memo_shell_content_constructed (GObject *object)
G_CALLBACK (e_shell_taskbar_set_message),
shell_taskbar);
+ widget = e_preview_pane_new (E_WEB_VIEW (widget));
+ gtk_paned_pack2 (GTK_PANED (container), widget, FALSE, FALSE);
+ priv->preview_pane = g_object_ref (widget);
+ gtk_widget_show (widget);
+
+ e_binding_new (object, "preview-visible", widget, "visible");
+
/* Configure the memo table. */
e_table_set_state (
@@ -681,23 +685,22 @@ e_memo_shell_content_get_memo_model (EMemoShellContent *memo_shell_content)
return memo_shell_content->priv->memo_model;
}
-ECalComponentPreview *
-e_memo_shell_content_get_memo_preview (EMemoShellContent *memo_shell_content)
+EMemoTable *
+e_memo_shell_content_get_memo_table (EMemoShellContent *memo_shell_content)
{
g_return_val_if_fail (
E_IS_MEMO_SHELL_CONTENT (memo_shell_content), NULL);
- return E_CAL_COMPONENT_PREVIEW (
- memo_shell_content->priv->memo_preview);
+ return E_MEMO_TABLE (memo_shell_content->priv->memo_table);
}
-EMemoTable *
-e_memo_shell_content_get_memo_table (EMemoShellContent *memo_shell_content)
+EPreviewPane *
+e_memo_shell_content_get_preview_pane (EMemoShellContent *memo_shell_content)
{
g_return_val_if_fail (
E_IS_MEMO_SHELL_CONTENT (memo_shell_content), NULL);
- return E_MEMO_TABLE (memo_shell_content->priv->memo_table);
+ return E_PREVIEW_PANE (memo_shell_content->priv->preview_pane);
}
gboolean
diff --git a/modules/calendar/e-memo-shell-content.h b/modules/calendar/e-memo-shell-content.h
index 16aae229b2..4567a94aa9 100644
--- a/modules/calendar/e-memo-shell-content.h
+++ b/modules/calendar/e-memo-shell-content.h
@@ -27,9 +27,9 @@
#include <shell/e-shell-view.h>
#include <calendar/gui/e-memo-table.h>
-#include <calendar/gui/e-cal-component-preview.h>
#include <menus/gal-view-instance.h>
+#include <misc/e-preview-pane.h>
/* Standard GObject macros */
#define E_TYPE_MEMO_SHELL_CONTENT \
@@ -78,11 +78,10 @@ void e_memo_shell_content_register_type
GtkWidget * e_memo_shell_content_new(EShellView *shell_view);
ECalModel * e_memo_shell_content_get_memo_model
(EMemoShellContent *memo_shell_conent);
-ECalComponentPreview *
- e_memo_shell_content_get_memo_preview
- (EMemoShellContent *memo_shell_content);
EMemoTable * e_memo_shell_content_get_memo_table
(EMemoShellContent *memo_shell_content);
+EPreviewPane * e_memo_shell_content_get_preview_pane
+ (EMemoShellContent *memo_shell_content);
gboolean e_memo_shell_content_get_preview_visible
(EMemoShellContent *memo_shell_content);
void e_memo_shell_content_set_preview_visible
diff --git a/modules/calendar/e-memo-shell-view-actions.c b/modules/calendar/e-memo-shell-view-actions.c
index 1c0a7ef9ef..24aced8528 100644
--- a/modules/calendar/e-memo-shell-view-actions.c
+++ b/modules/calendar/e-memo-shell-view-actions.c
@@ -56,6 +56,19 @@ action_memo_delete_cb (GtkAction *action,
}
static void
+action_memo_find_cb (GtkAction *action,
+ EMemoShellView *memo_shell_view)
+{
+ EMemoShellContent *memo_shell_content;
+ EPreviewPane *preview_pane;
+
+ memo_shell_content = memo_shell_view->priv->memo_shell_content;
+ preview_pane = e_memo_shell_content_get_preview_pane (memo_shell_content);
+
+ e_preview_pane_show_search_bar (preview_pane);
+}
+
+static void
action_memo_forward_cb (GtkAction *action,
EMemoShellView *memo_shell_view)
{
@@ -564,6 +577,13 @@ static GtkActionEntry memo_entries[] = {
N_("Delete selected memos"),
G_CALLBACK (action_memo_delete_cb) },
+ { "memo-find",
+ GTK_STOCK_FIND,
+ N_("_Find in Memo..."),
+ "<Shift><Control>f",
+ N_("Search for text in the displayed memo"),
+ G_CALLBACK (action_memo_find_cb) },
+
{ "memo-forward",
"mail-forward",
N_("_Forward as iCalendar..."),
@@ -831,7 +851,8 @@ e_memo_shell_view_actions_init (EMemoShellView *memo_shell_view)
EShellView *shell_view;
EShellWindow *shell_window;
EShellSearchbar *searchbar;
- ECalComponentPreview *memo_preview;
+ EPreviewPane *preview_pane;
+ EWebView *web_view;
GtkActionGroup *action_group;
GConfBridge *bridge;
GtkAction *action;
@@ -843,7 +864,8 @@ e_memo_shell_view_actions_init (EMemoShellView *memo_shell_view)
memo_shell_content = memo_shell_view->priv->memo_shell_content;
searchbar = e_memo_shell_content_get_searchbar (memo_shell_content);
- memo_preview = e_memo_shell_content_get_memo_preview (memo_shell_content);
+ preview_pane = e_memo_shell_content_get_preview_pane (memo_shell_content);
+ web_view = e_preview_pane_get_web_view (preview_pane);
/* Memo Actions */
action_group = ACTION_GROUP (MEMOS);
@@ -920,14 +942,9 @@ e_memo_shell_view_actions_init (EMemoShellView *memo_shell_view)
ACTION (MEMO_PREVIEW), "active",
ACTION (MEMO_VIEW_VERTICAL), "sensitive");
- e_web_view_set_open_proxy (
- E_WEB_VIEW (memo_preview), ACTION (MEMO_OPEN));
-
- e_web_view_set_print_proxy (
- E_WEB_VIEW (memo_preview), ACTION (MEMO_PRINT));
-
- e_web_view_set_save_as_proxy (
- E_WEB_VIEW (memo_preview), ACTION (MEMO_SAVE_AS));
+ e_web_view_set_open_proxy (web_view, ACTION (MEMO_OPEN));
+ e_web_view_set_print_proxy (web_view, ACTION (MEMO_PRINT));
+ e_web_view_set_save_as_proxy (web_view, ACTION (MEMO_SAVE_AS));
}
void
diff --git a/modules/calendar/e-memo-shell-view-actions.h b/modules/calendar/e-memo-shell-view-actions.h
index 5b49ca06b1..c9d144b5d4 100644
--- a/modules/calendar/e-memo-shell-view-actions.h
+++ b/modules/calendar/e-memo-shell-view-actions.h
@@ -27,6 +27,8 @@
/* Memo Actions */
#define E_SHELL_WINDOW_ACTION_MEMO_DELETE(window) \
E_SHELL_WINDOW_ACTION ((window), "memo-delete")
+#define E_SHELL_WINDOW_ACTION_MEMO_FIND(window) \
+ E_SHELL_WINDOW_ACTION ((window), "memo-find")
#define E_SHELL_WINDOW_ACTION_MEMO_FORWARD(window) \
E_SHELL_WINDOW_ACTION ((window), "memo-forward")
#define E_SHELL_WINDOW_ACTION_MEMO_NEW(window) \
diff --git a/modules/calendar/e-memo-shell-view-private.c b/modules/calendar/e-memo-shell-view-private.c
index 583af2af17..9e2be0fe7d 100644
--- a/modules/calendar/e-memo-shell-view-private.c
+++ b/modules/calendar/e-memo-shell-view-private.c
@@ -430,18 +430,23 @@ e_memo_shell_view_update_timezone (EMemoShellView *memo_shell_view)
EMemoShellContent *memo_shell_content;
EMemoShellSidebar *memo_shell_sidebar;
ECalComponentPreview *memo_preview;
+ EPreviewPane *preview_pane;
+ EWebView *web_view;
icaltimezone *timezone;
ECalModel *model;
GList *clients, *iter;
memo_shell_content = memo_shell_view->priv->memo_shell_content;
- memo_preview = e_memo_shell_content_get_memo_preview (memo_shell_content);
+ preview_pane = e_memo_shell_content_get_preview_pane (memo_shell_content);
model = e_memo_shell_content_get_memo_model (memo_shell_content);
timezone = e_cal_model_get_timezone (model);
memo_shell_sidebar = memo_shell_view->priv->memo_shell_sidebar;
clients = e_memo_shell_sidebar_get_clients (memo_shell_sidebar);
+ web_view = e_preview_pane_get_web_view (preview_pane);
+ memo_preview = E_CAL_COMPONENT_PREVIEW (web_view);
+
for (iter = clients; iter != NULL; iter = iter->next) {
ECal *client = iter->data;
diff --git a/modules/calendar/e-memo-shell-view.c b/modules/calendar/e-memo-shell-view.c
index 07a58aa1c9..870d5aedc8 100644
--- a/modules/calendar/e-memo-shell-view.c
+++ b/modules/calendar/e-memo-shell-view.c
@@ -61,7 +61,9 @@ memo_shell_view_execute_search (EShellView *shell_view)
EActionComboBox *combo_box;
GtkRadioAction *action;
ECalComponentPreview *memo_preview;
+ EPreviewPane *preview_pane;
EMemoTable *memo_table;
+ EWebView *web_view;
ECalModel *model;
gchar *query;
gchar *temp;
@@ -155,8 +157,11 @@ memo_shell_view_execute_search (EShellView *shell_view)
e_cal_model_set_search_query (model, query);
g_free (query);
- memo_preview =
- e_memo_shell_content_get_memo_preview (memo_shell_content);
+ preview_pane =
+ e_memo_shell_content_get_preview_pane (memo_shell_content);
+
+ web_view = e_preview_pane_get_web_view (preview_pane);
+ memo_preview = E_CAL_COMPONENT_PREVIEW (web_view);
e_cal_component_preview_clear (memo_preview);
}
@@ -220,6 +225,10 @@ memo_shell_view_update_actions (EShellView *shell_view)
label = _("Delete Memo");
g_object_set (action, "label", label, NULL);
+ action = ACTION (MEMO_FIND);
+ sensitive = single_memo_selected;
+ gtk_action_set_sensitive (action, sensitive);
+
action = ACTION (MEMO_FORWARD);
sensitive = single_memo_selected;
gtk_action_set_sensitive (action, sensitive);
diff --git a/modules/calendar/e-task-shell-content.c b/modules/calendar/e-task-shell-content.c
index 11bc28af62..fd76fe7513 100644
--- a/modules/calendar/e-task-shell-content.c
+++ b/modules/calendar/e-task-shell-content.c
@@ -29,8 +29,10 @@
#include "shell/e-shell-utils.h"
#include "widgets/menus/gal-view-etable.h"
#include "widgets/misc/e-paned.h"
+#include "widgets/misc/e-preview-pane.h"
#include "calendar/gui/comp-util.h"
+#include "calendar/gui/e-cal-component-preview.h"
#include "calendar/gui/e-cal-model-tasks.h"
#define E_TASK_SHELL_CONTENT_GET_PRIVATE(obj) \
@@ -50,7 +52,7 @@
struct _ETaskShellContentPrivate {
GtkWidget *paned;
GtkWidget *task_table;
- GtkWidget *task_preview;
+ GtkWidget *preview_pane;
ECalModel *task_model;
GalViewInstance *view_instance;
@@ -192,10 +194,15 @@ task_shell_content_cursor_change_cb (ETaskShellContent *task_shell_content,
ECalModel *task_model;
ECalModelComponent *comp_data;
ECalComponent *comp;
+ EPreviewPane *preview_pane;
+ EWebView *web_view;
const gchar *uid;
task_model = e_task_shell_content_get_task_model (task_shell_content);
- task_preview = e_task_shell_content_get_task_preview (task_shell_content);
+ preview_pane = e_task_shell_content_get_preview_pane (task_shell_content);
+
+ web_view = e_preview_pane_get_web_view (preview_pane);
+ task_preview = E_CAL_COMPONENT_PREVIEW (web_view);
if (e_table_selected_count (table) != 1) {
e_cal_component_preview_clear (task_preview);
@@ -223,8 +230,13 @@ task_shell_content_selection_change_cb (ETaskShellContent *task_shell_content,
ETable *table)
{
ECalComponentPreview *task_preview;
+ EPreviewPane *preview_pane;
+ EWebView *web_view;
+
+ preview_pane = e_task_shell_content_get_preview_pane (task_shell_content);
- task_preview = e_task_shell_content_get_task_preview (task_shell_content);
+ web_view = e_preview_pane_get_web_view (preview_pane);
+ task_preview = E_CAL_COMPONENT_PREVIEW (web_view);
if (e_table_selected_count (table) != 1)
e_cal_component_preview_clear (task_preview);
@@ -345,9 +357,9 @@ task_shell_content_dispose (GObject *object)
priv->task_table = NULL;
}
- if (priv->task_preview != NULL) {
- g_object_unref (priv->task_preview);
- priv->task_preview = NULL;
+ if (priv->preview_pane != NULL) {
+ g_object_unref (priv->preview_pane);
+ priv->preview_pane = NULL;
}
if (priv->task_model != NULL) {
@@ -442,25 +454,10 @@ task_shell_content_constructed (GObject *object)
container = priv->paned;
- 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_pack2 (GTK_PANED (container), widget, FALSE, FALSE);
- gtk_widget_show (widget);
-
- e_binding_new (object, "preview-visible", widget, "visible");
-
- container = widget;
-
widget = e_cal_component_preview_new ();
e_cal_component_preview_set_default_timezone (
E_CAL_COMPONENT_PREVIEW (widget), timezone);
e_shell_configure_web_view (shell, E_WEB_VIEW (widget));
- gtk_container_add (GTK_CONTAINER (container), widget);
- priv->task_preview = g_object_ref (widget);
gtk_widget_show (widget);
g_signal_connect_swapped (
@@ -468,6 +465,13 @@ task_shell_content_constructed (GObject *object)
G_CALLBACK (e_shell_taskbar_set_message),
shell_taskbar);
+ widget = e_preview_pane_new (E_WEB_VIEW (widget));
+ gtk_paned_pack2 (GTK_PANED (container), widget, FALSE, FALSE);
+ priv->preview_pane = g_object_ref (widget);
+ gtk_widget_show (widget);
+
+ e_binding_new (object, "preview-visible", widget, "visible");
+
/* Configure the task table. */
e_table_set_state (
@@ -703,23 +707,22 @@ e_task_shell_content_get_task_model (ETaskShellContent *task_shell_content)
return task_shell_content->priv->task_model;
}
-ECalComponentPreview *
-e_task_shell_content_get_task_preview (ETaskShellContent *task_shell_content)
+ETaskTable *
+e_task_shell_content_get_task_table (ETaskShellContent *task_shell_content)
{
g_return_val_if_fail (
E_IS_TASK_SHELL_CONTENT (task_shell_content), NULL);
- return E_CAL_COMPONENT_PREVIEW (
- task_shell_content->priv->task_preview);
+ return E_TASK_TABLE (task_shell_content->priv->task_table);
}
-ETaskTable *
-e_task_shell_content_get_task_table (ETaskShellContent *task_shell_content)
+EPreviewPane *
+e_task_shell_content_get_preview_pane (ETaskShellContent *task_shell_content)
{
g_return_val_if_fail (
E_IS_TASK_SHELL_CONTENT (task_shell_content), NULL);
- return E_TASK_TABLE (task_shell_content->priv->task_table);
+ return E_PREVIEW_PANE (task_shell_content->priv->preview_pane);
}
gboolean
diff --git a/modules/calendar/e-task-shell-content.h b/modules/calendar/e-task-shell-content.h
index dd39f8c6ce..d4e67d1b95 100644
--- a/modules/calendar/e-task-shell-content.h
+++ b/modules/calendar/e-task-shell-content.h
@@ -27,10 +27,10 @@
#include <shell/e-shell-view.h>
#include <calendar/gui/e-cal-model.h>
-#include <calendar/gui/e-cal-component-preview.h>
#include <calendar/gui/e-task-table.h>
#include <menus/gal-view-instance.h>
+#include <misc/e-preview-pane.h>
/* Standard GObject macros */
#define E_TYPE_TASK_SHELL_CONTENT \
@@ -82,11 +82,10 @@ void e_task_shell_content_register_type
GtkWidget * e_task_shell_content_new(EShellView *shell_view);
ECalModel * e_task_shell_content_get_task_model
(ETaskShellContent *task_shell_content);
-ECalComponentPreview *
- e_task_shell_content_get_task_preview
- (ETaskShellContent *task_shell_content);
ETaskTable * e_task_shell_content_get_task_table
(ETaskShellContent *task_shell_content);
+EPreviewPane * e_task_shell_content_get_preview_pane
+ (ETaskShellContent *task_shell_content);
gboolean e_task_shell_content_get_preview_visible
(ETaskShellContent *task_shell_content);
void e_task_shell_content_set_preview_visible
diff --git a/modules/calendar/e-task-shell-view-actions.c b/modules/calendar/e-task-shell-view-actions.c
index bd3d0627ff..c18882dd2b 100644
--- a/modules/calendar/e-task-shell-view-actions.c
+++ b/modules/calendar/e-task-shell-view-actions.c
@@ -87,6 +87,19 @@ action_task_delete_cb (GtkAction *action,
}
static void
+action_task_find_cb (GtkAction *action,
+ ETaskShellView *task_shell_view)
+{
+ ETaskShellContent *task_shell_content;
+ EPreviewPane *preview_pane;
+
+ task_shell_content = task_shell_view->priv->task_shell_content;
+ preview_pane = e_task_shell_content_get_preview_pane (task_shell_content);
+
+ e_preview_pane_show_search_bar (preview_pane);
+}
+
+static void
action_task_forward_cb (GtkAction *action,
ETaskShellView *task_shell_view)
{
@@ -688,6 +701,13 @@ static GtkActionEntry task_entries[] = {
N_("Delete selected tasks"),
G_CALLBACK (action_task_delete_cb) },
+ { "task-find",
+ GTK_STOCK_FIND,
+ N_("_Find in Task..."),
+ "<Shift><Control>f",
+ N_("Search for text in the displayed task"),
+ G_CALLBACK (action_task_find_cb) },
+
{ "task-forward",
"mail-forward",
N_("_Forward as iCalendar..."),
@@ -1030,7 +1050,8 @@ e_task_shell_view_actions_init (ETaskShellView *task_shell_view)
EShellView *shell_view;
EShellWindow *shell_window;
EShellSearchbar *searchbar;
- ECalComponentPreview *task_preview;
+ EPreviewPane *preview_pane;
+ EWebView *web_view;
GtkActionGroup *action_group;
GConfBridge *bridge;
GtkAction *action;
@@ -1042,7 +1063,8 @@ e_task_shell_view_actions_init (ETaskShellView *task_shell_view)
task_shell_content = task_shell_view->priv->task_shell_content;
searchbar = e_task_shell_content_get_searchbar (task_shell_content);
- task_preview = e_task_shell_content_get_task_preview (task_shell_content);
+ preview_pane = e_task_shell_content_get_preview_pane (task_shell_content);
+ web_view = e_preview_pane_get_web_view (preview_pane);
/* Task Actions */
action_group = ACTION_GROUP (TASKS);
@@ -1119,14 +1141,9 @@ e_task_shell_view_actions_init (ETaskShellView *task_shell_view)
ACTION (TASK_PREVIEW), "active",
ACTION (TASK_VIEW_VERTICAL), "sensitive");
- e_web_view_set_open_proxy (
- E_WEB_VIEW (task_preview), ACTION (TASK_OPEN));
-
- e_web_view_set_print_proxy (
- E_WEB_VIEW (task_preview), ACTION (TASK_PRINT));
-
- e_web_view_set_save_as_proxy (
- E_WEB_VIEW (task_preview), ACTION (TASK_SAVE_AS));
+ e_web_view_set_open_proxy (web_view, ACTION (TASK_OPEN));
+ e_web_view_set_print_proxy (web_view, ACTION (TASK_PRINT));
+ e_web_view_set_save_as_proxy (web_view, ACTION (TASK_SAVE_AS));
}
void
diff --git a/modules/calendar/e-task-shell-view-actions.h b/modules/calendar/e-task-shell-view-actions.h
index f323fb38f9..afa9fe3e1b 100644
--- a/modules/calendar/e-task-shell-view-actions.h
+++ b/modules/calendar/e-task-shell-view-actions.h
@@ -29,6 +29,8 @@
E_SHELL_WINDOW_ACTION ((window), "task-assign")
#define E_SHELL_WINDOW_ACTION_TASK_DELETE(window) \
E_SHELL_WINDOW_ACTION ((window), "task-delete")
+#define E_SHELL_WINDOW_ACTION_TASK_FIND(window) \
+ E_SHELL_WINDOW_ACTION ((window), "task-find")
#define E_SHELL_WINDOW_ACTION_TASK_FORWARD(window) \
E_SHELL_WINDOW_ACTION ((window), "task-forward")
#define E_SHELL_WINDOW_ACTION_TASK_MARK_COMPLETE(window) \
diff --git a/modules/calendar/e-task-shell-view-private.c b/modules/calendar/e-task-shell-view-private.c
index 6704a3b4c0..4b04185d0d 100644
--- a/modules/calendar/e-task-shell-view-private.c
+++ b/modules/calendar/e-task-shell-view-private.c
@@ -580,18 +580,23 @@ e_task_shell_view_update_timezone (ETaskShellView *task_shell_view)
ETaskShellContent *task_shell_content;
ETaskShellSidebar *task_shell_sidebar;
ECalComponentPreview *task_preview;
+ EPreviewPane *preview_pane;
+ EWebView *web_view;
icaltimezone *timezone;
ECalModel *model;
GList *clients, *iter;
task_shell_content = task_shell_view->priv->task_shell_content;
- task_preview = e_task_shell_content_get_task_preview (task_shell_content);
+ preview_pane = e_task_shell_content_get_preview_pane (task_shell_content);
model = e_task_shell_content_get_task_model (task_shell_content);
timezone = e_cal_model_get_timezone (model);
task_shell_sidebar = task_shell_view->priv->task_shell_sidebar;
clients = e_task_shell_sidebar_get_clients (task_shell_sidebar);
+ web_view = e_preview_pane_get_web_view (preview_pane);
+ task_preview = E_CAL_COMPONENT_PREVIEW (web_view);
+
for (iter = clients; iter != NULL; iter = iter->next) {
ECal *client = iter->data;
diff --git a/modules/calendar/e-task-shell-view.c b/modules/calendar/e-task-shell-view.c
index 36b9db5b56..b2146f5e59 100644
--- a/modules/calendar/e-task-shell-view.c
+++ b/modules/calendar/e-task-shell-view.c
@@ -100,7 +100,9 @@ task_shell_view_execute_search (EShellView *shell_view)
EActionComboBox *combo_box;
GtkRadioAction *action;
ECalComponentPreview *task_preview;
+ EPreviewPane *preview_pane;
ETaskTable *task_table;
+ EWebView *web_view;
ECalModel *model;
time_t start_range;
time_t end_range;
@@ -268,8 +270,11 @@ task_shell_view_execute_search (EShellView *shell_view)
e_cal_model_set_search_query (model, query);
g_free (query);
- task_preview =
- e_task_shell_content_get_task_preview (task_shell_content);
+ preview_pane =
+ e_task_shell_content_get_preview_pane (task_shell_content);
+
+ web_view = e_preview_pane_get_web_view (preview_pane);
+ task_preview = E_CAL_COMPONENT_PREVIEW (web_view);
e_cal_component_preview_clear (task_preview);
}
@@ -348,6 +353,10 @@ task_shell_view_update_actions (EShellView *shell_view)
label = _("Delete Task");
g_object_set (action, "label", label, NULL);
+ action = ACTION (TASK_FIND);
+ sensitive = single_task_selected;
+ gtk_action_set_sensitive (action, sensitive);
+
action = ACTION (TASK_FORWARD);
sensitive = single_task_selected;
gtk_action_set_sensitive (action, sensitive);
diff --git a/modules/mail/e-mail-shell-content.c b/modules/mail/e-mail-shell-content.c
index 5ba85b27b7..423f3ec0c2 100644
--- a/modules/mail/e-mail-shell-content.c
+++ b/modules/mail/e-mail-shell-content.c
@@ -30,6 +30,8 @@
#include "widgets/menus/gal-view-etable.h"
#include "widgets/menus/gal-view-instance.h"
#include "widgets/misc/e-paned.h"
+#include "widgets/misc/e-preview-pane.h"
+#include "widgets/misc/e-search-bar.h"
#include "em-utils.h"
#include "mail-config.h"
@@ -37,7 +39,6 @@
#include "message-list.h"
#include "e-mail-reader.h"
-#include "e-mail-search-bar.h"
#include "e-mail-shell-backend.h"
#include "e-mail-shell-view-actions.h"
@@ -361,6 +362,7 @@ mail_shell_content_constructed (GObject *object)
EShellContent *shell_content;
EShellBackend *shell_backend;
EShellView *shell_view;
+ ESearchBar *search_bar;
EMailReader *reader;
GtkWidget *message_list;
GConfBridge *bridge;
@@ -390,9 +392,7 @@ mail_shell_content_constructed (GObject *object)
priv->paned = g_object_ref (widget);
gtk_widget_show (widget);
- e_binding_new (
- object, "orientation",
- widget, "orientation");
+ e_binding_new (object, "orientation", widget, "orientation");
container = priv->paned;
@@ -415,34 +415,19 @@ mail_shell_content_constructed (GObject *object)
container = priv->paned;
- widget = gtk_vbox_new (FALSE, 1);
+ gtk_widget_show (GTK_WIDGET (web_view));
+
+ widget = e_preview_pane_new (web_view);
gtk_paned_pack2 (GTK_PANED (container), widget, FALSE, FALSE);
gtk_widget_show (widget);
- e_binding_new (
- object, "preview-visible",
- widget, "visible");
-
- 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_container_add (GTK_CONTAINER (widget), GTK_WIDGET (web_view));
- gtk_box_pack_start (GTK_BOX (container), widget, TRUE, TRUE, 0);
- gtk_widget_show (GTK_WIDGET (web_view));
- gtk_widget_show (widget);
+ e_binding_new (object, "preview-visible", widget, "visible");
- widget = e_mail_search_bar_new (web_view);
- gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0);
- priv->search_bar = g_object_ref (widget);
- gtk_widget_hide (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 (
- widget, "changed",
+ search_bar, "changed",
G_CALLBACK (em_format_redraw), priv->html_display);
/* Load the view instance. */
@@ -928,13 +913,13 @@ void
e_mail_shell_content_set_search_strings (EMailShellContent *mail_shell_content,
GSList *search_strings)
{
- EMailSearchBar *search_bar;
+ ESearchBar *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);
+ search_bar = E_SEARCH_BAR (mail_shell_content->priv->search_bar);
+ tokenizer = e_search_bar_get_tokenizer (search_bar);
e_searching_tokenizer_set_secondary_case_sensitivity (tokenizer, FALSE);
e_searching_tokenizer_set_secondary_search_string (tokenizer, NULL);
@@ -945,7 +930,7 @@ e_mail_shell_content_set_search_strings (EMailShellContent *mail_shell_content,
search_strings = g_slist_next (search_strings);
}
- e_mail_search_bar_changed (search_bar);
+ e_search_bar_changed (search_bar);
}
void
diff --git a/ui/evolution-contacts.ui b/ui/evolution-contacts.ui
index 1dc66b44bc..11dc1f20d0 100644
--- a/ui/evolution-contacts.ui
+++ b/ui/evolution-contacts.ui
@@ -15,6 +15,8 @@
<placeholder name='edit-actions'>
<menuitem action='contact-delete'/>
<menuitem action='address-book-delete'/>
+ <separator/>
+ <menuitem action='contact-find'/>
</placeholder>
</menu>
<menu action='view-menu'>
diff --git a/ui/evolution-memos.ui b/ui/evolution-memos.ui
index c20ebc5334..dbe42c7714 100644
--- a/ui/evolution-memos.ui
+++ b/ui/evolution-memos.ui
@@ -13,6 +13,8 @@
<placeholder name='edit-actions'>
<menuitem action='memo-delete'/>
<menuitem action='memo-list-delete'/>
+ <separator/>
+ <menuitem action='memo-find'/>
</placeholder>
</menu>
<menu action='view-menu'>
diff --git a/ui/evolution-tasks.ui b/ui/evolution-tasks.ui
index 4483c95a1e..62d9f023b7 100644
--- a/ui/evolution-tasks.ui
+++ b/ui/evolution-tasks.ui
@@ -14,6 +14,8 @@
<menuitem action='task-delete'/>
<menuitem action='task-list-delete'/>
<separator/>
+ <menuitem action='task-find'/>
+ <separator/>
<menuitem action='task-mark-complete'/>
<menuitem action='task-mark-incomplete'/>
</placeholder>
diff --git a/widgets/misc/Makefile.am b/widgets/misc/Makefile.am
index 5853039fb0..44d8c9a577 100644
--- a/widgets/misc/Makefile.am
+++ b/widgets/misc/Makefile.am
@@ -58,7 +58,10 @@ widgetsinclude_HEADERS = \
e-popup-action.h \
e-popup-menu.h \
e-preferences-window.h \
+ e-preview-pane.h \
e-printable.h \
+ e-search-bar.h \
+ e-searching-tokenizer.h \
e-selectable.h \
e-selection-model.h \
e-selection-model-array.h \
@@ -133,7 +136,10 @@ libemiscwidgets_la_SOURCES = \
e-popup-action.c \
e-popup-menu.c \
e-preferences-window.c \
+ e-preview-pane.c \
e-printable.c \
+ e-search-bar.c \
+ e-searching-tokenizer.c \
e-selectable.c \
e-selection-model.c \
e-selection-model-array.c \
diff --git a/widgets/misc/e-preview-pane.c b/widgets/misc/e-preview-pane.c
new file mode 100644
index 0000000000..240bfbd824
--- /dev/null
+++ b/widgets/misc/e-preview-pane.c
@@ -0,0 +1,275 @@
+/*
+ * e-preview-pane.c
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ *
+ * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
+ *
+ */
+
+#include "e-preview-pane.h"
+
+#include <gdk/gdkkeysyms.h>
+
+#define E_PREVIEW_PANE_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), E_TYPE_PREVIEW_PANE, EPreviewPanePrivate))
+
+struct _EPreviewPanePrivate {
+ GtkWidget *web_view;
+ GtkWidget *search_bar;
+};
+
+enum {
+ PROP_0,
+ PROP_SEARCH_BAR,
+ PROP_WEB_VIEW
+};
+
+enum {
+ SHOW_SEARCH_BAR,
+ LAST_SIGNAL
+};
+
+static gpointer parent_class;
+static guint signals[LAST_SIGNAL];
+
+static void
+preview_pane_set_web_view (EPreviewPane *preview_pane,
+ EWebView *web_view)
+{
+ g_return_if_fail (E_IS_WEB_VIEW (web_view));
+ g_return_if_fail (preview_pane->priv->web_view == NULL);
+
+ preview_pane->priv->web_view = g_object_ref_sink (web_view);
+}
+
+static void
+preview_pane_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ switch (property_id) {
+ case PROP_WEB_VIEW:
+ preview_pane_set_web_view (
+ E_PREVIEW_PANE (object),
+ g_value_get_object (value));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+}
+
+static void
+preview_pane_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ switch (property_id) {
+ case PROP_SEARCH_BAR:
+ g_value_set_object (
+ value, e_preview_pane_get_search_bar (
+ E_PREVIEW_PANE (object)));
+ return;
+
+ case PROP_WEB_VIEW:
+ g_value_set_object (
+ value, e_preview_pane_get_web_view (
+ E_PREVIEW_PANE (object)));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+}
+
+static void
+preview_pane_dispose (GObject *object)
+{
+ EPreviewPanePrivate *priv;
+
+ priv = E_PREVIEW_PANE_GET_PRIVATE (object);
+
+ if (priv->search_bar != NULL) {
+ g_object_unref (priv->search_bar);
+ priv->search_bar = NULL;
+ }
+
+ if (priv->web_view != NULL) {
+ g_object_unref (priv->web_view);
+ priv->web_view = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+preview_pane_constructed (GObject *object)
+{
+ EPreviewPanePrivate *priv;
+ GtkWidget *widget;
+
+ priv = E_PREVIEW_PANE_GET_PRIVATE (object);
+
+ 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_box_pack_start (GTK_BOX (object), widget, TRUE, TRUE, 0);
+ gtk_container_add (GTK_CONTAINER (widget), priv->web_view);
+ gtk_widget_show (widget);
+
+ widget = e_search_bar_new (E_WEB_VIEW (priv->web_view));
+ gtk_box_pack_start (GTK_BOX (object), widget, FALSE, FALSE, 0);
+ priv->search_bar = g_object_ref (widget);
+ gtk_widget_hide (widget);
+}
+
+static void
+preview_pane_show_search_bar (EPreviewPane *preview_pane)
+{
+ GtkWidget *search_bar;
+
+ search_bar = preview_pane->priv->search_bar;
+
+ if (!gtk_widget_get_visible (search_bar))
+ gtk_widget_show (search_bar);
+}
+
+static void
+preview_pane_class_init (EPreviewPaneClass *class)
+{
+ GObjectClass *object_class;
+ GtkBindingSet *binding_set;
+
+ parent_class = g_type_class_peek_parent (class);
+ g_type_class_add_private (class, sizeof (EPreviewPanePrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->set_property = preview_pane_set_property;
+ object_class->get_property = preview_pane_get_property;
+ object_class->dispose = preview_pane_dispose;
+ object_class->constructed = preview_pane_constructed;
+
+ class->show_search_bar = preview_pane_show_search_bar;
+
+ g_object_class_install_property (
+ object_class,
+ PROP_SEARCH_BAR,
+ g_param_spec_object (
+ "search-bar",
+ "Search Bar",
+ NULL,
+ E_TYPE_SEARCH_BAR,
+ G_PARAM_READABLE));
+
+ g_object_class_install_property (
+ object_class,
+ PROP_WEB_VIEW,
+ g_param_spec_object (
+ "web-view",
+ "Web View",
+ NULL,
+ E_TYPE_WEB_VIEW,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY));
+
+ signals[SHOW_SEARCH_BAR] = g_signal_new (
+ "show-search-bar",
+ G_TYPE_FROM_CLASS (class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (EPreviewPaneClass, show_search_bar),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ binding_set = gtk_binding_set_by_class (class);
+
+ gtk_binding_entry_add_signal (
+ binding_set, GDK_f, GDK_SHIFT_MASK | GDK_CONTROL_MASK,
+ "show-search-bar", 0);
+}
+
+static void
+preview_pane_init (EPreviewPane *preview_pane)
+{
+ preview_pane->priv = E_PREVIEW_PANE_GET_PRIVATE (preview_pane);
+
+ gtk_box_set_spacing (GTK_BOX (preview_pane), 1);
+}
+
+GType
+e_preview_pane_get_type (void)
+{
+ static GType type = 0;
+
+ if (G_UNLIKELY (type == 0)) {
+ static const GTypeInfo type_info = {
+ sizeof (EPreviewPaneClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) preview_pane_class_init,
+ (GClassFinalizeFunc) NULL,
+ NULL, /* class_data */
+ sizeof (EPreviewPane),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) preview_pane_init,
+ NULL /* value_table */
+ };
+
+ type = g_type_register_static (
+ GTK_TYPE_VBOX, "EPreviewPane", &type_info, 0);
+ }
+
+ return type;
+}
+
+GtkWidget *
+e_preview_pane_new (EWebView *web_view)
+{
+ g_return_val_if_fail (E_IS_WEB_VIEW (web_view), NULL);
+
+ return g_object_new (
+ E_TYPE_PREVIEW_PANE,
+ "web-view", web_view, NULL);
+}
+
+EWebView *
+e_preview_pane_get_web_view (EPreviewPane *preview_pane)
+{
+ g_return_val_if_fail (E_IS_PREVIEW_PANE (preview_pane), NULL);
+
+ return E_WEB_VIEW (preview_pane->priv->web_view);
+}
+
+ESearchBar *
+e_preview_pane_get_search_bar (EPreviewPane *preview_pane)
+{
+ g_return_val_if_fail (E_IS_PREVIEW_PANE (preview_pane), NULL);
+
+ return E_SEARCH_BAR (preview_pane->priv->search_bar);
+}
+
+void
+e_preview_pane_show_search_bar (EPreviewPane *preview_pane)
+{
+ g_return_if_fail (E_IS_PREVIEW_PANE (preview_pane));
+
+ g_signal_emit (preview_pane, signals[SHOW_SEARCH_BAR], 0);
+}
diff --git a/widgets/misc/e-preview-pane.h b/widgets/misc/e-preview-pane.h
new file mode 100644
index 0000000000..bd965ed307
--- /dev/null
+++ b/widgets/misc/e-preview-pane.h
@@ -0,0 +1,74 @@
+/*
+ * e-preview-pane.h
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ *
+ * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
+ *
+ */
+
+#ifndef E_PREVIEW_PANE_H
+#define E_PREVIEW_PANE_H
+
+#include <gtk/gtk.h>
+#include <misc/e-search-bar.h>
+#include <misc/e-web-view.h>
+
+/* Standard GObject macros */
+#define E_TYPE_PREVIEW_PANE \
+ (e_preview_pane_get_type ())
+#define E_PREVIEW_PANE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), E_TYPE_PREVIEW_PANE, EPreviewPane))
+#define E_PREVIEW_PANE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), E_TYPE_PREVIEW_PANE, EPreviewPaneClass))
+#define E_IS_PREVIEW_PANE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), E_TYPE_PREVIEW_PANE))
+#define E_IS_PREVIEW_PANE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), E_TYPE_PREVIEW_PANE))
+#define E_PREVIEW_PANE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), E_TYPE_PREVIEW_PANE, EPreviewPaneClass))
+
+G_BEGIN_DECLS
+
+typedef struct _EPreviewPane EPreviewPane;
+typedef struct _EPreviewPaneClass EPreviewPaneClass;
+typedef struct _EPreviewPanePrivate EPreviewPanePrivate;
+
+struct _EPreviewPane {
+ GtkVBox parent;
+ EPreviewPanePrivate *priv;
+};
+
+struct _EPreviewPaneClass {
+ GtkVBoxClass parent_class;
+
+ /* Signals */
+ void (*show_search_bar) (EPreviewPane *preview_pane);
+};
+
+GType e_preview_pane_get_type (void);
+GtkWidget * e_preview_pane_new (EWebView *web_view);
+EWebView * e_preview_pane_get_web_view (EPreviewPane *preview_pane);
+ESearchBar * e_preview_pane_get_search_bar (EPreviewPane *preview_pane);
+void e_preview_pane_show_search_bar (EPreviewPane *preview_pane);
+
+G_END_DECLS
+
+#endif /* E_PREVIEW_PANE_H */
diff --git a/mail/e-mail-search-bar.c b/widgets/misc/e-search-bar.c
index c4b552a8cc..120f114bb8 100644
--- a/mail/e-mail-search-bar.c
+++ b/widgets/misc/e-search-bar.c
@@ -1,5 +1,5 @@
/*
- * e-mail-search-bar.c
+ * e-search-bar.c
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -19,7 +19,7 @@
*
*/
-#include "e-mail-search-bar.h"
+#include "e-search-bar.h"
#include <glib/gi18n.h>
#include <gdk/gdkkeysyms.h>
@@ -27,11 +27,11 @@
#include "e-util/e-binding.h"
-#define E_MAIL_SEARCH_BAR_GET_PRIVATE(obj) \
+#define E_SEARCH_BAR_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE \
- ((obj), E_TYPE_MAIL_SEARCH_BAR, EMailSearchBarPrivate))
+ ((obj), E_TYPE_SEARCH_BAR, ESearchBarPrivate))
-struct _EMailSearchBarPrivate {
+struct _ESearchBarPrivate {
EWebView *web_view;
GtkWidget *entry;
GtkWidget *case_sensitive_button;
@@ -63,14 +63,14 @@ static gpointer parent_class;
static guint signals[LAST_SIGNAL];
static void
-mail_search_bar_update_matches (EMailSearchBar *search_bar)
+search_bar_update_matches (ESearchBar *search_bar)
{
ESearchingTokenizer *tokenizer;
GtkWidget *matches_label;
gint matches;
gchar *text;
- tokenizer = e_mail_search_bar_get_tokenizer (search_bar);
+ tokenizer = e_search_bar_get_tokenizer (search_bar);
matches_label = search_bar->priv->matches_label;
matches = e_searching_tokenizer_match_count (tokenizer);
@@ -83,14 +83,14 @@ mail_search_bar_update_matches (EMailSearchBar *search_bar)
}
static void
-mail_search_bar_update_tokenizer (EMailSearchBar *search_bar)
+search_bar_update_tokenizer (ESearchBar *search_bar)
{
ESearchingTokenizer *tokenizer;
gboolean case_sensitive;
gchar *active_search;
- tokenizer = e_mail_search_bar_get_tokenizer (search_bar);
- case_sensitive = e_mail_search_bar_get_case_sensitive (search_bar);
+ tokenizer = e_search_bar_get_tokenizer (search_bar);
+ case_sensitive = e_search_bar_get_case_sensitive (search_bar);
if (GTK_WIDGET_VISIBLE (search_bar))
active_search = search_bar->priv->active_search;
@@ -102,12 +102,12 @@ mail_search_bar_update_tokenizer (EMailSearchBar *search_bar)
e_searching_tokenizer_set_primary_search_string (
tokenizer, active_search);
- e_mail_search_bar_changed (search_bar);
+ e_search_bar_changed (search_bar);
}
static void
-mail_search_bar_find (EMailSearchBar *search_bar,
- gboolean search_forward)
+search_bar_find (ESearchBar *search_bar,
+ gboolean search_forward)
{
EWebView *web_view;
GtkWidget *widget;
@@ -116,12 +116,12 @@ mail_search_bar_find (EMailSearchBar *search_bar,
gboolean wrapped = FALSE;
gchar *text;
- web_view = e_mail_search_bar_get_web_view (search_bar);
- case_sensitive = e_mail_search_bar_get_case_sensitive (search_bar);
- text = e_mail_search_bar_get_text (search_bar);
+ web_view = e_search_bar_get_web_view (search_bar);
+ case_sensitive = e_search_bar_get_case_sensitive (search_bar);
+ text = e_search_bar_get_text (search_bar);
if (text == NULL || *text == '\0') {
- e_mail_search_bar_clear (search_bar);
+ e_search_bar_clear (search_bar);
g_free (text);
return;
}
@@ -147,7 +147,7 @@ mail_search_bar_find (EMailSearchBar *search_bar,
g_free (search_bar->priv->active_search);
search_bar->priv->active_search = text;
search_bar->priv->rerun_search = TRUE;
- mail_search_bar_update_tokenizer (search_bar);
+ search_bar_update_tokenizer (search_bar);
} else if (search_bar->priv->rerun_search) {
gtk_html_engine_search (
GTK_HTML (web_view),
@@ -189,36 +189,36 @@ mail_search_bar_find (EMailSearchBar *search_bar,
}
static void
-mail_search_bar_changed_cb (EMailSearchBar *search_bar)
+search_bar_changed_cb (ESearchBar *search_bar)
{
g_object_notify (G_OBJECT (search_bar), "text");
}
static void
-mail_search_bar_find_next_cb (EMailSearchBar *search_bar)
+search_bar_find_next_cb (ESearchBar *search_bar)
{
- mail_search_bar_find (search_bar, TRUE);
+ search_bar_find (search_bar, TRUE);
}
static void
-mail_search_bar_find_previous_cb (EMailSearchBar *search_bar)
+search_bar_find_previous_cb (ESearchBar *search_bar)
{
- mail_search_bar_find (search_bar, FALSE);
+ search_bar_find (search_bar, FALSE);
}
static void
-mail_search_bar_icon_release_cb (EMailSearchBar *search_bar,
- GtkEntryIconPosition icon_pos,
- GdkEvent *event)
+search_bar_icon_release_cb (ESearchBar *search_bar,
+ GtkEntryIconPosition icon_pos,
+ GdkEvent *event)
{
g_return_if_fail (icon_pos == GTK_ENTRY_ICON_SECONDARY);
- e_mail_search_bar_clear (search_bar);
+ e_search_bar_clear (search_bar);
gtk_widget_grab_focus (search_bar->priv->entry);
}
static void
-mail_search_bar_toggled_cb (EMailSearchBar *search_bar)
+search_bar_toggled_cb (ESearchBar *search_bar)
{
g_free (search_bar->priv->active_search);
search_bar->priv->active_search = NULL;
@@ -228,8 +228,8 @@ mail_search_bar_toggled_cb (EMailSearchBar *search_bar)
}
static void
-mail_search_bar_set_web_view (EMailSearchBar *search_bar,
- EWebView *web_view)
+search_bar_set_web_view (ESearchBar *search_bar,
+ EWebView *web_view)
{
GtkHTML *html;
ESearchingTokenizer *tokenizer;
@@ -239,32 +239,32 @@ mail_search_bar_set_web_view (EMailSearchBar *search_bar,
search_bar->priv->web_view = g_object_ref (web_view);
html = GTK_HTML (web_view);
- tokenizer = e_mail_search_bar_get_tokenizer (search_bar);
+ tokenizer = e_search_bar_get_tokenizer (search_bar);
gtk_html_set_tokenizer (html, HTML_TOKENIZER (tokenizer));
}
static void
-mail_search_bar_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
+search_bar_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
switch (property_id) {
case PROP_CASE_SENSITIVE:
- e_mail_search_bar_set_case_sensitive (
- E_MAIL_SEARCH_BAR (object),
+ e_search_bar_set_case_sensitive (
+ E_SEARCH_BAR (object),
g_value_get_boolean (value));
return;
case PROP_TEXT:
- e_mail_search_bar_set_text (
- E_MAIL_SEARCH_BAR (object),
+ e_search_bar_set_text (
+ E_SEARCH_BAR (object),
g_value_get_string (value));
return;
case PROP_WEB_VIEW:
- mail_search_bar_set_web_view (
- E_MAIL_SEARCH_BAR (object),
+ search_bar_set_web_view (
+ E_SEARCH_BAR (object),
g_value_get_object (value));
return;
}
@@ -273,34 +273,34 @@ mail_search_bar_set_property (GObject *object,
}
static void
-mail_search_bar_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
+search_bar_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
{
switch (property_id) {
case PROP_ACTIVE_SEARCH:
g_value_set_boolean (
- value, e_mail_search_bar_get_active_search (
- E_MAIL_SEARCH_BAR (object)));
+ value, e_search_bar_get_active_search (
+ E_SEARCH_BAR (object)));
return;
case PROP_CASE_SENSITIVE:
g_value_set_boolean (
- value, e_mail_search_bar_get_case_sensitive (
- E_MAIL_SEARCH_BAR (object)));
+ value, e_search_bar_get_case_sensitive (
+ E_SEARCH_BAR (object)));
return;
case PROP_TEXT:
g_value_take_string (
- value, e_mail_search_bar_get_text (
- E_MAIL_SEARCH_BAR (object)));
+ value, e_search_bar_get_text (
+ E_SEARCH_BAR (object)));
return;
case PROP_WEB_VIEW:
g_value_set_object (
- value, e_mail_search_bar_get_web_view (
- E_MAIL_SEARCH_BAR (object)));
+ value, e_search_bar_get_web_view (
+ E_SEARCH_BAR (object)));
return;
}
@@ -308,11 +308,11 @@ mail_search_bar_get_property (GObject *object,
}
static void
-mail_search_bar_dispose (GObject *object)
+search_bar_dispose (GObject *object)
{
- EMailSearchBarPrivate *priv;
+ ESearchBarPrivate *priv;
- priv = E_MAIL_SEARCH_BAR_GET_PRIVATE (object);
+ priv = E_SEARCH_BAR_GET_PRIVATE (object);
if (priv->web_view != NULL) {
g_object_unref (priv->web_view);
@@ -354,11 +354,11 @@ mail_search_bar_dispose (GObject *object)
}
static void
-mail_search_bar_finalize (GObject *object)
+search_bar_finalize (GObject *object)
{
- EMailSearchBarPrivate *priv;
+ ESearchBarPrivate *priv;
- priv = E_MAIL_SEARCH_BAR_GET_PRIVATE (object);
+ priv = E_SEARCH_BAR_GET_PRIVATE (object);
g_free (priv->active_search);
@@ -367,11 +367,11 @@ mail_search_bar_finalize (GObject *object)
}
static void
-mail_search_bar_constructed (GObject *object)
+search_bar_constructed (GObject *object)
{
- EMailSearchBarPrivate *priv;
+ ESearchBarPrivate *priv;
- priv = E_MAIL_SEARCH_BAR_GET_PRIVATE (object);
+ priv = E_SEARCH_BAR_GET_PRIVATE (object);
e_mutual_binding_new (
object, "case-sensitive",
@@ -379,49 +379,51 @@ mail_search_bar_constructed (GObject *object)
}
static void
-mail_search_bar_show (GtkWidget *widget)
+search_bar_show (GtkWidget *widget)
{
- EMailSearchBar *search_bar;
+ ESearchBar *search_bar;
- search_bar = E_MAIL_SEARCH_BAR (widget);
+ search_bar = E_SEARCH_BAR (widget);
/* Chain up to parent's show() method. */
GTK_WIDGET_CLASS (parent_class)->show (widget);
gtk_widget_grab_focus (search_bar->priv->entry);
- mail_search_bar_update_tokenizer (search_bar);
+ search_bar_update_tokenizer (search_bar);
}
static void
-mail_search_bar_hide (GtkWidget *widget)
+search_bar_hide (GtkWidget *widget)
{
- EMailSearchBar *search_bar;
+ ESearchBar *search_bar;
- search_bar = E_MAIL_SEARCH_BAR (widget);
+ search_bar = E_SEARCH_BAR (widget);
/* Chain up to parent's hide() method. */
GTK_WIDGET_CLASS (parent_class)->hide (widget);
- mail_search_bar_update_tokenizer (search_bar);
+ search_bar_update_tokenizer (search_bar);
}
static gboolean
-mail_search_bar_key_press_event (GtkWidget *widget,
- GdkEventKey *event)
+search_bar_key_press_event (GtkWidget *widget,
+ GdkEventKey *event)
{
+ GtkWidgetClass *widget_class;
+
if (event->keyval == GDK_Escape) {
gtk_widget_hide (widget);
return TRUE;
}
/* Chain up to parent's key_press_event() method. */
- return GTK_WIDGET_CLASS (parent_class)->
- key_press_event (widget, event);
+ widget_class = GTK_WIDGET_CLASS (parent_class);
+ return widget_class->key_press_event (widget, event);
}
static void
-mail_search_bar_clear (EMailSearchBar *search_bar)
+search_bar_clear (ESearchBar *search_bar)
{
g_free (search_bar->priv->active_search);
search_bar->priv->active_search = NULL;
@@ -432,33 +434,33 @@ mail_search_bar_clear (EMailSearchBar *search_bar)
gtk_widget_hide (search_bar->priv->wrapped_prev_box);
gtk_widget_hide (search_bar->priv->matches_label);
- mail_search_bar_update_tokenizer (search_bar);
+ search_bar_update_tokenizer (search_bar);
g_object_notify (G_OBJECT (search_bar), "active-search");
}
static void
-mail_search_bar_class_init (EMailSearchBarClass *class)
+search_bar_class_init (ESearchBarClass *class)
{
GObjectClass *object_class;
GtkWidgetClass *widget_class;
parent_class = g_type_class_peek_parent (class);
- g_type_class_add_private (class, sizeof (EMailSearchBarPrivate));
+ g_type_class_add_private (class, sizeof (ESearchBarPrivate));
object_class = G_OBJECT_CLASS (class);
- object_class->set_property = mail_search_bar_set_property;
- object_class->get_property = mail_search_bar_get_property;
- object_class->dispose = mail_search_bar_dispose;
- object_class->finalize = mail_search_bar_finalize;
- object_class->constructed = mail_search_bar_constructed;
+ object_class->set_property = search_bar_set_property;
+ object_class->get_property = search_bar_get_property;
+ object_class->dispose = search_bar_dispose;
+ object_class->finalize = search_bar_finalize;
+ object_class->constructed = search_bar_constructed;
widget_class = GTK_WIDGET_CLASS (class);
- widget_class->show = mail_search_bar_show;
- widget_class->hide = mail_search_bar_hide;
- widget_class->key_press_event = mail_search_bar_key_press_event;
+ widget_class->show = search_bar_show;
+ widget_class->hide = search_bar_hide;
+ widget_class->key_press_event = search_bar_key_press_event;
- class->clear = mail_search_bar_clear;
+ class->clear = search_bar_clear;
g_object_class_install_property (
object_class,
@@ -505,7 +507,7 @@ mail_search_bar_class_init (EMailSearchBarClass *class)
"changed",
G_TYPE_FROM_CLASS (class),
G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (EMailSearchBarClass, changed),
+ G_STRUCT_OFFSET (ESearchBarClass, changed),
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
@@ -514,25 +516,25 @@ mail_search_bar_class_init (EMailSearchBarClass *class)
"clear",
G_TYPE_FROM_CLASS (class),
G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (EMailSearchBarClass, clear),
+ G_STRUCT_OFFSET (ESearchBarClass, clear),
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
}
static void
-mail_search_bar_init (EMailSearchBar *search_bar)
+search_bar_init (ESearchBar *search_bar)
{
GtkWidget *label;
GtkWidget *widget;
GtkWidget *container;
- search_bar->priv = E_MAIL_SEARCH_BAR_GET_PRIVATE (search_bar);
+ search_bar->priv = E_SEARCH_BAR_GET_PRIVATE (search_bar);
search_bar->priv->tokenizer = e_searching_tokenizer_new ();
g_signal_connect_swapped (
search_bar->priv->tokenizer, "match",
- G_CALLBACK (mail_search_bar_update_matches), search_bar);
+ G_CALLBACK (search_bar_update_matches), search_bar);
gtk_box_set_spacing (GTK_BOX (search_bar), 12);
@@ -582,15 +584,15 @@ mail_search_bar_init (EMailSearchBar *search_bar)
g_signal_connect_swapped (
widget, "activate",
- G_CALLBACK (mail_search_bar_find_next_cb), search_bar);
+ G_CALLBACK (search_bar_find_next_cb), search_bar);
g_signal_connect_swapped (
widget, "changed",
- G_CALLBACK (mail_search_bar_changed_cb), search_bar);
+ G_CALLBACK (search_bar_changed_cb), search_bar);
g_signal_connect_swapped (
widget, "icon-release",
- G_CALLBACK (mail_search_bar_icon_release_cb), search_bar);
+ G_CALLBACK (search_bar_icon_release_cb), search_bar);
widget = gtk_button_new_with_mnemonic (_("_Previous"));
gtk_button_set_image (
@@ -606,7 +608,7 @@ mail_search_bar_init (EMailSearchBar *search_bar)
g_signal_connect_swapped (
widget, "clicked",
- G_CALLBACK (mail_search_bar_find_previous_cb), search_bar);
+ G_CALLBACK (search_bar_find_previous_cb), search_bar);
widget = gtk_button_new_with_mnemonic (_("_Next"));
gtk_button_set_image (
@@ -622,7 +624,7 @@ mail_search_bar_init (EMailSearchBar *search_bar)
g_signal_connect_swapped (
widget, "clicked",
- G_CALLBACK (mail_search_bar_find_next_cb), search_bar);
+ G_CALLBACK (search_bar_find_next_cb), search_bar);
widget = gtk_check_button_new_with_mnemonic (_("Mat_ch case"));
gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0);
@@ -631,11 +633,11 @@ mail_search_bar_init (EMailSearchBar *search_bar)
g_signal_connect_swapped (
widget, "toggled",
- G_CALLBACK (mail_search_bar_toggled_cb), search_bar);
+ G_CALLBACK (search_bar_toggled_cb), search_bar);
g_signal_connect_swapped (
widget, "toggled",
- G_CALLBACK (mail_search_bar_find_next_cb), search_bar);
+ G_CALLBACK (search_bar_find_next_cb), search_bar);
container = GTK_WIDGET (search_bar);
@@ -690,86 +692,86 @@ mail_search_bar_init (EMailSearchBar *search_bar)
}
GType
-e_mail_search_bar_get_type (void)
+e_search_bar_get_type (void)
{
static GType type = 0;
if (G_UNLIKELY (type == 0)) {
static const GTypeInfo type_info = {
- sizeof (EMailSearchBarClass),
+ sizeof (ESearchBarClass),
(GBaseInitFunc) NULL,
(GBaseFinalizeFunc) NULL,
- (GClassInitFunc) mail_search_bar_class_init,
+ (GClassInitFunc) search_bar_class_init,
(GClassFinalizeFunc) NULL,
NULL, /* class_data */
- sizeof (EMailSearchBar),
+ sizeof (ESearchBar),
0, /* n_preallocs */
- (GInstanceInitFunc) mail_search_bar_init,
+ (GInstanceInitFunc) search_bar_init,
NULL /* value_table */
};
type = g_type_register_static (
- GTK_TYPE_HBOX, "EMailSearchBar", &type_info, 0);
+ GTK_TYPE_HBOX, "ESearchBar", &type_info, 0);
}
return type;
}
GtkWidget *
-e_mail_search_bar_new (EWebView *web_view)
+e_search_bar_new (EWebView *web_view)
{
g_return_val_if_fail (E_IS_WEB_VIEW (web_view), NULL);
return g_object_new (
- E_TYPE_MAIL_SEARCH_BAR, "web-view", web_view, NULL);
+ E_TYPE_SEARCH_BAR, "web-view", web_view, NULL);
}
void
-e_mail_search_bar_clear (EMailSearchBar *search_bar)
+e_search_bar_clear (ESearchBar *search_bar)
{
- g_return_if_fail (E_IS_MAIL_SEARCH_BAR (search_bar));
+ g_return_if_fail (E_IS_SEARCH_BAR (search_bar));
g_signal_emit (search_bar, signals[CLEAR], 0);
}
void
-e_mail_search_bar_changed (EMailSearchBar *search_bar)
+e_search_bar_changed (ESearchBar *search_bar)
{
- g_return_if_fail (E_IS_MAIL_SEARCH_BAR (search_bar));
+ g_return_if_fail (E_IS_SEARCH_BAR (search_bar));
g_signal_emit (search_bar, signals[CHANGED], 0);
}
EWebView *
-e_mail_search_bar_get_web_view (EMailSearchBar *search_bar)
+e_search_bar_get_web_view (ESearchBar *search_bar)
{
- g_return_val_if_fail (E_IS_MAIL_SEARCH_BAR (search_bar), NULL);
+ g_return_val_if_fail (E_IS_SEARCH_BAR (search_bar), NULL);
return search_bar->priv->web_view;
}
ESearchingTokenizer *
-e_mail_search_bar_get_tokenizer (EMailSearchBar *search_bar)
+e_search_bar_get_tokenizer (ESearchBar *search_bar)
{
- g_return_val_if_fail (E_IS_MAIL_SEARCH_BAR (search_bar), NULL);
+ g_return_val_if_fail (E_IS_SEARCH_BAR (search_bar), NULL);
return search_bar->priv->tokenizer;
}
gboolean
-e_mail_search_bar_get_active_search (EMailSearchBar *search_bar)
+e_search_bar_get_active_search (ESearchBar *search_bar)
{
- g_return_val_if_fail (E_IS_MAIL_SEARCH_BAR (search_bar), FALSE);
+ g_return_val_if_fail (E_IS_SEARCH_BAR (search_bar), FALSE);
return (search_bar->priv->active_search != NULL);
}
gboolean
-e_mail_search_bar_get_case_sensitive (EMailSearchBar *search_bar)
+e_search_bar_get_case_sensitive (ESearchBar *search_bar)
{
GtkToggleButton *button;
- g_return_val_if_fail (E_IS_MAIL_SEARCH_BAR (search_bar), FALSE);
+ g_return_val_if_fail (E_IS_SEARCH_BAR (search_bar), FALSE);
button = GTK_TOGGLE_BUTTON (search_bar->priv->case_sensitive_button);
@@ -777,12 +779,12 @@ e_mail_search_bar_get_case_sensitive (EMailSearchBar *search_bar)
}
void
-e_mail_search_bar_set_case_sensitive (EMailSearchBar *search_bar,
- gboolean case_sensitive)
+e_search_bar_set_case_sensitive (ESearchBar *search_bar,
+ gboolean case_sensitive)
{
GtkToggleButton *button;
- g_return_if_fail (E_IS_MAIL_SEARCH_BAR (search_bar));
+ g_return_if_fail (E_IS_SEARCH_BAR (search_bar));
button = GTK_TOGGLE_BUTTON (search_bar->priv->case_sensitive_button);
@@ -792,12 +794,12 @@ e_mail_search_bar_set_case_sensitive (EMailSearchBar *search_bar,
}
gchar *
-e_mail_search_bar_get_text (EMailSearchBar *search_bar)
+e_search_bar_get_text (ESearchBar *search_bar)
{
GtkEntry *entry;
const gchar *text;
- g_return_val_if_fail (E_IS_MAIL_SEARCH_BAR (search_bar), NULL);
+ g_return_val_if_fail (E_IS_SEARCH_BAR (search_bar), NULL);
entry = GTK_ENTRY (search_bar->priv->entry);
text = gtk_entry_get_text (entry);
@@ -806,12 +808,12 @@ e_mail_search_bar_get_text (EMailSearchBar *search_bar)
}
void
-e_mail_search_bar_set_text (EMailSearchBar *search_bar,
- const gchar *text)
+e_search_bar_set_text (ESearchBar *search_bar,
+ const gchar *text)
{
GtkEntry *entry;
- g_return_if_fail (E_IS_MAIL_SEARCH_BAR (search_bar));
+ g_return_if_fail (E_IS_SEARCH_BAR (search_bar));
entry = GTK_ENTRY (search_bar->priv->entry);
diff --git a/widgets/misc/e-search-bar.h b/widgets/misc/e-search-bar.h
new file mode 100644
index 0000000000..87e1023baf
--- /dev/null
+++ b/widgets/misc/e-search-bar.h
@@ -0,0 +1,87 @@
+/*
+ * e-search-bar.h
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ *
+ * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
+ *
+ */
+
+#ifndef E_SEARCH_BAR_H
+#define E_SEARCH_BAR_H
+
+#include <gtk/gtk.h>
+#include <misc/e-searching-tokenizer.h>
+#include <misc/e-web-view.h>
+
+/* Standard GObject macros */
+#define E_TYPE_SEARCH_BAR \
+ (e_search_bar_get_type ())
+#define E_SEARCH_BAR(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), E_TYPE_SEARCH_BAR, ESearchBar))
+#define E_SEARCH_BAR_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), E_TYPE_SEARCH_BAR, ESearchBarClass))
+#define E_IS_SEARCH_BAR(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), E_TYPE_SEARCH_BAR))
+#define E_IS_SEARCH_BAR_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), E_TYPE_SEARCH_BAR))
+#define E_SEARCH_BAR_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), E_TYPE_SEARCH_BAR, ESearchBarClass))
+
+G_BEGIN_DECLS
+
+typedef struct _ESearchBar ESearchBar;
+typedef struct _ESearchBarClass ESearchBarClass;
+typedef struct _ESearchBarPrivate ESearchBarPrivate;
+
+struct _ESearchBar {
+ GtkHBox parent;
+ ESearchBarPrivate *priv;
+};
+
+struct _ESearchBarClass {
+ GtkHBoxClass parent_class;
+
+ /* Signals */
+ void (*changed) (ESearchBar *search_bar);
+ void (*clear) (ESearchBar *search_bar);
+};
+
+GType e_search_bar_get_type (void);
+GtkWidget * e_search_bar_new (EWebView *web_view);
+void e_search_bar_clear (ESearchBar *search_bar);
+void e_search_bar_changed (ESearchBar *search_bar);
+EWebView * e_search_bar_get_web_view (ESearchBar *search_bar);
+ESearchingTokenizer *
+ e_search_bar_get_tokenizer (ESearchBar *search_bar);
+gboolean e_search_bar_get_active_search
+ (ESearchBar *search_bar);
+gboolean e_search_bar_get_case_sensitive
+ (ESearchBar *search_bar);
+void e_search_bar_set_case_sensitive
+ (ESearchBar *search_bar,
+ gboolean case_sensitive);
+gchar * e_search_bar_get_text (ESearchBar *search_bar);
+void e_search_bar_set_text (ESearchBar *search_bar,
+ const gchar *text);
+
+G_END_DECLS
+
+#endif /* E_SEARCH_BAR_H */
diff --git a/mail/e-searching-tokenizer.c b/widgets/misc/e-searching-tokenizer.c
index 8920a7dd21..8920a7dd21 100644
--- a/mail/e-searching-tokenizer.c
+++ b/widgets/misc/e-searching-tokenizer.c
diff --git a/mail/e-searching-tokenizer.h b/widgets/misc/e-searching-tokenizer.h
index 7eb603a25d..7eb603a25d 100644
--- a/mail/e-searching-tokenizer.h
+++ b/widgets/misc/e-searching-tokenizer.h