return FILTER_STOP;
}
+/**
+ * A tower that was accepted by a filter.
+ */
+typedef struct {
+ char *sortkey;
+ char *primarykey;
+ char *displayname;
+} FoundTower;
+
+static FoundTower *
+found_tower_new (tower *basis)
+{
+ FoundTower* result = g_new (FoundTower, 1);
+
+ result->sortkey = g_strdup (basis->fields[FieldPrimaryKey]);
+ result->primarykey = g_strdup (basis->fields[FieldPrimaryKey]);
+ result->displayname = g_strdup_printf ("%s, %s (%s, %s)",
+ basis->fields[FieldDedication],
+ basis->fields[FieldPlace],
+ basis->fields[FieldBells],
+ basis->fields[FieldPracticeNight]);
+
+ return result;
+}
+
+static void
+found_tower_free (FoundTower *tower)
+{
+ g_free (tower->sortkey);
+ g_free (tower->primarykey);
+ g_free (tower->displayname);
+ g_free (tower);
+}
+
static void
parse_dove (ParseDoveCallback callback,
GSList **filter_results,
if (filter_results)
{
*filter_results = g_slist_append (*filter_results,
- g_strdup (result.fields[FieldPrimaryKey]));
+ found_tower_new (&result));
}
}
{
GtkWidget *dialog;
GtkWidget *selector;
- gchar *result = NULL;
+ gint result = -1;
GSList *cursor;
+ gchar foo[2048];
if (!list)
{
for (cursor=list; cursor; cursor=cursor->next)
{
+ FoundTower* found = (FoundTower*) cursor->data;
hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (selector),
- cursor->data);
+ found->displayname);
}
hildon_picker_dialog_set_selector (HILDON_PICKER_DIALOG (dialog),
if (gtk_dialog_run (GTK_DIALOG (dialog))==GTK_RESPONSE_OK)
{
- result = g_strdup (hildon_touch_selector_get_current_text (HILDON_TOUCH_SELECTOR (selector)));
+ GList *rows = hildon_touch_selector_get_selected_rows (HILDON_TOUCH_SELECTOR (selector),
+ 0);
+ GtkTreePath *path = (GtkTreePath*) rows->data;
+ gint *indices = gtk_tree_path_get_indices (path);
+
+ result = *indices;
}
gtk_widget_destroy (GTK_WIDGET (dialog));
- if (result)
+ if (result!=-1)
{
- show_tower (result);
- g_free (result);
+ FoundTower *found = (FoundTower *) g_slist_nth_data (list, result);
+ show_tower (found->primarykey);
}
/* FIXME: and free the list */