#define MAX_FIELDS 50
-#define EM_DASH "\xE2\x80\x94"
-
GtkWidget *window;
/*
}
static gboolean
-get_areas_cb (tower *details,
- gpointer data)
+get_countries_cb (tower *details,
+ gpointer data)
{
GHashTable *hash = (GHashTable *)data;
return TRUE; /* header row */
if (!g_hash_table_lookup_extended (hash,
- details->fields[FieldCounty],
+ details->fields[FieldCountry],
NULL, NULL))
{
- char *display_format;
+ g_hash_table_insert (hash,
+ g_strdup(details->fields[FieldCountry]),
+ g_strdup (details->fields[FieldCountry]));
+ }
- if (strcmp (details->fields[FieldCounty], "")==0)
- {
- display_format = g_strdup (details->fields[FieldCountry]);
- }
- else
- {
- display_format = g_strdup_printf ("%s " EM_DASH " %s",
- details->fields[FieldCountry],
- details->fields[FieldCounty]);
- }
+ return TRUE;
+}
- g_hash_table_insert (hash,
+typedef struct {
+ GHashTable *hash;
+ gchar *country_name;
+} country_cb_data;
+
+static gboolean
+get_counties_cb (tower *details,
+ gpointer data)
+{
+ country_cb_data *d = (country_cb_data *)data;
+
+ if (details->serial==0)
+ return TRUE; /* header row */
+
+ if (strcmp(details->fields[FieldCountry], d->country_name)!=0)
+ return TRUE; /* wrong country */
+
+ if (!g_hash_table_lookup_extended (d->hash,
+ details->fields[FieldCounty],
+ NULL, NULL))
+ {
+ g_hash_table_insert (d->hash,
g_strdup(details->fields[FieldCounty]),
- display_format);
+ g_strdup (details->fields[FieldCounty]));
}
return TRUE;
}
static void
-area_activated (GtkTreeView *treeview,
- GtkTreePath *path,
- GtkTreeViewColumn *column,
- gpointer data)
+towers_by_subarea (gchar *area)
{
- GtkTreeModel *model = gtk_tree_view_get_model (treeview);
- GtkTreeIter iter;
+ GtkWidget *dialog = hildon_picker_dialog_new (GTK_WINDOW (window));
+
+ 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=NULL, *cursor;
+
+ gchar *title = g_strdup_printf ("Areas of %s", area);
+
+ country_cb_data d = { hash, area };
+
+ gtk_window_set_title (GTK_WINDOW (dialog), title);
+ g_free (title);
+
+ parse_dove (get_counties_cb,
+ &d);
- if (gtk_tree_model_get_iter (model, &iter, path))
+ g_hash_table_foreach (hash,
+ put_areas_into_list,
+ &list);
+
+ for (cursor=list; cursor; cursor=cursor->next)
{
- char *r;
- gtk_tree_model_get (model, &iter, 0, &r, -1);
- if (r == NULL)
- return;
+ hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (selector),
+ cursor->data);
+ }
+
+ hildon_picker_dialog_set_selector (HILDON_PICKER_DIALOG (dialog),
+ HILDON_TOUCH_SELECTOR (selector));
- show_message (r);
+ gtk_widget_show_all (GTK_WIDGET (dialog));
+
+ if (gtk_dialog_run (GTK_DIALOG (dialog))==GTK_RESPONSE_OK)
+ {
+ show_message (hildon_touch_selector_get_current_text (HILDON_TOUCH_SELECTOR (selector)));
}
+ g_hash_table_unref (hash);
+ gtk_widget_destroy (GTK_WIDGET (dialog));
}
static void
towers_by_area (void)
{
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 = NULL, *cursor;
+ gchar *result = NULL;
- GSList *list, *cursor;
+ gtk_window_set_title (GTK_WINDOW (dialog), "Areas of the world");
- parse_dove (get_areas_cb,
+ parse_dove (get_countries_cb,
hash);
g_hash_table_foreach (hash,
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)));
+ if (gtk_dialog_run (GTK_DIALOG (dialog))==GTK_RESPONSE_OK)
+ {
+ result = g_strdup (hildon_touch_selector_get_current_text (HILDON_TOUCH_SELECTOR (selector)));
+ }
+ g_hash_table_unref (hash);
gtk_widget_destroy (GTK_WIDGET (dialog));
- /* g_hash_table_unref (hash); */
+ if (result)
+ {
+ towers_by_subarea (result);
+ g_free (result);
+ }
}
static void