Add:Core:Improved searching
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Mon, 24 Nov 2008 15:07:33 +0000 (15:07 +0000)
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Mon, 24 Nov 2008 15:07:33 +0000 (15:07 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk/navit@1751 ffa7fe5e-494d-0410-b361-a75ebd5db220

navit/search.c
navit/search.h

index a768d04..fd4c4b3 100644 (file)
@@ -121,7 +121,7 @@ search_list_search(struct search_list *this_, struct attr *search_attr, int part
        }
 }
 
-int
+struct search_list_common *
 search_list_select(struct search_list *this_, enum attr_type attr_type, int id, int mode)
 {
        int level=search_list_level(attr_type);
@@ -131,23 +131,23 @@ search_list_select(struct search_list *this_, enum attr_type attr_type, int id,
        GList *curr;
        le=&this_->levels[level];
        curr=le->list;
-       if (mode > 0)
+       if (mode > 0 || !id)
                le->selected=mode;
-       dbg(0,"enter %d %d\n", id, mode);
+       dbg(1,"enter level=%d %d %d %p\n", level, id, mode, curr);
        while (curr) {
                num++;
                if (! id || num == id) {
                        slc=curr->data;
                        slc->selected=mode;
                        if (id) {
-                               dbg(0,"found\n");
-                               return 1;
+                               dbg(1,"found\n");
+                               return slc;
                        }
                }
                curr=g_list_next(curr);
        }
-       dbg(0,"not found\n");
-       return 0;
+       dbg(1,"not found\n");
+       return NULL;
 }
 
 static struct search_list_country *
index 29cf4b3..c868ab6 100644 (file)
@@ -72,7 +72,7 @@ struct search_list;
 struct search_list_result;
 struct search_list *search_list_new(struct mapset *ms);
 void search_list_search(struct search_list *this_, struct attr *search_attr, int partial);
-int search_list_select(struct search_list *this_, enum attr_type attr_type, int id, int mode);
+struct search_list_common *search_list_select(struct search_list *this_, enum attr_type attr_type, int id, int mode);
 struct search_list_result *search_list_get_result(struct search_list *this_);
 void search_list_destroy(struct search_list *this_);
 void search_init(void);