r3661 - in trunk/src/target/OM-2007.2/applications/openmoko-messages2: . src

chris at sita.openmoko.org chris at sita.openmoko.org
Mon Dec 17 15:56:11 CET 2007


Author: chris
Date: 2007-12-17 15:56:09 +0100 (Mon, 17 Dec 2007)
New Revision: 3661

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/configure.ac
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.c
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms.h
Log:
        * configure.ac:
        Add AC_GNU_SOURCE for strcasestr

        * src/sms-contacts.c:
        Include config.h first

        * src/sms-notes.c: (search_toggled_cb), (search_text_changed_cb),
        (search_combo_changed_cb), (notes_visible_func),
        (sms_notes_page_new):
        * src/sms.h:
        Add notes filtering via search string


Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog	2007-12-17 14:15:42 UTC (rev 3660)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog	2007-12-17 14:56:09 UTC (rev 3661)
@@ -1,5 +1,19 @@
 2007-12-17  Chris Lord  <chris at openedhand.com>
 
+	* configure.ac:
+	Add AC_GNU_SOURCE for strcasestr
+
+	* src/sms-contacts.c:
+	Include config.h first
+
+	* src/sms-notes.c: (search_toggled_cb), (search_text_changed_cb),
+	(search_combo_changed_cb), (notes_visible_func),
+	(sms_notes_page_new):
+	* src/sms.h:
+	Add notes filtering via search string
+
+2007-12-17  Chris Lord  <chris at openedhand.com>
+
 	* src/sms-contacts.c: (search_toggled_cb),
 	(search_text_changed_cb), (search_combo_changed_cb),
 	(contacts_visible_func), (sms_contacts_page_new):

Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/configure.ac
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/configure.ac	2007-12-17 14:15:42 UTC (rev 3660)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/configure.ac	2007-12-17 14:56:09 UTC (rev 3661)
@@ -9,6 +9,7 @@
 AC_PROG_CC
 AC_STDC_HEADERS
 AC_PROG_LIBTOOL
+AC_GNU_SOURCE
 
 PKG_CHECK_MODULES(EBOOK, libebook-1.2)
 PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.6.0)

Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c	2007-12-17 14:15:42 UTC (rev 3660)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c	2007-12-17 14:56:09 UTC (rev 3661)
@@ -17,14 +17,15 @@
  *  Current Version: $Rev$ ($Date$) [$Author$]
  */
 
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
 #include "sms-contacts.h"
 #include "sms-utils.h"
 #include <libmokoui2/moko-finger-scroll.h>
 #include <libmokoui2/moko-search-bar.h>
 #include <string.h>
-#ifdef HAVE_CONFIG_H
-#  include <config.h>
-#endif
 
 static const gchar *clear_numbers_uid;
 

Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.c	2007-12-17 14:15:42 UTC (rev 3660)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-notes.c	2007-12-17 14:56:09 UTC (rev 3661)
@@ -17,6 +17,10 @@
  *  Current Version: $Rev$ ($Date$) [$Author$]
  */
 
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
 #include "sms-notes.h"
 #include "sms-utils.h"
 #include <libjana/jana.h>
@@ -538,10 +542,64 @@
 	sms_delete_selected_contact_messages (data);
 }
 
