r3373 - in trunk/src/target/OM-2007.2/applications/openmoko-appmanager2: . src
thomas at sita.openmoko.org
thomas at sita.openmoko.org
Wed Nov 7 18:32:39 CET 2007
Author: thomas
Date: 2007-11-07 18:32:38 +0100 (Wed, 07 Nov 2007)
New Revision: 3373
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: (on_selection_changed),
(navigation_area_new):
* src/search-bar.c: (search_bar_new):
Add package name text search support
Modified: trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog 2007-11-07 17:14:21 UTC (rev 3372)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/ChangeLog 2007-11-07 17:32:38 UTC (rev 3373)
@@ -1,5 +1,14 @@
2007-11-07 Thomas Wood <thomas at openedhand.com>
+ * src/appmanager-data.h:
+ * src/navigation-area.c: (on_selection_changed),
+ (navigation_area_new):
+ * src/search-bar.c: (search_bar_new):
+
+ Add package name text search support
+
+2007-11-07 Thomas Wood <thomas at openedhand.com>
+
* src/am-progress-dialog.h:
* src/ipkg-utils.c:
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-07 17:14:21 UTC (rev 3372)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/appmanager-data.h 2007-11-07 17:32:38 UTC (rev 3373)
@@ -74,6 +74,8 @@
GtkToolItem *install_btn; /* Install toolbar button */
GtkToolItem *remove_btn; /* Remove toolbar button */
+
+ GtkWidget *searchbar;
} 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-07 17:14:21 UTC (rev 3372)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/navigation-area.c 2007-11-07 17:32:38 UTC (rev 3373)
@@ -19,6 +19,7 @@
*/
#include <string.h>
#include <moko-finger-scroll.h>
+#include <moko-search-bar.h>
#include "appmanager-window.h"
#include "navigation-area.h"
@@ -65,68 +66,6 @@
}
}
-/*
- * @brief The callback function of the signal "button_press_event"
- */
-gboolean
-on_treeview_button_press_event (GtkWidget *treeview,
- GdkEventButton *event,
- gpointer data)
-{
- g_return_val_if_fail (MOKO_IS_APPLICATION_MANAGER_DATA (data), FALSE);
-
- if (event->type == GDK_BUTTON_PRESS)
- {
- GtkTreeSelection *selection;
- GtkTreeIter iter;
- GtkTreePath *path;
- GtkTreeModel *model;
- GtkTreeViewColumn *column;
- GtkTreeViewColumn *firstcol;
- gpointer pkg;
-
- GtkMenu *selectmenu;
-
- if (!(event->window == gtk_tree_view_get_bin_window (GTK_TREE_VIEW (treeview))))
- {
- g_debug ("Not a package list view event");
- return FALSE;
- }
-
- if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (treeview),
- (int)event->x, (int)event->y,
- &path, &column, NULL, NULL))
- {
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
- firstcol = gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), 0);
- gtk_tree_selection_unselect_all (selection);
- gtk_tree_view_set_cursor (GTK_TREE_VIEW (treeview), path, NULL, FALSE);
-
- if (!((event->button == 1) && (strcmp(firstcol->title, column->title) == 0)))
- {
- return TRUE;
- }
-
- if (gtk_tree_selection_get_selected (selection, &model, &iter))
- {
- gtk_tree_model_get (model, &iter, COL_POINTER, &pkg, -1);
- selectmenu = application_manager_get_select_menu (
- MOKO_APPLICATION_MANAGER_DATA (data));
- g_return_val_if_fail (MOKO_IS_SELECT_MENU (selectmenu), TRUE);
- g_debug ("popup menu");
- moko_select_menu_popup (MOKO_SELECT_MENU (selectmenu),
- event,
- MOKO_APPLICATION_MANAGER_DATA (data),
- pkg);
- }
- return TRUE;
- }
-
- }
-
- return FALSE;
-}
-
static GtkListStore *
create_package_list_store (void)
{
@@ -141,6 +80,34 @@
/*
+ * model_filter_func
+ */
+
+gboolean
+model_filter_func (GtkTreeModel *model, GtkTreeIter *iter, ApplicationManagerData *appdata)
+{
+ gboolean result = TRUE;
+
+ if (moko_search_bar_search_visible (MOKO_SEARCH_BAR (appdata->searchbar)))
+ {
+ 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 result;
+}
+
+/*
* @brief Create all widgets in the navigation area for the application manager data.
*
* @param appdata The application manager data
@@ -152,7 +119,7 @@
GtkWidget *scrollwindow;
GtkWidget *treeview;
- GtkTreeModel *model;
+ GtkTreeModel *model, *filter;
GtkTreeViewColumn *col;
GtkCellRenderer *renderer;
@@ -185,23 +152,15 @@
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), col);
-#if 0
- /* Add the size as the third column. */
- col = gtk_tree_view_column_new ();
- gtk_tree_view_column_set_title (col, _("Size"));
-
- renderer = gtk_cell_renderer_text_new ();
- gtk_tree_view_column_pack_start (col, renderer, FALSE);
- gtk_tree_view_column_set_attributes (col, renderer,
- "text", COL_SIZE,
- NULL);
-
- gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), col);
-#endif
-
model = GTK_TREE_MODEL (create_package_list_store ());
- gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), model);
+
+ filter = gtk_tree_model_filter_new (model, NULL);
+ gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (filter),
+ (GtkTreeModelFilterVisibleFunc) model_filter_func, appdata, NULL);
g_object_unref (model);
+
+ gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), filter);
+ g_object_unref (filter);
gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),
GTK_SELECTION_BROWSE);
@@ -214,87 +173,10 @@
g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),
"changed", G_CALLBACK (on_selection_changed), appdata);
- g_signal_connect ((gpointer) treeview, "button_press_event",
- G_CALLBACK (on_treeview_button_press_event),
- appdata);
-
return scrollwindow;
}
/*
- * @brief Insert test data
- */
-gint
-navigation_area_insert_test_data (ApplicationManagerData *appdata)
-{
- GtkWidget *treeview;
-
- GtkTreeModel *model;
- GtkListStore *store;
- GtkTreeIter iter;
- GdkPixbuf *pix = NULL;
-
- treeview = application_manager_get_tvpkglist (appdata);
- if (treeview == NULL)
- {
- g_debug ("Treeview not init correctly");
- return OP_ERROR;
- }
- model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
- store = GTK_LIST_STORE (model);
- if (store == NULL)
- {
- g_debug ("The store of package list not init correctly");
- return OP_ERROR;
- }
-
- g_object_ref (model);
- gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), NULL);
- gtk_list_store_clear (store);
-
- pix = application_manager_data_get_status_pixbuf (appdata, PKG_STATUS_AVAILABLE);
- gtk_list_store_append (store, &iter);
- gtk_list_store_set (store, &iter,
- COL_STATUS, pix,
- COL_NAME, "test-core",
- COL_SIZE, "11k",
- COL_POINTER, NULL,
- -1);
-
- pix = application_manager_data_get_status_pixbuf (appdata, PKG_STATUS_INSTALLED);
- gtk_list_store_append (store, &iter);
- gtk_list_store_set (store, &iter,
- COL_STATUS, pix,
- COL_NAME, "test-vim",
- COL_SIZE, "21k",
- COL_POINTER, NULL,
- -1);
-
- pix = application_manager_data_get_status_pixbuf (appdata, PKG_STATUS_UPGRADEABLE);
- gtk_list_store_append (store, &iter);
- gtk_list_store_set (store, &iter,
- COL_STATUS, pix,
- COL_NAME, "test-game",
- COL_SIZE, "188k",
- COL_POINTER, NULL,
- -1);
-
- pix = application_manager_data_get_status_pixbuf (appdata, PKG_STATUS_AVAILABLE_MARK_FOR_INSTALL);
- gtk_list_store_append (store, &iter);
- gtk_list_store_set (store, &iter,
- COL_STATUS, pix,
- COL_NAME, "test-dialer",
- COL_SIZE, "211k",
- COL_POINTER, NULL,
- -1);
-
- gtk_tree_view_set_model (GTK_TREE_VIEW(treeview), model);
- g_object_unref (model);
-
- return OP_SUCCESS;
-}
-
-/*
* @brief Get the name that the roll was selected from the treeview
* @param treeview The treeview
* @return The package name.
@@ -331,7 +213,7 @@
gpointer pkglist)
{
GtkWidget *treeview;
- GtkTreeModel *model;
+ GtkTreeModel *model, *filter;
GtkListStore *store;
GtkTreeIter iter;
@@ -341,23 +223,20 @@
treeview = application_manager_get_tvpkglist (appdata);
g_return_if_fail (GTK_IS_TREE_VIEW (treeview));
- model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
+ filter = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
+ model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (filter));
+
g_return_if_fail (GTK_IS_TREE_MODEL (model));
store = GTK_LIST_STORE (model);
- g_object_ref (model);
- gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), NULL);
gtk_list_store_clear (store);
translate_package_list_to_store (appdata, store, pkglist);
/* Save current list to the application manager data */
application_manager_data_set_current_list (appdata, pkglist);
-
- gtk_tree_view_set_model (GTK_TREE_VIEW(treeview), model);
- g_object_unref (model);
/* ensure one item is selected */
- if (gtk_tree_model_get_iter_first (model, &iter))
+ if (gtk_tree_model_get_iter_first (filter, &iter))
gtk_tree_selection_select_iter (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),
&iter);
}
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-07 17:14:21 UTC (rev 3372)
+++ trunk/src/target/OM-2007.2/applications/openmoko-appmanager2/src/search-bar.c 2007-11-07 17:32:38 UTC (rev 3373)
@@ -34,6 +34,10 @@
static void
text_changed_cb (MokoSearchBar *searchbar, GtkEditable *editable, ApplicationManagerData *data)
{
+ GtkTreeModel *filter;
+
+ filter = gtk_tree_view_get_model (GTK_TREE_VIEW (data->tvpkglist));
+ gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (filter));
}
static void
@@ -126,6 +130,10 @@
searchbar = moko_search_bar_new_with_combo (GTK_COMBO_BOX (combo));
g_signal_connect (searchbar, "combo-changed", G_CALLBACK (combo_changed_cb), appdata);
+ g_signal_connect (searchbar, "text-changed", G_CALLBACK (text_changed_cb), appdata);
+ g_signal_connect (searchbar, "toggled", G_CALLBACK (searchbar_toggled_cb), appdata);
+
+ appdata->searchbar = searchbar;
return searchbar;
}
More information about the commitlog
mailing list