Fix:gui_internal:Switch to numeric keyboard for house numbers
[navit-package] / navit / gui / internal / gui_internal.c
index 0683f68..cb1733a 100644 (file)
@@ -1395,6 +1395,7 @@ gui_internal_top_bar(struct gui_priv *this)
        256:Use background for menu headline
        512:Set osd_configuration and zoom to route when setting position
        1024:Don't show back button
+       2048:No highlighting of keyboard
 */
 
        w=gui_internal_box_new(this, gravity_left_center|orientation_horizontal|(this->flags & 1 ? 0:flags_fill));
@@ -2371,18 +2372,18 @@ gui_internal_cmd_position(struct gui_priv *this, struct widget *wm, void *data)
                flags=4|8|16|32|64;
                break;
        case 3:
-               flags=1|8|16|32|64;
+               flags=1|8|16|32|64|128;
                flags &= this->flags_town;
                break;
        case 4:
                gui_internal_search_town_in_country(this, wm);
                return;
        case 5:
-               flags=2|8|16|32|64;
+               flags=2|8|16|32|64|128;
                flags &= this->flags_street;
                break;
        case 6:
-               flags=8|16|32|64;
+               flags=8|16|32|64|128;
                flags &= this->flags_house_number;
                break;
        default:
@@ -2616,7 +2617,7 @@ gui_internal_search_idle(struct gui_priv *this, char *wm_name, struct widget *se
                gui_internal_search_idle_end(this);
 
                struct menu_data *md=gui_internal_menu_data(this);
-               if (md && md->keyboard) {
+               if (md && md->keyboard && !(this->flags & 2048)) {
                        GList *lk=md->keyboard->children;
                        graphics_draw_mode(this->gra, draw_mode_begin);
                        while (lk) {
@@ -2652,18 +2653,25 @@ gui_internal_search_idle(struct gui_priv *this, char *wm_name, struct widget *se
                text=g_strdup_printf("%s", res->country->name);
        }
        if (! strcmp(wm_name,"Town")) {
+               char *postal=res->town->common.postal;
+               if (res->town->common.postal_mask)
+                       postal=res->town->common.postal_mask;
                name=res->town->name;
                item=&res->town->common.item;
                if (res->town->name && res->town->district)
-                       text=g_strdup_printf("%s%s%s (%s)", res->town->common.postal_mask ? res->town->common.postal_mask : "", res->town->common.postal_mask ? " ":"", res->town->name, res->town->district);
+                       text=g_strdup_printf("%s%s%s (%s)", postal ? postal : "", postal ? " ":"", res->town->name, res->town->district);
                else
-                       text=g_strdup_printf("%s%s%s", res->town->common.postal ? res->town->common.postal_mask : "", res->town->common.postal_mask ? " ":"", res->town->name);
+                       text=g_strdup_printf("%s%s%s", postal ? postal : "", postal ? " ":"", res->town->name);
        }
        if (! strcmp(wm_name,"Street")) {
                name=res->street->name;
                item=&res->street->common.item;
                text=g_strdup_printf("%s %s", res->town->name, res->street->name);
        }
+       if (! strcmp(wm_name,"House number")) {
+               name=res->house_number->house_number;
+               text=g_strdup_printf("%s", name);
+       }
        dbg(1,"res->country->flag=%s\n", res->country->flag);
                gui_internal_widget_append(search_list,
                                wc=gui_internal_button_new_with_callback(this, text,
@@ -2967,6 +2975,7 @@ gui_internal_search(struct gui_priv *this, char *what, char *type, int flags)
 {
        struct widget *wb,*wk,*w,*wr,*we,*wl,*wnext=NULL;
        char *country;
+       int keyboard_mode=2;
        gui_internal_search_list_new(this);
        wb=gui_internal_menu(this, what);
        w=gui_internal_box_new(this, gravity_center|orientation_vertical|flags_expand|flags_fill);
@@ -3009,6 +3018,7 @@ gui_internal_search(struct gui_priv *this, char *what, char *type, int flags)
                gui_internal_widget_append(we, wb=gui_internal_image_new(this, image_new_xs(this, "gui_select_street")));
                wb->state |= STATE_SENSITIVE;
                wb->func = gui_internal_back;
+               keyboard_mode=18;
        }
        gui_internal_widget_append(we, wk=gui_internal_label_new(this, NULL));
        if (wnext) {
@@ -3024,7 +3034,7 @@ gui_internal_search(struct gui_priv *this, char *what, char *type, int flags)
        wk->func = gui_internal_search_changed;
        wk->name=g_strdup(type);
        if (this->keyboard)
-               gui_internal_widget_append(w, gui_internal_keyboard(this,2));
+               gui_internal_widget_append(w, gui_internal_keyboard(this,keyboard_mode));
        gui_internal_menu_render(this);
 }