r3385 - in trunk/src/target/OM-2007.2/applications/openmoko-appmanager2: . src
thomas at sita.openmoko.org
thomas at sita.openmoko.org
Fri Nov 9 17:06:42 CET 2007
Author: thomas
Date: 2007-11-09 17:06:40 +0100 (Fri, 09 Nov 2007)
New Revision: 3385
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-data.h
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/navigation-area.c
trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/search-bar.c
Log:
* src/appmanager-data.h:
* src/navigation-area.c:
* src/search-bar.c: (text_changed_cb), (combo_changed_cb):
Optimise the filter function by doing some operations before filtering
Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog 2007-11-09 14:41:12 UTC (rev 3384)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog 2007-11-09 16:06:40 UTC (rev 3385)
@@ -1,5 +1,13 @@
2007-11-09 Thomas Wood <thomas at openedhand.com>
+ * src/appmanager-data.h:
+ * src/navigation-area.c:
+ * src/search-bar.c: (text_changed_cb), (combo_changed_cb):
+
+ Optimise the filter function by doing some operations before filtering
+
+2007-11-09 Thomas Wood <thomas at openedhand.com>
+
* src/package-store.c: (package_store_new): Filter out dbg,dev,doc and
locale packages from the main package list.
Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-data.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-data.h 2007-11-09 14:41:12 UTC (rev 3384)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-data.h 2007-11-09 16:06:40 UTC (rev 3385)
@@ -75,6 +75,9 @@
GtkToolItem *remove_btn; /* Remove toolbar button */
GtkWidget *searchbar;
+ /* these are used to optimise the filter function */
+ gboolean searchbar_name_search;
+ const gchar *searchbar_needle;
} ApplicationManagerData;
/*
Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/navigation-area.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/navigation-area.c 2007-11-09 14:41:12 UTC (rev 3384)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/navigation-area.c 2007-11-09 16:06:40 UTC (rev 3385)
@@ -71,55 +71,29 @@
*/
gboolean
-model_filter_func (GtkTreeModel *model, GtkTreeIter *iter, ApplicationManagerData *appdata)
+model_filter_func (GtkTreeModel *model, GtkTreeIter *iter, ApplicationManagerData *data)
{
- gboolean result = TRUE;
+ IPK_PACKAGE *pkg;
- if (!appdata->searchbar)
- return FALSE;
-
+ if (!data->searchbar_needle)
+ return TRUE;
- if (moko_search_bar_search_visible (MOKO_SEARCH_BAR (appdata->searchbar)))
+ gtk_tree_model_get (model, iter, COL_POINTER, &pkg, -1);
+
+ if (!pkg)
+ return FALSE;
+
+
+ if (data->searchbar_name_search)
{
- gchar *haystack;
- const gchar *needle;
- GtkEntry *entry;
-
- gtk_tree_model_get (model, iter, COL_NAME, &haystack, -1);
-
- entry = moko_search_bar_get_entry (MOKO_SEARCH_BAR (appdata->searchbar));
- needle = gtk_entry_get_text (entry);
-
- result = (strstr (haystack, needle) != NULL);
-
- g_free (haystack);
- return result;
+ return (strstr (pkg->name, data->searchbar_needle) != NULL);
}
else
{
- GtkComboBox *combo;
- GtkTreeIter cb_iter;
- GtkTreeModel *cb_model;
- gchar *needle;
- IPK_PACKAGE *pkg;
-
- combo = moko_search_bar_get_combo_box (MOKO_SEARCH_BAR (appdata->searchbar));
- if (!gtk_combo_box_get_active_iter (combo, &cb_iter))
- return FALSE;
- cb_model = gtk_combo_box_get_model (combo);
- if (!cb_model) return FALSE;
- gtk_tree_model_get (cb_model, &cb_iter, 0, &needle, -1);
-
- gtk_tree_model_get (model, iter, COL_POINTER, &pkg, -1);
-
- if (pkg && pkg->section && needle && !strcmp (pkg->section, needle))
- result = TRUE;
- else
- result = FALSE;
-
- g_free (needle);
- return result;
+ return (!strcmp (pkg->section, data->searchbar_needle));
}
+
+
}
/*
Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/search-bar.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/search-bar.c 2007-11-09 14:41:12 UTC (rev 3384)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/search-bar.c 2007-11-09 16:06:40 UTC (rev 3385)
@@ -35,7 +35,15 @@
text_changed_cb (MokoSearchBar *searchbar, GtkEditable *editable, ApplicationManagerData *data)
{
GtkTreeModel *filter;
+ GtkEntry *entry;
+ const gchar *needle;
+ entry = moko_search_bar_get_entry (MOKO_SEARCH_BAR (data->searchbar));
+ needle = gtk_entry_get_text (entry);
+
+ data->searchbar_name_search = TRUE;
+ data->searchbar_needle = needle;
+
filter = gtk_tree_view_get_model (GTK_TREE_VIEW (data->tvpkglist));
gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (filter));
}
@@ -44,14 +52,34 @@
combo_changed_cb (MokoSearchBar *searchbar, GtkComboBox *combo, ApplicationManagerData *data)
{
GtkTreeModel *filter;
+ const gchar *needle;
+ GtkTreeIter cb_iter;
+ GtkTreeModel *cb_model;
+
+ if (!combo)
+ combo = moko_search_bar_get_combo_box (MOKO_SEARCH_BAR (data->searchbar));
+
+ if (!gtk_combo_box_get_active_iter (combo, &cb_iter))
+ return;
+
+ cb_model = gtk_combo_box_get_model (combo);
+ gtk_tree_model_get (cb_model, &cb_iter, 0, &needle, -1);
+ data->searchbar_name_search = FALSE;
+ data->searchbar_needle = needle;
+
+
filter = gtk_tree_view_get_model (GTK_TREE_VIEW (data->tvpkglist));
gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (filter));
}
static void
searchbar_toggled_cb (MokoSearchBar *searchbar, gboolean search, ApplicationManagerData *data)
-{
+{
+ if (search)
+ text_changed_cb (searchbar, NULL, data);
+ else
+ combo_changed_cb (searchbar, NULL, data);
}
gboolean
More information about the commitlog
mailing list