summaryrefslogtreecommitdiff
path: root/navit/graphics
diff options
context:
space:
mode:
authormvglasow <michael -at- vonglasow.com>2015-11-13 23:49:19 +0100
committermvglasow <michael -at- vonglasow.com>2016-02-24 09:41:26 +0100
commit6e8450f7ce39f4c713bcbd8368e1b25d32f98283 (patch)
tree64ebb6bb32eb5dde3edfccf96c3342e086a65cd9 /navit/graphics
parent2c77286a6c08af6f77866671af31d3f99719d22a (diff)
downloadnavit-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.c51
-rw-r--r--navit/graphics/gd/graphics_gd.c2
-rw-r--r--navit/graphics/gtk_drawing_area/graphics_gtk_drawing_area.c2
-rw-r--r--navit/graphics/null/graphics_null.c2
-rw-r--r--navit/graphics/opengl/graphics_opengl.c2
-rw-r--r--navit/graphics/qt_qpainter/graphics_qt_qpainter.cpp3
-rw-r--r--navit/graphics/sdl/graphics_sdl.c2
-rw-r--r--navit/graphics/win32/graphics_win32.c2
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 */
};