Migrate usage of find toolbar in editor to use ModestISearchToolbar
authorJose Dapena Paz <jdapena@igalia.com>
Tue, 3 Nov 2009 18:20:10 +0000 (19:20 +0100)
committerJose Dapena Paz <jdapena@igalia.com>
Wed, 4 Nov 2009 13:45:16 +0000 (14:45 +0100)
src/hildon2/modest-msg-edit-window.c
src/modest-ui-actions.c
src/widgets/modest-msg-edit-window.h
src/widgets/modest-toolkit-factory.c
src/widgets/modest-toolkit-factory.h

index 5d5433c..d5d70ae 100644 (file)
@@ -65,6 +65,7 @@
 #include <modest-wp-text-view.h>
 #include <wptextbuffer.h>
 #include <modest-scrollable.h>
+#include <modest-isearch-toolbar.h>
 #include <hildon/hildon-touch-selector.h>
 #include <hildon/hildon-picker-dialog.h>
 #include "modest-msg-edit-window-ui-dimming.h"
@@ -142,10 +143,10 @@ static void subject_field_move_cursor (GtkEntry *entry,
 static void update_window_title (ModestMsgEditWindow *window);
 
 /* Find toolbar */
-static void modest_msg_edit_window_find_toolbar_search (GtkWidget *widget,
-                                                       ModestMsgEditWindow *window);
-static void modest_msg_edit_window_find_toolbar_close (GtkWidget *widget,
-                                                      ModestMsgEditWindow *window);
+static void modest_msg_edit_window_isearch_toolbar_search (GtkWidget *widget,
+                                                          ModestMsgEditWindow *window);
+static void modest_msg_edit_window_isearch_toolbar_close (GtkWidget *widget,
+                                                         ModestMsgEditWindow *window);
 static gboolean gtk_text_iter_forward_search_insensitive (const GtkTextIter *iter,
                                                          const gchar *str,
                                                          GtkTextIter *match_start,
@@ -285,7 +286,7 @@ struct _ModestMsgEditWindowPrivate {
        gint         current_size_index;
        GtkWidget   *size_tool_button_label;
 
-       GtkWidget   *find_toolbar;
+       GtkWidget   *isearch_toolbar;
        gchar       *last_search;
 
        GtkWidget   *font_dialog;
@@ -423,7 +424,7 @@ modest_msg_edit_window_init (ModestMsgEditWindow *obj)
 
        priv->priority_flags = 0;
 
-       priv->find_toolbar = NULL;
+       priv->isearch_toolbar = NULL;
        priv->last_search = NULL;
 
        priv->draft_msg = NULL;
@@ -775,8 +776,10 @@ connect_signals (ModestMsgEditWindow *obj)
        g_signal_connect_after (G_OBJECT (priv->subject_field), "move-cursor", G_CALLBACK (subject_field_move_cursor), obj);
        g_signal_connect (G_OBJECT (priv->subject_field), "insert-text", G_CALLBACK (subject_field_insert_text), obj);
 
-       g_signal_connect (G_OBJECT (priv->find_toolbar), "search", G_CALLBACK (modest_msg_edit_window_find_toolbar_search), obj);
-       g_signal_connect (G_OBJECT (priv->find_toolbar), "close", G_CALLBACK (modest_msg_edit_window_find_toolbar_close), obj);
+       g_signal_connect (G_OBJECT (priv->isearch_toolbar), "isearch-search",
+                         G_CALLBACK (modest_msg_edit_window_isearch_toolbar_search), obj);
+       g_signal_connect (G_OBJECT (priv->isearch_toolbar), "isearch-close",
+                         G_CALLBACK (modest_msg_edit_window_isearch_toolbar_close), obj);
  
        priv->clipboard_change_handler_id = 
                g_signal_connect (G_OBJECT (gtk_clipboard_get (GDK_SELECTION_PRIMARY)), "owner-change",
@@ -996,8 +999,9 @@ init_window (ModestMsgEditWindow *obj)
 #endif
        wp_text_buffer_reset_buffer (WP_TEXT_BUFFER (priv->text_buffer), TRUE);
 
-       priv->find_toolbar = hildon_find_toolbar_new (NULL);
-       gtk_widget_set_no_show_all (priv->find_toolbar, TRUE);
+       priv->isearch_toolbar = modest_toolkit_factory_create_isearch_toolbar (modest_runtime_get_toolkit_factory (),
+                                                                              NULL);
+       gtk_widget_set_no_show_all (priv->isearch_toolbar, TRUE);
 
 /*     g_signal_connect (G_OBJECT (obj), "key_pressed", G_CALLBACK (on_key_pressed), NULL) */
 
@@ -1669,7 +1673,7 @@ modest_msg_edit_window_new (TnyMsg *msg, const gchar *account_name, const gchar
                                 hildon_touch_selector_get_current_text 
                                 (HILDON_TOUCH_SELECTOR (hildon_picker_button_get_selector (HILDON_PICKER_BUTTON (priv->from_field)))));
        modest_msg_edit_window_setup_toolbar (MODEST_MSG_EDIT_WINDOW (obj));
-       modest_window_add_toolbar (MODEST_WINDOW (obj), GTK_TOOLBAR (priv->find_toolbar));
+       modest_window_add_toolbar (MODEST_WINDOW (obj), GTK_TOOLBAR (priv->isearch_toolbar));
 
        /* Init window */
        connect_signals (MODEST_MSG_EDIT_WINDOW(obj));
@@ -3653,21 +3657,21 @@ subject_field_insert_text (GtkEditable *editable,
 }
 
 void
-modest_msg_edit_window_toggle_find_toolbar (ModestMsgEditWindow *window,
-                                           gboolean show)
+modest_msg_edit_window_toggle_isearch_toolbar (ModestMsgEditWindow *window,
+                                              gboolean show)
 {
        ModestMsgEditWindowPrivate *priv = NULL;
 
        g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window));
        priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
 
-       gtk_widget_set_no_show_all (priv->find_toolbar, FALSE);
+       gtk_widget_set_no_show_all (priv->isearch_toolbar, FALSE);
 
        if (show) {
-               gtk_widget_show_all (priv->find_toolbar);
-               hildon_find_toolbar_highlight_entry (HILDON_FIND_TOOLBAR (priv->find_toolbar), TRUE);
+               gtk_widget_show_all (priv->isearch_toolbar);
+               modest_isearch_toolbar_highlight_entry (MODEST_ISEARCH_TOOLBAR (priv->isearch_toolbar), TRUE);
        } else {
-               gtk_widget_hide_all (priv->find_toolbar);
+               gtk_widget_hide_all (priv->isearch_toolbar);
                gtk_widget_grab_focus (priv->msg_body);
        }
 }
@@ -3732,10 +3736,10 @@ gtk_text_iter_forward_search_insensitive (const GtkTextIter *iter,
 
 
 static void 
-modest_msg_edit_window_find_toolbar_search (GtkWidget *widget,
-                                           ModestMsgEditWindow *window)
+modest_msg_edit_window_isearch_toolbar_search (GtkWidget *widget,
+                                              ModestMsgEditWindow *window)
 {
-       gchar *current_search = NULL;
+       const gchar *current_search = NULL;
        ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
        gboolean result;
        GtkTextIter selection_start, selection_end;
@@ -3749,9 +3753,8 @@ modest_msg_edit_window_find_toolbar_search (GtkWidget *widget,
                return;
        }
 
-       g_object_get (G_OBJECT (widget), "prefix", &current_search, NULL);
+       current_search = modest_isearch_toolbar_get_search (MODEST_ISEARCH_TOOLBAR (widget));
        if ((current_search == NULL) || (strcmp (current_search, "") == 0)) {
-               g_free (current_search);
                g_free (priv->last_search);
                priv->last_search = NULL;
                /* Information banner about empty search */
@@ -3790,7 +3793,6 @@ modest_msg_edit_window_find_toolbar_search (GtkWidget *widget,
                g_free (priv->last_search);
                priv->last_search = NULL;
        }
-       g_free (current_search);
 }
 
 gboolean 
@@ -3813,10 +3815,10 @@ modest_msg_edit_window_set_sent (ModestMsgEditWindow *window,
 }
 
 static void
-modest_msg_edit_window_find_toolbar_close (GtkWidget *widget,
-                                          ModestMsgEditWindow *window)
+modest_msg_edit_window_isearch_toolbar_close (GtkWidget *widget,
+                                             ModestMsgEditWindow *window)
 {
-       modest_msg_edit_window_toggle_find_toolbar (window, FALSE);
+       modest_msg_edit_window_toggle_isearch_toolbar (window, FALSE);
 }
 
 void
index c7afe8e..1e9006c 100644 (file)
@@ -6628,8 +6628,8 @@ modest_ui_actions_on_toggle_find_in_page (GtkAction *action,
        else
                active = TRUE;
 
-       modest_msg_edit_window_toggle_find_toolbar (MODEST_MSG_EDIT_WINDOW (window),
-                                                   active);
+       modest_msg_edit_window_toggle_isearch_toolbar (MODEST_MSG_EDIT_WINDOW (window),
+                                                      active);
 }
 
 #ifndef MODEST_TOOLKIT_HILDON2
index a364da0..113c3b1 100644 (file)
@@ -387,14 +387,14 @@ gboolean        modest_msg_edit_window_check_names    (ModestMsgEditWindow *wind
                                                       gboolean add_to_addressbook);
 
 /**
- * modest_msg_edit_window_toggle_find_toolbar:
+ * modest_msg_edit_window_toggle_isearch_toolbar:
  * @window: a #ModestMsgEditWindow
  * @show: a #gboolean
  *
- * Shows/Hides the find toolbar
+ * Shows/Hides the isearch toolbar
  */
-void            modest_msg_edit_window_toggle_find_toolbar (ModestMsgEditWindow *window,
-                                                           gboolean show);
+void            modest_msg_edit_window_toggle_isearch_toolbar (ModestMsgEditWindow *window,
+                                                              gboolean show);
 
 
 /**
index 89e5b7c..207884b 100644 (file)
@@ -30,6 +30,7 @@
 #include <glib/gi18n.h>
 #ifdef MODEST_TOOLKIT_HILDON2
 #include <modest-hildon-pannable-area-scrollable.h>
+#include <modest-hildon-find-toolbar.h>
 #include <hildon/hildon.h>
 #else
 #include <modest-scrolled-window-scrollable.h>
@@ -43,6 +44,7 @@ static void modest_toolkit_factory_init (ModestToolkitFactory *self);
 static GtkWidget * modest_toolkit_factory_create_scrollable_default (ModestToolkitFactory *self);
 static GtkWidget * modest_toolkit_factory_create_check_button_default (ModestToolkitFactory *self, const gchar *label);
 static GtkWidget * modest_toolkit_factory_create_check_menu_default (ModestToolkitFactory *self, const gchar *label);
+static GtkWidget * modest_toolkit_factory_create_isearch_toolbar_default (ModestToolkitFactory *self, const gchar *label);
 /* globals */
 static GObjectClass *parent_class = NULL;
 
@@ -66,6 +68,7 @@ modest_toolkit_factory_class_init (ModestToolkitFactoryClass *klass)
        klass->create_scrollable = modest_toolkit_factory_create_scrollable_default;
        klass->create_check_button = modest_toolkit_factory_create_check_button_default;
        klass->create_check_menu = modest_toolkit_factory_create_check_menu_default;
+       klass->create_isearch_toolbar = modest_toolkit_factory_create_isearch_toolbar_default;
 }
 
 static void
@@ -108,6 +111,7 @@ modest_toolkit_factory_create_check_button_default (ModestToolkitFactory *self,
 #endif
        return result;
 }
+
 GtkWidget *
 modest_toolkit_factory_create_check_menu (ModestToolkitFactory *self, const gchar *label)
 {
@@ -165,3 +169,23 @@ modest_is_togglable (GtkWidget *widget)
        return GTK_IS_CHECK_MENU_ITEM (widget) || GTK_IS_TOGGLE_BUTTON (widget);
 #endif
 }
+
+GtkWidget *
+modest_toolkit_factory_create_isearch_toolbar (ModestToolkitFactory *self, const gchar *label)
+{
+       return MODEST_TOOLKIT_FACTORY_GET_CLASS (self)->create_isearch_toolbar (self, label);
+}
+
+static GtkWidget *
+modest_toolkit_factory_create_isearch_toolbar_default (ModestToolkitFactory *self, const gchar *label)
+{
+       GtkWidget *result;
+#ifdef MODEST_TOOLKIT_HILDON2
+       result = modest_hildon_find_toolbar_new (label);
+#else
+       /* TODO: create gtk-only based isearch toolbar implementation */
+       result = gtk_toolbar_new ();
+#endif
+       return result;
+}
+
index 605c7a4..82dd9b6 100644 (file)
@@ -38,6 +38,7 @@ struct                                          _ModestToolkitFactoryClass
        GtkWidget * (*create_scrollable) (ModestToolkitFactory *self);
        GtkWidget * (*create_check_button) (ModestToolkitFactory *self, const gchar *label);
        GtkWidget * (*create_check_menu) (ModestToolkitFactory *self, const gchar *label);
+       GtkWidget * (*create_isearch_toolbar) (ModestToolkitFactory *self, const gchar *label);
 };
 
 struct                                          _ModestToolkitFactory
@@ -61,6 +62,9 @@ modest_toolkit_factory_create_check_button (ModestToolkitFactory *self, const gc
 GtkWidget *
 modest_toolkit_factory_create_check_menu (ModestToolkitFactory *self, const gchar *label);
 
+GtkWidget *
+modest_toolkit_factory_create_isearch_toolbar (ModestToolkitFactory *self, const gchar *label);
+
 gboolean
 modest_togglable_get_active (GtkWidget *widget);