#include <config.h>
-#define _GNU_SOURCE
-
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include "help.h"
#include "osm-db.h"
#include "search.h"
+#include "dialogs.h"
typedef struct _search_dialog search_dialog;
struct _search_dialog {
};
static search_dialog sd;
+static GtkListStore *search_model=NULL;
static gboolean
search_do_cb(GtkWidget *widget, gpointer data)
else
cid=-1;
if (s->stype==SEARCH_TYPE_POI && cid==-1 && slen<2) {
+#ifdef WITH_HILDON
+ hildon_banner_show_information(s->dialog, NULL, _("Query string too short. Minimum 2 characters."));
+#else
popup_error(s->dialog, _("Query string too short. Minimum 2 characters."));
+#endif
return TRUE;
} else if (slen<2 && s->stype!=SEARCH_TYPE_POI) {
+#ifdef WITH_HILDON
+ hildon_banner_show_information(s->dialog, NULL, _("Query string too short. Minimum 2 characters."));
+#else
popup_error(s->dialog, _("Query string too short. Minimum 2 characters."));
+#endif
return TRUE;
}
switch (s->stype) {
case SEARCH_TYPE_POI:
+ MACRO_BANNER_SHOW_INFO(s->dialog, _("Searching POIs..."));
sres=poi_search((cid==-1 && slen>0) ? POI_SEARCH_TEXT : (cid!=-1 && slen==0) ? POI_SEARCH_CAT : POI_SEARCH_TEXT_CAT, s->lat, s->lon, st, cid, &s->store);
break;
case SEARCH_TYPE_WAY:
+ MACRO_BANNER_SHOW_INFO(s->dialog, _("Searching streets..."));
sres=osm_way_search(s->lat, s->lon, st, &s->store);
break;
case SEARCH_TYPE_PLACE:
- popup_error(s->dialog, "Not yet implemented");
- sres=FALSE;
+ sres=osm_place_search(s->lat, s->lon, st, &s->store);
break;
}
GtkWidget *sw, *hbox, *label, *btn_search;
GtkTreeViewColumn *column;
GtkCellRenderer *renderer;
+GtkEntryCompletion *search_comp;
gint res;
sd.store=NULL;
GTK_STOCK_CLOSE, GTK_RESPONSE_REJECT,
NULL);
+if (search_model==NULL)
+ search_model=gtk_list_store_new(1, G_TYPE_STRING);
+
gtk_window_set_default_size(GTK_WINDOW(sd.dialog), 500, 300);
hbox = gtk_hbox_new(FALSE, 4),
sd.cmb_type=gtk_combo_box_new_text();
gtk_combo_box_append_text(GTK_COMBO_BOX(sd.cmb_type), "POI");
gtk_combo_box_append_text(GTK_COMBO_BOX(sd.cmb_type), "Street");
-#if 0
gtk_combo_box_append_text(GTK_COMBO_BOX(sd.cmb_type), "Place");
-#endif
gtk_box_pack_start(GTK_BOX(hbox), sd.cmb_type, FALSE, FALSE, 0);
sd.cmb_category = category_combo_new();
poi_category_combo_populate(sd.cmb_category, 0, TRUE);
sd.search_entry=gtk_entry_new();
+search_comp=gtk_entry_completion_new();
+gtk_entry_completion_set_model(search_comp, GTK_TREE_MODEL(search_model));
+gtk_entry_completion_set_text_column(search_comp, 0);
+gtk_entry_set_completion(GTK_ENTRY(sd.search_entry), search_comp);
gtk_box_pack_start(GTK_BOX(hbox), sd.search_entry, TRUE, TRUE, 0);
btn_search=gtk_button_new_with_label(_("Search"));