diff options
author | mvglasow <michael -at- vonglasow.com> | 2015-11-13 23:49:19 +0100 |
---|---|---|
committer | mvglasow <michael -at- vonglasow.com> | 2016-02-24 09:41:26 +0100 |
commit | 6e8450f7ce39f4c713bcbd8368e1b25d32f98283 (patch) | |
tree | 64ebb6bb32eb5dde3edfccf96c3342e086a65cd9 /navit/graphics | |
parent | 2c77286a6c08af6f77866671af31d3f99719d22a (diff) | |
download | navit-6e8450f7ce39f4c713bcbd8368e1b25d32f98283.tar.gz |
Add:gui_internal:Rudimentary native on-screen keyboard implementation
Signed-off-by: mvglasow <michael -at- vonglasow.com>
Diffstat (limited to 'navit/graphics')
-rw-r--r-- | navit/graphics/android/graphics_android.c | 51 | ||||
-rw-r--r-- | navit/graphics/gd/graphics_gd.c | 2 | ||||
-rw-r--r-- | navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c | 2 | ||||
-rw-r--r-- | navit/graphics/null/graphics_null.c | 2 | ||||
-rw-r--r-- | navit/graphics/opengl/graphics_opengl.c | 2 | ||||
-rw-r--r-- | navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp | 3 | ||||
-rw-r--r-- | navit/graphics/sdl/graphics_sdl.c | 2 | ||||
-rw-r--r-- | navit/graphics/win32/graphics_win32.c | 2 |
8 files changed, 64 insertions, 2 deletions
diff --git a/navit/graphics/android/graphics_android.c b/navit/graphics/android/graphics_android.c index 2bf9ed952..c88ee11fd 100644 --- a/navit/graphics/android/graphics_android.c +++ b/navit/graphics/android/graphics_android.c @@ -485,6 +485,12 @@ set_attr(struct graphics_priv *gra, struct attr *attr) } } + +int show_native_keyboard (struct graphics_keyboard *kbd); + +void hide_native_keyboard (struct graphics_keyboard *kbd); + + static struct graphics_methods graphics_methods = { graphics_destroy, draw_mode, @@ -507,6 +513,8 @@ static struct graphics_methods graphics_methods = { overlay_disable, overlay_resize, set_attr, + show_native_keyboard, + hide_native_keyboard, }; static void @@ -737,7 +745,7 @@ graphics_android_init(struct graphics_priv *ret, struct graphics_priv *parent, s } static jclass NavitClass; -static jmethodID Navit_disableSuspend, Navit_exit, Navit_fullscreen, Navit_runOptionsItem, Navit_showMenu; +static jmethodID Navit_disableSuspend, Navit_exit, Navit_fullscreen, Navit_runOptionsItem, Navit_showMenu, Navit_showNativeKeyboard, Navit_hideNativeKeyboard; static int graphics_android_fullscreen(struct window *win, int on) @@ -1128,6 +1136,8 @@ event_android_new(struct event_methods *meth) Navit_showMenu = (*jnienv)->GetMethodID(jnienv, NavitClass, "showMenu", "()V"); if (Navit_showMenu == NULL) return NULL; + Navit_showNativeKeyboard = (*jnienv)->GetMethodID(jnienv, NavitClass, "showNativeKeyboard", "()Z"); + Navit_hideNativeKeyboard = (*jnienv)->GetMethodID(jnienv, NavitClass, "hideNativeKeyboard", "()V"); dbg(lvl_debug,"ok\n"); *meth=event_android_methods; @@ -1135,6 +1145,45 @@ event_android_new(struct event_methods *meth) } +/** + * @brief Displays the native input method. + * + * This method decides whether a native on-screen input method, such as a virtual keyboard, needs to be + * displayed. A typical case in which there is no need for an on-screen input method is if a hardware + * keyboard is present. + * + * @param kbd A {@code struct graphics_keyboard} which describes the requirements for the input method + * and will be populated with the data of the input method before the function returns. + * + * @return True if the input method is displayed, false if not. + */ +int show_native_keyboard (struct graphics_keyboard *kbd) { + // TODO populate kbd with values + if (Navit_showNativeKeyboard == NULL) { + dbg(lvl_error, "method Navit.showNativeKeyboard() not found, cannot display keyboard\n"); + return 0; + } + return (*jnienv)->CallBooleanMethod(jnienv, android_activity, Navit_showNativeKeyboard); +} + + +/** + * @brief Hides the native input method and frees associated private data. + * + * @param kbd The {@code struct graphics_keyboard} which was passed to the earlier call to + * {@link show_native_keyboard(struct graphics_keyboard *)}. The {@code gra_priv} member of the struct + * will be freed by this function. + */ +void hide_native_keyboard (struct graphics_keyboard *kbd) { + if (Navit_hideNativeKeyboard == NULL) { + dbg(lvl_error, "method Navit.hideNativeKeyboard() not found, cannot dismiss keyboard\n"); + return; + } + (*jnienv)->CallVoidMethod(jnienv, android_activity, Navit_hideNativeKeyboard); + g_free(kbd->gra_priv); +} + + void plugin_init(void) { diff --git a/navit/graphics/gd/graphics_gd.c b/navit/graphics/gd/graphics_gd.c index 47868d622..908007a0e 100644 --- a/navit/graphics/gd/graphics_gd.c +++ b/navit/graphics/gd/graphics_gd.c @@ -813,6 +813,8 @@ static struct graphics_methods graphics_methods = { overlay_disable, overlay_resize, set_attr, + NULL, /* show_native_keyboard */ + NULL, /* hide_native_keyboard */ }; static struct graphics_priv * diff --git a/navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c b/navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c index 9c7bdd511..9d6dd998b 100644 --- a/navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c +++ b/navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c @@ -1073,6 +1073,8 @@ static struct graphics_methods graphics_methods = { overlay_disable, overlay_resize, set_attr, + NULL, /* show_native_keyboard */ + NULL, /* hide_native_keyboard */ }; static struct graphics_priv * diff --git a/navit/graphics/null/graphics_null.c b/navit/graphics/null/graphics_null.c index e3d617af2..ce4dc6de2 100644 --- a/navit/graphics/null/graphics_null.c +++ b/navit/graphics/null/graphics_null.c @@ -236,6 +236,8 @@ static struct graphics_methods graphics_methods = { get_text_bbox, overlay_disable, overlay_resize, + NULL, /* show_native_keyboard */ + NULL, /* hide_native_keyboard */ }; static struct graphics_priv * diff --git a/navit/graphics/opengl/graphics_opengl.c b/navit/graphics/opengl/graphics_opengl.c index c927299dc..da82cd107 100644 --- a/navit/graphics/opengl/graphics_opengl.c +++ b/navit/graphics/opengl/graphics_opengl.c @@ -1432,6 +1432,8 @@ static struct graphics_methods graphics_methods = { NULL, overlay_disable, overlay_resize, + NULL, /* show_native_keyboard */ + NULL, /* hide_native_keyboard */ }; static struct graphics_priv * diff --git a/navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp b/navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp index 714f0753e..3a7509b0d 100644 --- a/navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp +++ b/navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp @@ -696,7 +696,8 @@ static struct graphics_methods graphics_methods = { overlay_disable, NULL, set_attr, - + NULL, /* show_native_keyboard */ + NULL, /* hide_native_keyboard */ }; //############################################################################################################## diff --git a/navit/graphics/sdl/graphics_sdl.c b/navit/graphics/sdl/graphics_sdl.c index 886aacd3d..b0cc66776 100644 --- a/navit/graphics/sdl/graphics_sdl.c +++ b/navit/graphics/sdl/graphics_sdl.c @@ -907,6 +907,8 @@ static struct graphics_methods graphics_methods = { overlay_disable, NULL, /* overlay_resize */ NULL, /* set_attr */ + NULL, /* show_native_keyboard */ + NULL, /* hide_native_keyboard */ }; static struct graphics_priv * diff --git a/navit/graphics/win32/graphics_win32.c b/navit/graphics/win32/graphics_win32.c index 6ccf29564..609e61ce8 100644 --- a/navit/graphics/win32/graphics_win32.c +++ b/navit/graphics/win32/graphics_win32.c @@ -1582,6 +1582,8 @@ static struct graphics_methods graphics_methods = get_text_bbox, overlay_disable, overlay_resize, + NULL, /* show_native_keyboard */ + NULL, /* hide_native_keyboard */ }; |