r2597 - in trunk/src/target/OM-2007.2/applications/openmoko-today2: . libtaku src
chris at sita.openmoko.org
chris at sita.openmoko.org
Wed Aug 1 13:53:50 CEST 2007
Author: chris
Date: 2007-08-01 13:53:49 +0200 (Wed, 01 Aug 2007)
New Revision: 2597
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-today2/ChangeLog
trunk/src/target/OM-2007.2/applications/openmoko-today2/libtaku/taku-launcher-tile.c
trunk/src/target/OM-2007.2/applications/openmoko-today2/libtaku/taku-launcher-tile.h
trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-launcher.c
trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today.h
Log:
Implement application searching in the launcher
Modified: trunk/src/target/OM-2007.2/applications/openmoko-today2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-today2/ChangeLog 2007-08-01 11:40:23 UTC (rev 2596)
+++ trunk/src/target/OM-2007.2/applications/openmoko-today2/ChangeLog 2007-08-01 11:53:49 UTC (rev 2597)
@@ -1,5 +1,16 @@
2007-08-01 Chris Lord,,, <chris at openedhand.com>
+ * libtaku/taku-launcher-tile.c: (taku_launcher_tile_remove_group),
+ (taku_launcher_tile_get_groups):
+ * libtaku/taku-launcher-tile.h:
+ * src/today-launcher.c: (today_launcher_update_search),
+ (today_launcher_filter_changed_cb),
+ (today_launcher_search_toggle_cb), (today_launcher_page_create):
+ * src/today.h:
+ Implement application searching in the launcher
+
+2007-08-01 Chris Lord,,, <chris at openedhand.com>
+
* src/today-task-manager.c: (today_task_manager_populate_tasks),
(screen_changed_cb), (today_task_manager_kill),
(today_task_manager_kill_clicked_cb),
Modified: trunk/src/target/OM-2007.2/applications/openmoko-today2/libtaku/taku-launcher-tile.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-today2/libtaku/taku-launcher-tile.c 2007-08-01 11:40:23 UTC (rev 2596)
+++ trunk/src/target/OM-2007.2/applications/openmoko-today2/libtaku/taku-launcher-tile.c 2007-08-01 11:53:49 UTC (rev 2597)
@@ -226,7 +226,22 @@
tile->priv->groups = g_list_prepend (tile->priv->groups, category);
}
+void
+taku_launcher_tile_remove_group (TakuLauncherTile *tile, TakuLauncherCategory *category)
+{
+ g_return_if_fail (TAKU_IS_LAUNCHER_TILE (tile));
+ tile->priv->groups = g_list_remove (tile->priv->groups, category);
+}
+
+GList *
+taku_launcher_tile_get_groups (TakuLauncherTile *tile)
+{
+ g_return_val_if_fail (TAKU_IS_LAUNCHER_TILE (tile), NULL);
+
+ return g_list_copy (tile->priv->groups);
+}
+
TakuLauncherCategory *
taku_launcher_category_new (void)
{
Modified: trunk/src/target/OM-2007.2/applications/openmoko-today2/libtaku/taku-launcher-tile.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-today2/libtaku/taku-launcher-tile.h 2007-08-01 11:40:23 UTC (rev 2596)
+++ trunk/src/target/OM-2007.2/applications/openmoko-today2/libtaku/taku-launcher-tile.h 2007-08-01 11:53:49 UTC (rev 2597)
@@ -75,6 +75,10 @@
void taku_launcher_tile_add_group (TakuLauncherTile *tile, TakuLauncherCategory *category);
+void taku_launcher_tile_remove_group (TakuLauncherTile *tile, TakuLauncherCategory *category);
+
+GList * taku_launcher_tile_get_groups (TakuLauncherTile *tile);
+
G_END_DECLS
#endif /* _TAKU_LAUNCHER_TILE */
Modified: trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-launcher.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-launcher.c 2007-08-01 11:40:23 UTC (rev 2596)
+++ trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today-launcher.c 2007-08-01 11:53:49 UTC (rev 2597)
@@ -191,6 +191,50 @@
}
static void
+today_launcher_update_search (TodayData *data, const gchar *search_string)
+{
+ GList *children, *c;
+
+ children = gtk_container_get_children (
+ GTK_CONTAINER (data->launcher_table));
+ for (c = children; c; c = c->next) {
+ gchar *name, *desc;
+ GtkWidget *tile = GTK_WIDGET (c->data);
+
+ if (!TAKU_IS_LAUNCHER_TILE (tile)) continue;
+
+ taku_launcher_tile_remove_group (TAKU_LAUNCHER_TILE (tile),
+ data->search_cat);
+ name = g_utf8_strup (taku_icon_tile_get_primary (
+ TAKU_ICON_TILE (tile)), -1);
+ desc = g_utf8_strup (taku_icon_tile_get_secondary (
+ TAKU_ICON_TILE (tile)), -1);
+ if (strstr (name, search_string) ||
+ strstr (desc, search_string)) {
+ taku_launcher_tile_add_group (TAKU_LAUNCHER_TILE (tile),
+ data->search_cat);
+ }
+ g_free (name);
+ g_free (desc);
+ }
+}
+
+static void
+today_launcher_filter_changed_cb (GtkEditable *editable, TodayData *data)
+{
+ gchar *search_string;
+
+ search_string = g_utf8_strup (gtk_entry_get_text (
+ GTK_ENTRY (editable)), -1);
+ today_launcher_update_search (data, search_string);
+ g_free (search_string);
+
+ /* Force the table to update */
+ taku_table_set_filter (TAKU_TABLE (data->launcher_table),
+ data->search_cat);
+}
+
+static void
today_launcher_search_toggle_cb (GtkWidget *button, TodayData *data)
{
g_object_set (G_OBJECT (data->search_entry), "visible",
@@ -200,10 +244,17 @@
if (GTK_WIDGET_VISIBLE (data->search_entry)) {
/* Set the category to the created search category */
+ taku_table_set_filter (TAKU_TABLE (data->launcher_table),
+ data->search_cat);
} else {
/* Set the category back to the one pointed to by the
* drop-down.
*/
+ taku_table_set_filter (TAKU_TABLE (data->launcher_table),
+ (TakuLauncherCategory *)g_list_nth_data (
+ data->categories, gtk_combo_box_get_active (
+ GTK_COMBO_BOX (data->filter_combo))));
+ gtk_widget_grab_focus (data->search_entry);
}
}
@@ -239,6 +290,8 @@
gtk_widget_show_all (toggle);
data->search_entry = gtk_entry_new ();
+ g_signal_connect (G_OBJECT (data->search_entry), "changed",
+ G_CALLBACK (today_launcher_filter_changed_cb), data);
gtk_widget_set_name (data->search_entry, "mokosearchentry");
g_object_set (G_OBJECT (data->search_entry), "no-show-all", TRUE, NULL);
gtk_box_pack_start (GTK_BOX (hbox), data->search_entry, TRUE, TRUE, 0);
@@ -256,6 +309,12 @@
gtk_icon_size_register ("TakuIcon", 64, 64);
data->launcher_table = taku_table_new ();
+ /* Create search category */
+ data->search_cat = g_new0 (TakuLauncherCategory, 1);
+ data->search_cat->name = g_strdup ("Search");
+ data->search_cat->matches = g_new0 (gchar *, 2);
+ data->search_cat->matches[0] = g_strdup ("meta-search");
+
/* Load app categories */
vfolder_dir = g_build_filename (g_get_home_dir (),
".matchbox", "vfolders", NULL);
@@ -294,6 +353,9 @@
}
load_data_dir (g_get_user_data_dir (),
TAKU_TABLE (data->launcher_table), data->categories, NULL);
+
+ /* Make sure initial search shows all items */
+ today_launcher_update_search (data, "");
gtk_container_add (GTK_CONTAINER (viewport), data->launcher_table);
Modified: trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today.h 2007-08-01 11:40:23 UTC (rev 2596)
+++ trunk/src/target/OM-2007.2/applications/openmoko-today2/src/today.h 2007-08-01 11:53:49 UTC (rev 2597)
@@ -14,8 +14,6 @@
GtkWidget *home_toolbar;
GtkWidget *message_box;
GtkWidget *summary_box;
- GtkWidget *filter_combo;
- GtkWidget *search_entry;
GtkToolItem *dial_button;
GtkToolItem *contacts_button;
GtkToolItem *messages_button;
@@ -26,6 +24,9 @@
/* App launcher */
GList *categories;
GtkWidget *launcher_table;
+ GtkWidget *filter_combo;
+ GtkWidget *search_entry;
+ TakuLauncherCategory *search_cat;
/* App manager */
GdkWindow *root_window;
More information about the commitlog
mailing list