+static void
+search_toggled_cb (MokoSearchBar *bar, gboolean search_visible, SmsData *data)
+{
+	gtk_tree_model_filter_refilter (
+		GTK_TREE_MODEL_FILTER (data->note_filter));
+}
+
+static void
+search_text_changed_cb (MokoSearchBar *bar, GtkEditable *editable,
+			SmsData *data)
+{
+	gtk_tree_model_filter_refilter (
+		GTK_TREE_MODEL_FILTER (data->note_filter));
+}
+
+static void
+search_combo_changed_cb (MokoSearchBar *bar, GtkComboBox *combo_box,
+			 SmsData *data)
+{
+	gtk_tree_model_filter_refilter (
+		GTK_TREE_MODEL_FILTER (data->note_filter));
+}
+
+static
+gboolean notes_visible_func (GtkTreeModel *model, GtkTreeIter *iter,
+				SmsData *data)
+{
+	if (moko_search_bar_search_visible (
+	    MOKO_SEARCH_BAR (data->notes_search))) {
+		const gchar *search;
+		gboolean result;
+		gchar *body;
+
+		search = gtk_entry_get_text (moko_search_bar_get_entry (
+			MOKO_SEARCH_BAR (data->notes_search)));
+		
+		if ((!search) || (search[0] == '\0')) return TRUE;
+		
+		/* Filter on search query */
+		gtk_tree_model_get (model, iter, JANA_GTK_NOTE_STORE_COL_BODY,
+			&body, -1);
+		if (!body) return FALSE;
+		
+		/* FIXME: Use a proper UTF-8 casefold comparison here */
+		result = strcasestr (body, search) ? TRUE : FALSE;
+		g_free (body);
+		
+		return result;
+	} else {
+		/* Filter on selected category */
+		return TRUE;
+	}
+}
+
 GtkWidget *
 sms_notes_page_new (SmsData *data)
 {
-	GtkWidget *scroll, *vbox, *searchbar;
+	GtkWidget *scroll, *vbox, *notes_combo;
 	GtkCellRenderer *renderer;
 	GHashTable *colours_hash;
 	
@@ -563,6 +621,9 @@
 	/* Create model and filter */
 	data->note_store = jana_gtk_note_store_new ();
 	data->note_filter = gtk_tree_model_filter_new (data->note_store, NULL);
+	gtk_tree_model_filter_set_visible_func ((GtkTreeModelFilter *)
+		data->note_filter, (GtkTreeModelFilterVisibleFunc)
+		notes_visible_func, data, NULL);
 	
 	/* Create a category-colour hash for the cell renderer */
 	colours_hash = g_hash_table_new (g_str_hash, g_str_equal);
@@ -580,16 +641,22 @@
 		(GtkTreeCellDataFunc)sms_notes_data_func, data, NULL);
 	
 	/* Create search bar */
-	data->notes_combo = gtk_combo_box_new_text ();
-	searchbar = moko_search_bar_new_with_combo (
-		GTK_COMBO_BOX (data->notes_combo));
+	notes_combo = gtk_combo_box_new_text ();
+	data->notes_search = moko_search_bar_new_with_combo (
+		GTK_COMBO_BOX (notes_combo));
+	g_signal_connect (data->notes_search, "toggled",
+		G_CALLBACK (search_toggled_cb), data);
+	g_signal_connect (data->notes_search, "text_changed",
+		G_CALLBACK (search_text_changed_cb), data);
+	g_signal_connect (data->notes_search, "combo_changed",
+		G_CALLBACK (search_combo_changed_cb), data);
 	
 	/* Pack widgets */
 	scroll = moko_finger_scroll_new ();
 	gtk_container_add (GTK_CONTAINER (scroll), data->notes_treeview);
 	
 	vbox = gtk_vbox_new (FALSE, 0);
-	gtk_box_pack_start (GTK_BOX (vbox), searchbar, FALSE, TRUE, 0);
+	gtk_box_pack_start (GTK_BOX (vbox), data->notes_search, FALSE, TRUE, 0);
 	gtk_box_pack_start (GTK_BOX (vbox), scroll, TRUE, TRUE, 0);
 	gtk_widget_show_all (vbox);
 	

Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms.h	2007-12-17 14:15:42 UTC (rev 3660)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms.h	2007-12-17 14:56:09 UTC (rev 3661)
@@ -53,7 +53,7 @@
 	GtkToolItem *delete_all_button;
 	GtkToolItem *delete_button;
 
-	GtkWidget *notes_combo;
+	GtkWidget *notes_search;
 	GdkPixbuf *author_icon;
 	GdkPixbuf *recipient_icon;
 	gchar *recipient_number;





More information about the commitlog mailing list