From: martin-s Date: Sat, 21 Nov 2009 21:38:29 +0000 (+0000) Subject: Fix:gui_internal:Fixed and improved broken search X-Git-Tag: navit-0.5.0.5194svn~2405 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4ebc27ce6d47420e2761d4554c958f37c0785260;p=profile%2Fivi%2Fnavit.git Fix:gui_internal:Fixed and improved broken search git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@2786 ffa7fe5e-494d-0410-b361-a75ebd5db220 --- diff --git a/navit/navit/attr_def.h b/navit/navit/attr_def.h index 97f8ccb..b6f8684 100644 --- a/navit/navit/attr_def.h +++ b/navit/navit/attr_def.h @@ -125,6 +125,9 @@ ATTR(bpp) ATTR(fullscreen) ATTR(windowid) ATTR(hog) +ATTR(flags_town) +ATTR(flags_street) +ATTR(flags_house_number) ATTR2(0x00027500,type_rel_abs_begin) /* These attributes are int that can either hold relative * * or absolute values. A relative value is indicated by * diff --git a/navit/navit/gui/internal/gui_internal.c b/navit/navit/gui/internal/gui_internal.c index 3965931..7d2b85f 100644 --- a/navit/navit/gui/internal/gui_internal.c +++ b/navit/navit/gui/internal/gui_internal.c @@ -264,6 +264,7 @@ struct gui_priv { int cols; struct attr osd_configuration; int pitch; + int flags_town,flags_street,flags_house_number; /* html */ char *html_text; int html_depth; @@ -2341,6 +2342,7 @@ gui_internal_cmd_position_do(struct gui_priv *this, struct pcoord *pc_in, struct 3 Town 4 County 5 Street + 6 House number */ static void @@ -2355,19 +2357,34 @@ gui_internal_cmd_position(struct gui_priv *this, struct widget *wm, void *data) flags=8|16|32|64|256; break; case 2: - flags=4|8|16|32|64|256; + flags=4|8|16|32|64; break; case 3: - flags=1|8|16|32|64|256; + flags=1|8|16|32|64; + flags &= this->flags_town; + break; case 4: gui_internal_search_town_in_country(this, wm); return; case 5: - flags=2|8|16|32|64|256; + flags=2|8|16|32|64; + flags &= this->flags_street; + break; + case 6: + flags=8|16|32|64; + flags &= this->flags_house_number; break; default: return; } + switch (flags) { + case 2: + gui_internal_search_house_number_in_street(this, wm, NULL); + return; + case 8: + gui_internal_cmd_set_destination(this, wm, NULL); + return; + } gui_internal_cmd_position_do(this, &wm->c, NULL, wm, wm->name ? wm->name : wm->text, flags); } @@ -2668,6 +2685,8 @@ gui_internal_search_changed(struct gui_priv *this, struct widget *wm, void *data param=(void *)4; if (! strcmp(wm->name,"Street")) param=(void *)5; + if (! strcmp(wm->name,"House number")) + param=(void *)6; dbg(0,"%s now '%s'\n", wm->name, wm->text); gui_internal_search_idle_end(this); @@ -5371,6 +5390,18 @@ static struct gui_priv * gui_internal_new(struct navit *nav, struct gui_methods this->pitch=attr->u.num; else this->pitch=20; + if( (attr=attr_search(attrs,NULL,attr_flags_town))) + this->flags_town=attr->u.num; + else + this->flags_town=-1; + if( (attr=attr_search(attrs,NULL,attr_flags_street))) + this->flags_street=attr->u.num; + else + this->flags_street=-1; + if( (attr=attr_search(attrs,NULL,attr_flags_house_number))) + this->flags_house_number=attr->u.num; + else + this->flags_house_number=-1; this->data.priv=this; this->data.gui=&gui_internal_methods_ext; this->data.widget=&gui_internal_widget_methods;