summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Dankov <tryagain@navit-project.org>2016-07-11 17:27:23 +0300
committerMichael Dankov <tryagain@navit-project.org>2016-07-11 17:27:23 +0300
commita7338f9eb9c731ef5ae2c4341ed18b136623e2c2 (patch)
tree0b968ef77726bf0cf501ce60aae73087fc13fa4f
parentb5912cb08754f3512c2d78c4cc12d45c326881f0 (diff)
downloadnavit-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.c6
-rw-r--r--navit/gui/internal/gui_internal.h2
-rw-r--r--navit/gui/internal/gui_internal_bookmark.c12
-rw-r--r--navit/gui/internal/gui_internal_command.c8
-rw-r--r--navit/gui/internal/gui_internal_html.c4
-rw-r--r--navit/gui/internal/gui_internal_keyboard.c133
-rw-r--r--navit/gui/internal/gui_internal_keyboard.h5
-rw-r--r--navit/gui/internal/gui_internal_poi.c4
-rw-r--r--navit/gui/internal/gui_internal_search.c7
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);
}