From: Thomas Thurman Date: Thu, 27 Aug 2009 22:43:42 +0000 (-0400) Subject: touch selector X-Git-Url: https://vcs.maemo.org/git/?p=belltower;a=commitdiff_plain;h=854052382dbda91d99287b87ea98aebc4287a068 touch selector --- diff --git a/belltower.c b/belltower.c index 54373bd..413bcd5 100644 --- a/belltower.c +++ b/belltower.c @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -444,72 +445,82 @@ show_tower (char *primary_key) primary_key); } +static gint strcmp_f (gconstpointer a, + gconstpointer b) +{ + return strcmp ((char*)a, (char*)b); +} + static void put_areas_into_list (gpointer key, gpointer value, gpointer data) { + GSList **list = (GSList **)data; + *list = g_slist_insert_sorted (*list, + value, + strcmp_f); +} + +static void +area_activated (GtkTreeView *treeview, + GtkTreePath *path, + GtkTreeViewColumn *column, + gpointer data) +{ + GtkTreeModel *model = gtk_tree_view_get_model (treeview); GtkTreeIter iter; - GtkListStore *list_store = (GtkListStore*) data; - gtk_list_store_append (list_store, &iter); - gtk_list_store_set (list_store, &iter, - 0, value, - -1); + + if (gtk_tree_model_get_iter (model, &iter, path)) + { + char *r; + gtk_tree_model_get (model, &iter, 0, &r, -1); + if (r == NULL) + return; + + show_message (r); + } } static void towers_by_area (void) { - GtkWidget *dialog = gtk_dialog_new (); + GtkWidget *dialog = hildon_picker_dialog_new (GTK_WINDOW (window)); GtkWidget *vbox = GTK_DIALOG(dialog)->vbox; GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); GtkWidget *treeview = hildon_gtk_tree_view_new (HILDON_UI_MODE_NORMAL); GtkWidget *pan = hildon_pannable_area_new (); GtkListStore *list_store = gtk_list_store_new(1, G_TYPE_STRING); + GtkWidget *selector = hildon_touch_selector_new_text (); + GHashTable *hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); + + GSList *list, *cursor; + parse_dove (get_areas_cb, hash); g_hash_table_foreach (hash, put_areas_into_list, - list_store); - - /* g_signal_connect (G_OBJECT (dialog), "delete_event", G_CALLBACK (g_hash_table_destroy), hash)*/ - - gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (list_store), - 0, - GTK_SORT_ASCENDING); - - g_object_set (GTK_OBJECT(renderer), "yalign", 0.5, NULL); - g_object_set (GTK_OBJECT(renderer), "xpad", 24, NULL); - - gtk_window_set_title (GTK_WINDOW (dialog), "Towers by area"); + &list); - gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview), - 0, "", - renderer, - "text", 0, - NULL); - - gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), - GTK_TREE_MODEL (list_store)); - - g_object_unref (list_store); - - hildon_pannable_area_add_with_viewport (HILDON_PANNABLE_AREA (pan), - treeview); + for (cursor=list; cursor; cursor=cursor->next) + { + hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (selector), + cursor->data); + } - hildon_pannable_area_set_size_request_policy (HILDON_PANNABLE_AREA (pan), - HILDON_SIZE_REQUEST_CHILDREN); - gtk_container_add(GTK_CONTAINER (vbox), pan); + hildon_picker_dialog_set_selector (HILDON_PICKER_DIALOG (dialog), + HILDON_TOUCH_SELECTOR (selector)); gtk_widget_show_all (GTK_WIDGET (dialog)); gtk_dialog_run (GTK_DIALOG (dialog)); + show_message (hildon_touch_selector_get_current_text (HILDON_TOUCH_SELECTOR (selector))); gtk_widget_destroy (GTK_WIDGET (dialog)); /* g_hash_table_unref (hash); */