[bijiben] mainToolbar: show a search button
- From: Pierre-Yves Luyten <pyluyten src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [bijiben] mainToolbar: show a search button
- Date: Sat, 20 Apr 2013 09:37:55 +0000 (UTC)
commit 95d6dfae9ae3e601edf43019437bbd116974a13b
Author: Pierre-Yves Luyten <py luyten fr>
Date: Sat Apr 20 11:31:59 2013 +0200
mainToolbar: show a search button
See #698245 : make search feature visible.
src/bjb-main-toolbar.c | 60 ++++++++++++++++++++++++++++++++++++++++++++----
src/bjb-main-toolbar.h | 2 ++
src/bjb-main-view.c | 16 +++++++++++++
src/bjb-main-view.h | 5 ++++
src/bjb-search-toolbar.c | 40 +++++++++++++++++++++++++++++++-
src/bjb-search-toolbar.h | 4 ++++
6 files changed, 122 insertions(+), 5 deletions(-)
---
diff --git a/src/bjb-main-toolbar.c b/src/bjb-main-toolbar.c
index 18adbcf..39ce019 100644
--- a/src/bjb-main-toolbar.c
+++ b/src/bjb-main-toolbar.c
@@ -44,6 +44,7 @@ struct _BjbMainToolbarPrivate
GtkWidget *list;
GtkWidget *grid;
GtkWidget *select;
+ GtkWidget *search;
/* Signal Handlers */
gulong finish_sig;
@@ -162,6 +163,37 @@ on_button_press (GtkWidget* widget,
}
static void
+on_search_button_clicked (BjbMainToolbarPrivate *priv)
+{
+ BjbSearchToolbar *bar;
+
+ bar = bjb_main_view_get_search_toolbar (priv->parent);
+
+ if (bar == NULL)
+ return;
+
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->search)))
+ bjb_search_toolbar_fade_in (bar);
+
+ else
+ bjb_search_toolbar_fade_out (bar);
+}
+
+static void
+add_search_button (BjbMainToolbar *self)
+{
+ BjbMainToolbarPrivate *priv = self->priv;
+
+ priv->search = gd_main_toolbar_add_toggle (GD_MAIN_TOOLBAR (self),
+ "edit-find-symbolic",
+ NULL,
+ FALSE);
+
+ g_signal_connect_swapped (priv->search, "clicked",
+ G_CALLBACK (on_search_button_clicked), priv);
+}
+
+static void
update_selection_buttons (BjbMainToolbarPrivate *priv)
{
gboolean some_note_is_visible = bjb_controller_shows_notes (priv->controller);
@@ -203,6 +235,10 @@ populate_bar_for_selection (BjbMainToolbar *self)
BjbMainToolbarPrivate *priv = self->priv;
GtkStyleContext *context;
+ /* Search button */
+ add_search_button (self);
+
+ /* Select */
priv->select = gd_main_toolbar_add_button (GD_MAIN_TOOLBAR (self),
NULL,"Done", FALSE);
context = gtk_widget_get_style_context (priv->select);
@@ -226,7 +262,7 @@ update_label_for_standard (BjbMainToolbar *self)
BjbMainToolbarPrivate *priv = self->priv;
gchar *needle = bjb_controller_get_needle (priv->controller);
gchar *label ;
-
+
if (needle && g_strcmp0 (needle, "") !=0)
label = g_strdup_printf (_("Results for %s"), needle);
@@ -327,11 +363,13 @@ populate_bar_switch(BjbMainToolbar *self)
break;
case BJB_TOOLBAR_STD_ICON:
+ add_search_button (self);
populate_bar_for_icon_view(self);
update_selection_buttons (self->priv);
break;
case BJB_TOOLBAR_STD_LIST:
+ add_search_button (self);
populate_bar_for_list_view(self);
update_selection_buttons (self->priv);
break;
@@ -391,9 +429,13 @@ static void
bjb_main_toolbar_init (BjbMainToolbar *self)
{
self->priv = BJB_MAIN_TOOLBAR_GET_PRIVATE(self);
- self->priv->type = BJB_TOOLBAR_0 ;
- self->priv->grid = NULL;
- self->priv->list = NULL;
+ BjbMainToolbarPrivate *priv = self->priv;
+
+ priv->type = BJB_TOOLBAR_0 ;
+ priv->grid = NULL;
+ priv->list = NULL;
+ priv->search = NULL;
+
g_signal_connect (self, "button-press-event", G_CALLBACK (on_button_press), NULL);
}
@@ -521,3 +563,13 @@ bjb_main_toolbar_set_view (BjbMainToolbar *self, GdMainView *view)
{
self->priv->view = view ;
}
+
+void
+bjb_main_toolbar_set_search_toggle_state (BjbMainToolbar *self,
+ gboolean active)
+{
+ g_return_if_fail (BJB_IS_MAIN_TOOLBAR (self));
+
+ if (self->priv->search)
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->priv->search), active);
+}
diff --git a/src/bjb-main-toolbar.h b/src/bjb-main-toolbar.h
index 6e892c9..f77a512 100644
--- a/src/bjb-main-toolbar.h
+++ b/src/bjb-main-toolbar.h
@@ -59,6 +59,8 @@ void on_selection_mode_changed (BjbMainToolbar *self);
void bjb_main_toolbar_set_view (BjbMainToolbar *self, GdMainView *view);
+void bjb_main_toolbar_set_search_toggle_state (BjbMainToolbar *self, gboolean active);
+
G_END_DECLS
#endif /* _BJB_MAIN_TOOLBAR_H_ */
diff --git a/src/bjb-main-view.c b/src/bjb-main-view.c
index fa16ca1..e7d3b50 100644
--- a/src/bjb-main-view.c
+++ b/src/bjb-main-view.c
@@ -570,3 +570,19 @@ bjb_main_view_update_model (BjbMainView *self)
bjb_controller_set_main_view (priv->controller,priv->view);
gd_main_view_set_model(priv->view,bjb_controller_get_model(priv->controller));
}
+
+BjbSearchToolbar *
+bjb_main_view_get_search_toolbar (BjbMainView *view)
+{
+ g_return_val_if_fail (BJB_IS_MAIN_VIEW (view), NULL);
+
+ return view->priv->search_bar;
+}
+
+gpointer
+bjb_main_view_get_main_toolbar (BjbMainView *view)
+{
+ g_return_val_if_fail (BJB_IS_MAIN_VIEW (view), NULL);
+
+ return (gpointer) view->priv->main_toolbar;
+}
diff --git a/src/bjb-main-view.h b/src/bjb-main-view.h
index 6a99af3..bc8fcca 100644
--- a/src/bjb-main-view.h
+++ b/src/bjb-main-view.h
@@ -23,6 +23,7 @@
#include <libbiji/libbiji.h>
#include "bjb-controller.h"
+#include "bjb-search-toolbar.h"
G_BEGIN_DECLS
@@ -81,6 +82,10 @@ void switch_to_note_view(BjbMainView *view,BijiNoteObj *note) ;
void bjb_main_view_update_model (BjbMainView *view);
+BjbSearchToolbar *bjb_main_view_get_search_toolbar (BjbMainView *view);
+
+gpointer bjb_main_view_get_main_toolbar (BjbMainView *view);
+
G_END_DECLS
#endif /* _MAIN_VIEW_H_ */
diff --git a/src/bjb-search-toolbar.c b/src/bjb-search-toolbar.c
index d3b6a9c..2d8355e 100644
--- a/src/bjb-search-toolbar.c
+++ b/src/bjb-search-toolbar.c
@@ -30,7 +30,10 @@
#include <libgd/gd-entry-focus-hack.h>
#include "bjb-controller.h"
+#include "bjb-main-toolbar.h"
+#include "bjb-main-view.h"
#include "bjb-search-toolbar.h"
+#include "bjb-window-base.h"
enum
{
@@ -66,26 +69,61 @@ struct _BjbSearchToolbarPrivate
G_DEFINE_TYPE (BjbSearchToolbar, bjb_search_toolbar, GTK_TYPE_TOOLBAR);
static void
+bjb_search_toolbar_toggle_search_button (BjbSearchToolbar *self,
+ gboolean state)
+{
+ BjbMainView *view;
+ BjbMainToolbar *bar;
+
+ view = bjb_window_base_get_main_view (BJB_WINDOW_BASE (self->priv->window));
+ if (view)
+ {
+ bar = bjb_main_view_get_main_toolbar (view);
+ if (bar)
+ bjb_main_toolbar_set_search_toggle_state (bar, state);
+ }
+}
+
+void
bjb_search_toolbar_fade_in (BjbSearchToolbar *self)
{
if (!gd_revealer_get_child_revealed (self->priv->revealer))
{
GdkDevice *device;
+
+
+ /* show the search */
gd_revealer_set_reveal_child (self->priv->revealer, TRUE);
+ /* focus */
device = gtk_get_current_event_device ();
if (device)
gd_entry_focus_hack (self->priv->search_entry, device);
+
+ /* manually toggle search button */
+ bjb_search_toolbar_toggle_search_button (self, TRUE);
}
}
-static void
+void
bjb_search_toolbar_fade_out (BjbSearchToolbar *self)
{
if (gd_revealer_get_child_revealed (self->priv->revealer))
+ {
+ /* clear the search before hiding */
+ gtk_entry_set_text (GTK_ENTRY(self->priv->search_entry),"");
+ bjb_controller_set_needle (self->priv->controller,"");
+
+ /* hide */
gd_revealer_set_reveal_child (self->priv->revealer, FALSE);
+
+ /* manually toggle search button */
+ bjb_search_toolbar_toggle_search_button (self, FALSE);
+ }
}
+
+
/* If some text has been input, handle position */
static gboolean
on_key_released (GtkWidget *widget,GdkEvent *event,gpointer user_data)
diff --git a/src/bjb-search-toolbar.h b/src/bjb-search-toolbar.h
index c1100fb..018f955 100644
--- a/src/bjb-search-toolbar.h
+++ b/src/bjb-search-toolbar.h
@@ -53,6 +53,10 @@ GType bjb_search_toolbar_get_type (void) G_GNUC_CONST;
BjbSearchToolbar * bjb_search_toolbar_new (GtkWidget *window, BjbController *controller);
+void bjb_search_toolbar_fade_in (BjbSearchToolbar *self);
+
+void bjb_search_toolbar_fade_out (BjbSearchToolbar *self);
+
GdRevealer * bjb_search_toolbar_get_revealer (BjbSearchToolbar *self);
void bjb_search_toolbar_disconnect (BjbSearchToolbar *self);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]