diff options
author | Michael Dankov <tryagain@navit-project.org> | 2016-07-11 17:27:23 +0300 |
---|---|---|
committer | Michael Dankov <tryagain@navit-project.org> | 2016-07-11 17:27:23 +0300 |
commit | a7338f9eb9c731ef5ae2c4341ed18b136623e2c2 (patch) | |
tree | 0b968ef77726bf0cf501ce60aae73087fc13fa4f | |
parent | b5912cb08754f3512c2d78c4cc12d45c326881f0 (diff) | |
download | navit-a7338f9eb9c731ef5ae2c4341ed18b136623e2c2.tar.gz |
Refactor:gui_internal:Remove keyboard=no dependent code
Now system keybard is shown instead of gui_internal one always, if
it's supported by graphics module.
-rw-r--r-- | navit/gui/internal/gui_internal.c | 6 | ||||
-rw-r--r-- | navit/gui/internal/gui_internal.h | 2 | ||||
-rw-r--r-- | navit/gui/internal/gui_internal_bookmark.c | 12 | ||||
-rw-r--r-- | navit/gui/internal/gui_internal_command.c | 8 | ||||
-rw-r--r-- | navit/gui/internal/gui_internal_html.c | 4 | ||||
-rw-r--r-- | navit/gui/internal/gui_internal_keyboard.c | 133 | ||||
-rw-r--r-- | navit/gui/internal/gui_internal_keyboard.h | 5 | ||||
-rw-r--r-- | navit/gui/internal/gui_internal_poi.c | 4 | ||||
-rw-r--r-- | navit/gui/internal/gui_internal_search.c | 7 |
9 files changed, 25 insertions, 156 deletions
diff --git a/navit/gui/internal/gui_internal.c b/navit/gui/internal/gui_internal.c index cf7db42a7..92135be6c 100644 --- a/navit/gui/internal/gui_internal.c +++ b/navit/gui/internal/gui_internal.c @@ -741,12 +741,6 @@ gui_internal_call_linked_on_finish(struct gui_priv *this, struct widget *wm, voi } } -struct widget * gui_internal_keyboard(struct gui_priv *this, int mode); - - -struct widget * gui_internal_keyboard_show_native(struct gui_priv *this, struct widget *w, int mode, char *lang); - - static void gui_internal_cmd_delete_bookmark(struct gui_priv *this, struct widget *wm, void *data) { diff --git a/navit/gui/internal/gui_internal.h b/navit/gui/internal/gui_internal.h index ea5ab79ae..a2d749c95 100644 --- a/navit/gui/internal/gui_internal.h +++ b/navit/gui/internal/gui_internal.h @@ -64,7 +64,7 @@ struct gui_internal_widget_methods { struct widget * (*box_new)(struct gui_priv *this, enum flags flags); struct widget * (*label_new)(struct gui_priv *this, const char *text); struct widget * (*image_new)(struct gui_priv *this, struct graphics_image *image); - struct widget * (*keyboard)(struct gui_priv *this, int mode); + struct widget * (*keyboard)(struct gui_priv *this, int mode, char *lang); struct widget * (*menu)(struct gui_priv *this, const char *label); enum flags (*get_flags)(struct widget *widget); void (*set_flags)(struct widget *widget, enum flags flags); diff --git a/navit/gui/internal/gui_internal_bookmark.c b/navit/gui/internal/gui_internal_bookmark.c index eed0de123..85fb1bbb5 100644 --- a/navit/gui/internal/gui_internal_bookmark.c +++ b/navit/gui/internal/gui_internal_bookmark.c @@ -103,9 +103,7 @@ gui_internal_cmd_add_bookmark2(struct gui_priv *this, struct widget *wm, void *d wl=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill); gui_internal_widget_append(w, wl); if (this->keyboard) - gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")))); - else - gui_internal_keyboard_show_native(this, w, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")), getenv("LANG")); + gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")), getenv("LANG"))); gui_internal_menu_render(this); } @@ -133,9 +131,7 @@ gui_internal_cmd_add_bookmark_folder2(struct gui_priv *this, struct widget *wm, wl=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill); gui_internal_widget_append(w, wl); if (this->keyboard) - gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")))); - else - gui_internal_keyboard_show_native(this, w, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")), getenv("LANG")); + gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")), getenv("LANG"))); gui_internal_menu_render(this); } @@ -164,9 +160,7 @@ gui_internal_cmd_rename_bookmark(struct gui_priv *this, struct widget *wm, void wl=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill); gui_internal_widget_append(w, wl); if (this->keyboard) - gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")))); - else - gui_internal_keyboard_show_native(this, w, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")), getenv("LANG")); + gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")), getenv("LANG"))); gui_internal_menu_render(this); } diff --git a/navit/gui/internal/gui_internal_command.c b/navit/gui/internal/gui_internal_command.c index 12de558fb..b2fa38300 100644 --- a/navit/gui/internal/gui_internal_command.c +++ b/navit/gui/internal/gui_internal_command.c @@ -293,9 +293,7 @@ gui_internal_cmd_enter_coord(struct gui_priv *this, char *function, struct attr gui_internal_widget_append(wr,row); if (this->keyboard) - gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_DEGREE)); - else - gui_internal_keyboard_show_native(this, w, VKBD_DEGREE, NULL); + gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_DEGREE, NULL)); gui_internal_menu_render(this); } @@ -861,9 +859,7 @@ gui_internal_cmd_log(struct gui_priv *this) wl=gui_internal_box_new(this, gravity_left_top|orientation_vertical|flags_expand|flags_fill); gui_internal_widget_append(w, wl); if (this->keyboard) - gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")))); - else - gui_internal_keyboard_show_native(this, w, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")), getenv("LANG")); + gui_internal_widget_append(w, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")),getenv("LANG"))); gui_internal_menu_render(this); gui_internal_leave(this); } diff --git a/navit/gui/internal/gui_internal_html.c b/navit/gui/internal/gui_internal_html.c index 9b42fbdec..6ee877ce5 100644 --- a/navit/gui/internal/gui_internal_html.c +++ b/navit/gui/internal/gui_internal_html.c @@ -494,9 +494,7 @@ gui_internal_html_menu(struct gui_priv *this, const char *document, char *anchor if (this->keyboard_required) { this->html_container->flags=gravity_center|orientation_vertical|flags_expand|flags_fill; if (this->keyboard) - gui_internal_widget_append(this->html_container, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")))); - else - gui_internal_keyboard_show_native(this, this->html_container, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")), getenv("LANG")); + gui_internal_widget_append(this->html_container, gui_internal_keyboard(this, VKBD_FLAG_2 | gui_internal_keyboard_init_mode(getenv("LANG")), getenv("LANG"))); } gui_internal_menu_render(this); graphics_draw_mode(this->gra, draw_mode_end); diff --git a/navit/gui/internal/gui_internal_keyboard.c b/navit/gui/internal/gui_internal_keyboard.c index 517b1863a..7946b545f 100644 --- a/navit/gui/internal/gui_internal_keyboard.c +++ b/navit/gui/internal/gui_internal_keyboard.c @@ -30,11 +30,11 @@ gui_internal_keyboard_to_upper_case(struct gui_priv *this) md=gui_internal_menu_data(this); if (md->keyboard_mode == (VKBD_LATIN_LOWER | VKBD_FLAG_2)) - gui_internal_keyboard_do(this, md->keyboard, VKBD_LATIN_UPPER | VKBD_FLAG_2); + gui_internal_keyboard_do(this, md->keyboard, VKBD_LATIN_UPPER | VKBD_FLAG_2, NULL); if (md->keyboard_mode == (VKBD_UMLAUT_LOWER | VKBD_FLAG_2)) - gui_internal_keyboard_do(this, md->keyboard, VKBD_UMLAUT_UPPER | VKBD_FLAG_2); + gui_internal_keyboard_do(this, md->keyboard, VKBD_UMLAUT_UPPER | VKBD_FLAG_2, NULL); if (md->keyboard_mode == (VKBD_CYRILLIC_LOWER | VKBD_FLAG_2)) - gui_internal_keyboard_do(this, md->keyboard, VKBD_CYRILLIC_UPPER | VKBD_FLAG_2); + gui_internal_keyboard_do(this, md->keyboard, VKBD_CYRILLIC_UPPER | VKBD_FLAG_2, NULL); } /** @@ -55,11 +55,11 @@ gui_internal_keyboard_to_lower_case(struct gui_priv *this) md=gui_internal_menu_data(this); if (md->keyboard_mode == (VKBD_LATIN_UPPER | VKBD_FLAG_2)) - gui_internal_keyboard_do(this, md->keyboard, VKBD_LATIN_LOWER | VKBD_FLAG_2); + gui_internal_keyboard_do(this, md->keyboard, VKBD_LATIN_LOWER | VKBD_FLAG_2, NULL); if (md->keyboard_mode == (VKBD_UMLAUT_UPPER | VKBD_FLAG_2)) - gui_internal_keyboard_do(this, md->keyboard, VKBD_UMLAUT_LOWER | VKBD_FLAG_2); + gui_internal_keyboard_do(this, md->keyboard, VKBD_UMLAUT_LOWER | VKBD_FLAG_2, NULL); if (md->keyboard_mode == (VKBD_CYRILLIC_UPPER | VKBD_FLAG_2)) - gui_internal_keyboard_do(this, md->keyboard, VKBD_CYRILLIC_LOWER | VKBD_FLAG_2); + gui_internal_keyboard_do(this, md->keyboard, VKBD_CYRILLIC_LOWER | VKBD_FLAG_2, NULL); } /** @@ -155,7 +155,7 @@ struct gui_internal_keyb_mode { * @return {@code wkbdb} if a non-NULL value was passed, else a new keyboard widget will be returned. */ struct widget * -gui_internal_keyboard_do(struct gui_priv *this, struct widget *wkbdb, int mode) +gui_internal_keyboard_do(struct gui_priv *this, struct widget *wkbdb, int mode, char *lang) { struct widget *wkbd,*wk; struct menu_data *md=gui_internal_menu_data(this); @@ -198,9 +198,8 @@ gui_internal_keyboard_do(struct gui_priv *this, struct widget *wkbdb, int mode) if(!this->kbd) this->kbd=g_new0(struct graphics_keyboard,1); this->kbd->mode = mode; - if(this->kbd->lang) - g_free(this->kbd->lang); - this->kbd->lang = g_strdup(getenv("LANG")); + g_free(this->kbd->lang); + this->kbd->lang = g_strdup(lang); res = graphics_show_native_keyboard(this->gra, this->kbd); if(res>0) mode|=VKBD_FLAG_MINIMIZED; @@ -414,17 +413,17 @@ gui_internal_keyboard_do(struct gui_priv *this, struct widget *wkbdb, int mode) * @return A new keyboard widget */ struct widget * -gui_internal_keyboard(struct gui_priv *this, int mode) +gui_internal_keyboard(struct gui_priv *this, int mode, char *lang) { if (! this->keyboard) return NULL; - return gui_internal_keyboard_do(this, NULL, mode); + return gui_internal_keyboard_do(this, NULL, mode, lang); } static void gui_internal_keyboard_change(struct gui_priv *this, struct widget *key, void *data) { - gui_internal_keyboard_do(this, key->data, key->datai); + gui_internal_keyboard_do(this, key->data, key->datai, NULL); } /** @@ -471,111 +470,3 @@ gui_internal_keyboard_init_mode(char *lang) return ret; } - -/** - * @brief Hides the platform's native on-screen keyboard or other input method - * - * This function is called as the {@code wfree} method of the placeholder widget for the platform's - * native on-screen keyboard. It is a wrapper around the corresponding method of the graphics plugin, - * which takes care of all platform-specific actions to hide the on-screen input method it previously - * displayed. - * - * A call to this function indicates that Navit no longer needs the input method and is about to destroy - * its placeholder widget. Navit will subsequently reclaim any screen real estate it may have previously - * reserved for the input method. - * - * This function will free the {@code struct graphics_keyboard} pointed to by {@code w->data} - * - * @param this The internal GUI instance - * @param w The placeholder widget - */ -void -gui_internal_keyboard_hide_native(struct gui_priv *this_, struct widget *w) -{ - struct graphics_keyboard *kbd = (struct graphics_keyboard *) w->data; - - if (kbd) { - graphics_hide_native_keyboard(this_->gra, kbd); - } else - dbg(lvl_warning, "no graphics_keyboard found, cleanup failed\n"); - g_free(w); -} - -static void -gui_internal_keyboard_destroy_native(struct gui_priv *this_, struct widget *w) -{ - struct graphics_keyboard *kbd = (struct graphics_keyboard *) w->data; - if(!kbd) - return; - gui_internal_keyboard_hide_native(this_, w); - g_free(kbd->lang); - g_free(kbd->gui_priv); -} - -/** - * @brief Shows the platform's native on-screen keyboard or other input method - * - * This method is a wrapper around the corresponding method of the graphics plugin, which takes care of - * all platform-specific details. In particular, it is up to the graphics plugin to determine how to - * handle the request: it may show its on-screen keyboard or another input method (such as stroke - * recognition). It may choose to simply ignore the request, which will typically occur when a hardware - * keyboard (or other hardware input) is available. - * - * The platform's native input method may obstruct parts of Navit's UI. To prevent parts of the UI from - * becoming unreachable, this method will insert an empty box widget in the appropriate size at the - * appropriate position, provided the graphics plugin reports the correct values. Otherwise a zero-size - * widget is inserted. If the graphics driver decides not to display an on-screen input method, no - * widget will be created and the return value will be {@code NULL}. - * - * The widget's {@code wfree} function, to be called when the widget is destroyed, will be used to hide - * the platform keyboard when it is no longer needed. - * - * @param this The internal GUI instance - * @param w The parent of the widget requiring text input - * @param mode The requested keyboard mode - * @param lang The language for text input, used to select a keyboard layout - * - * @return The placeholder widget for the on-screen keyboard, may be {@code NULL} - */ -struct widget * -gui_internal_keyboard_show_native(struct gui_priv *this, struct widget *w, int mode, char *lang) -{ - struct widget *ret = NULL; - struct menu_data *md = gui_internal_menu_data(this); - struct graphics_keyboard *kbd = g_new0(struct graphics_keyboard, 1); - int res; - - kbd->mode = mode; - kbd->lang = g_strdup(lang); - res = graphics_show_native_keyboard(this->gra, kbd); - - switch(res) { - case -1: - dbg(lvl_error, "graphics has no show_native_keyboard method, cannot display keyboard\n"); - /* no break */ - case 0: - g_free(kbd->lang); - g_free(kbd); - return NULL; - } - - ret = gui_internal_box_new(this, gravity_center|orientation_horizontal_vertical|flags_fill); - md->keyboard = ret; - md->keyboard_mode=mode; - ret->wfree = gui_internal_keyboard_hide_native; - if (kbd->h < 0) { - ret->h = w->h; - ret->hmin = w->hmin; - } else - ret->h = kbd->h; - if (kbd->w < 0) { - ret->w = w->w; - ret->wmin = w->wmin; - } else - ret->w = kbd->w; - dbg(lvl_error, "ret->w=%d, ret->h=%d\n", ret->w, ret->h); - ret->data = (void *) kbd; - gui_internal_widget_append(w, ret); - dbg(lvl_error, "return\n"); - return ret; -} diff --git a/navit/gui/internal/gui_internal_keyboard.h b/navit/gui/internal/gui_internal_keyboard.h index 39f007f77..e40d12319 100644 --- a/navit/gui/internal/gui_internal_keyboard.h +++ b/navit/gui/internal/gui_internal_keyboard.h @@ -22,9 +22,8 @@ enum vkbd_mode { /* prototypes */ struct gui_priv; struct widget; -struct widget *gui_internal_keyboard_do(struct gui_priv *this, struct widget *wkbdb, int mode); -struct widget *gui_internal_keyboard(struct gui_priv *this, int mode); -struct widget *gui_internal_keyboard_show_native(struct gui_priv *this, struct widget *w, int mode, char *lang); +struct widget *gui_internal_keyboard_do(struct gui_priv *this, struct widget *wkbdb, int mode, char *lang); +struct widget *gui_internal_keyboard(struct gui_priv *this, int mode, char *lang); int gui_internal_keyboard_init_mode(char *lang); void gui_internal_keyboard_to_upper_case(struct gui_priv *this); void gui_internal_keyboard_to_lower_case(struct gui_priv *this); diff --git a/navit/gui/internal/gui_internal_poi.c b/navit/gui/internal/gui_internal_poi.c index d4ffea8b3..4bf6995ee 100644 --- a/navit/gui/internal/gui_internal_poi.c +++ b/navit/gui/internal/gui_internal_poi.c @@ -532,9 +532,7 @@ gui_internal_cmd_pois_filter(struct gui_priv *this, struct widget *wm, void *dat wb->data=wk; if (this->keyboard) - gui_internal_widget_append(w, gui_internal_keyboard(this, keyboard_mode)); - else - gui_internal_keyboard_show_native(this, w, keyboard_mode, getenv("LANG")); + gui_internal_widget_append(w, gui_internal_keyboard(this, keyboard_mode,getenv("LANG"))); gui_internal_menu_render(this); diff --git a/navit/gui/internal/gui_internal_search.c b/navit/gui/internal/gui_internal_search.c index e5e137e07..c87aea3c5 100644 --- a/navit/gui/internal/gui_internal_search.c +++ b/navit/gui/internal/gui_internal_search.c @@ -510,8 +510,9 @@ gui_internal_search(struct gui_priv *this, const char *what, const char *type, i struct widget *wb,*wk,*w,*wr,*we,*wl,*wnext=NULL; char *country; int keyboard_mode; + char * lang=this->country_iso2 ? this->country_iso2 : getenv("LANG"); gui_internal_search_list_new(this); - keyboard_mode = VKBD_FLAG_2 | gui_internal_keyboard_init_mode(this->country_iso2 ? this->country_iso2 : getenv("LANG")); + keyboard_mode = VKBD_FLAG_2 | gui_internal_keyboard_init_mode(lang); wb=gui_internal_menu(this, what); w=gui_internal_box_new(this, gravity_center|orientation_vertical|flags_expand|flags_fill); gui_internal_widget_append(wb, w); @@ -568,9 +569,7 @@ gui_internal_search(struct gui_priv *this, const char *what, const char *type, i wk->func = gui_internal_search_changed; wk->name=g_strdup(type); if (this->keyboard) - gui_internal_widget_append(w, gui_internal_keyboard(this, keyboard_mode)); - else - gui_internal_keyboard_show_native(this, w, keyboard_mode, getenv("LANG")); + gui_internal_widget_append(w, gui_internal_keyboard(this, keyboard_mode, lang)); gui_internal_menu_render(this); } |