implemented search
authorThomas Thurman <tthurman@gnome.org>
Fri, 28 Aug 2009 21:33:20 +0000 (17:33 -0400)
committerThomas Thurman <tthurman@gnome.org>
Fri, 28 Aug 2009 21:33:20 +0000 (17:33 -0400)
belltower.c

index ba1a88f..d4b80e8 100644 (file)
@@ -325,6 +325,25 @@ get_towers_by_county_cb (tower *details,
 }
 
 static FilterResult
+get_towers_by_search_cb (tower *details,
+                        gpointer data)
+{
+  char *s = (char *) data;
+
+  if (strcasestr(details->fields[FieldCountry], s) ||
+      strcasestr(details->fields[FieldCounty], s) ||
+      strcasestr(details->fields[FieldDedication], s) ||
+      strcasestr(details->fields[FieldPlace], s))
+    {
+      return FILTER_ACCEPT;
+    }
+  else
+    {
+      return FILTER_IGNORE;
+    }
+}
+
+static FilterResult
 single_tower_cb (tower *details,
                 gpointer data)
 {
@@ -770,6 +789,7 @@ tower_search (void)
                                                  GTK_RESPONSE_OK,
                                                  NULL);
   GtkWidget *entry = gtk_entry_new ();
+  GSList *matches = NULL;
 
   gtk_box_pack_end (GTK_BOX (GTK_DIALOG (terms)->vbox),
                    entry, TRUE, TRUE, 0);
@@ -778,7 +798,13 @@ tower_search (void)
 
   if (gtk_dialog_run (GTK_DIALOG (terms))==GTK_RESPONSE_OK)
     {
-      show_message (gtk_entry_get_text (GTK_ENTRY (entry)));
+      GSList *matches = NULL;
+
+      parse_dove (get_towers_by_search_cb,
+                 &matches,
+                 (char*) gtk_entry_get_text (GTK_ENTRY (entry)));
+
+      show_towers_from_list (matches);
     }
 
   gtk_widget_destroy (GTK_WIDGET (terms));