touch selector
authorThomas Thurman <tthurman@gnome.org>
Thu, 27 Aug 2009 22:43:42 +0000 (18:43 -0400)
committerThomas Thurman <tthurman@gnome.org>
Thu, 27 Aug 2009 22:43:42 +0000 (18:43 -0400)
belltower.c

index 54373bd..413bcd5 100644 (file)
@@ -8,6 +8,7 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <glib.h>
 #include <hildon/hildon.h>
 #include <gtk/gtk.h>
@@ -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); */