summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Dankov <tryagain@navit-project.org>2016-07-11 20:41:42 +0300
committerMichael Dankov <tryagain@navit-project.org>2016-07-11 20:41:42 +0300
commitb762570c1e09cea15b7a4ba1cdf1db4523e13017 (patch)
tree74c04d807002841e144c9c6336c5e86c3f14deaf
parenta7338f9eb9c731ef5ae2c4341ed18b136623e2c2 (diff)
downloadnavit-b762570c1e09cea15b7a4ba1cdf1db4523e13017.tar.gz
refactor:core:Software keyboard infrastructure tuning
- Use enum for keyboard modes, 0 - no kbd, 1 - gui internal keyboard, 2 - try system keyboard, use internal if system is unavailable - Pass graphics object pointer to keyboard graphic module primitives to conform practice for similar methods.
-rw-r--r--navit/attr_def.h5
-rw-r--r--navit/graphics.c4
-rw-r--r--navit/graphics.h4
-rw-r--r--navit/graphics/android/graphics_android.c9
-rw-r--r--navit/gui.h8
-rw-r--r--navit/gui/internal/gui_internal_keyboard.c3
6 files changed, 23 insertions, 10 deletions
diff --git a/navit/attr_def.h b/navit/attr_def.h
index b3f77163b..df9ad7243 100644
--- a/navit/attr_def.h
+++ b/navit/attr_def.h
@@ -98,7 +98,10 @@ ATTR(checksum_ignore)
ATTR(position_fix_type)
ATTR(timeout)
ATTR(orientation)
-ATTR(keyboard)
+ATTR(keyboard) /* 0 - gui won't show any keyboard,
+ * 1 - gui will draw own keyboard representation,
+ * 2 - gui will ask graphics module to show sw keyboard, falling back to own keyboard representation.
+ */
ATTR(position_sats_signal)
ATTR(cps)
ATTR_UNUSED
diff --git a/navit/graphics.c b/navit/graphics.c
index 5c6f9e5b3..04e071677 100644
--- a/navit/graphics.c
+++ b/navit/graphics.c
@@ -1116,7 +1116,7 @@ int graphics_show_native_keyboard (struct graphics *this_, struct graphics_keybo
if (!this_->meth.show_native_keyboard)
ret = -1;
else
- ret = this_->meth.show_native_keyboard(kbd);
+ ret = this_->meth.show_native_keyboard(this_->priv, kbd);
dbg(lvl_debug, "return %d\n", ret);
return ret;
}
@@ -1151,7 +1151,7 @@ int graphics_show_native_keyboard (struct graphics *this_, struct graphics_keybo
int graphics_hide_native_keyboard (struct graphics *this_, struct graphics_keyboard *kbd) {
if (!this_->meth.hide_native_keyboard)
return 0;
- this_->meth.hide_native_keyboard(kbd);
+ this_->meth.hide_native_keyboard(this_->priv, kbd);
return 1;
}
diff --git a/navit/graphics.h b/navit/graphics.h
index 2ffbd9ab0..bdac6d0d3 100644
--- a/navit/graphics.h
+++ b/navit/graphics.h
@@ -149,8 +149,8 @@ struct graphics_methods {
void (*overlay_disable)(struct graphics_priv *gr, int disable);
void (*overlay_resize)(struct graphics_priv *gr, struct point *p, int w, int h, int wraparound);
int (*set_attr)(struct graphics_priv *gr, struct attr *attr);
- int (*show_native_keyboard)(struct graphics_keyboard *kbd);
- void (*hide_native_keyboard)(struct graphics_keyboard *kbd);
+ int (*show_native_keyboard)(struct graphics_priv *gr, struct graphics_keyboard *kbd);
+ void (*hide_native_keyboard)(struct graphics_priv *gr, struct graphics_keyboard *kbd);
};
diff --git a/navit/graphics/android/graphics_android.c b/navit/graphics/android/graphics_android.c
index 41f441c96..a25b3597e 100644
--- a/navit/graphics/android/graphics_android.c
+++ b/navit/graphics/android/graphics_android.c
@@ -486,9 +486,9 @@ set_attr(struct graphics_priv *gra, struct attr *attr)
}
-int show_native_keyboard (struct graphics_keyboard *kbd);
+int show_native_keyboard (struct graphics_priv *gra, struct graphics_keyboard *kbd);
-void hide_native_keyboard (struct graphics_keyboard *kbd);
+void hide_native_keyboard (struct graphics_priv *gra, struct graphics_keyboard *kbd);
static struct graphics_methods graphics_methods = {
@@ -1163,7 +1163,7 @@ event_android_new(struct event_methods *meth)
*
* @return True if the input method is going to be displayed, false if not.
*/
-int show_native_keyboard (struct graphics_keyboard *kbd) {
+int show_native_keyboard (struct graphics_priv *gra, struct graphics_keyboard *kbd) {
kbd->w = -1;
if (Navit_showNativeKeyboard == NULL) {
dbg(lvl_error, "method Navit.showNativeKeyboard() not found, cannot display keyboard\n");
@@ -1184,13 +1184,14 @@ int show_native_keyboard (struct graphics_keyboard *kbd) {
* {@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) {
+void hide_native_keyboard (struct graphics_priv *gra, 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);
+ kbd->gra_priv=NULL;
}
diff --git a/navit/gui.h b/navit/gui.h
index 5bb936938..38307901e 100644
--- a/navit/gui.h
+++ b/navit/gui.h
@@ -45,6 +45,14 @@ struct gui_methods {
int (*set_attr)(struct gui_priv *priv, struct attr *attr);
};
+/*
+ * Values for attr_keyboard when set on gui object
+ */
+enum gui_keyboard_types {
+ gui_keyboard_no=0,
+ gui_keyboard_own=1,
+ gui_keyboard_system_or_own=2
+};
/* prototypes */
enum attr_type;
diff --git a/navit/gui/internal/gui_internal_keyboard.c b/navit/gui/internal/gui_internal_keyboard.c
index 7946b545f..e40664e2b 100644
--- a/navit/gui/internal/gui_internal_keyboard.c
+++ b/navit/gui/internal/gui_internal_keyboard.c
@@ -6,6 +6,7 @@
#include "callback.h"
#include "graphics.h"
#include "debug.h"
+#include "gui.h"
#include "gui_internal.h"
#include "gui_internal_widget.h"
#include "gui_internal_priv.h"
@@ -193,7 +194,7 @@ gui_internal_keyboard_do(struct gui_priv *this, struct widget *wkbdb, int mode,
wkbd->cols=9;
}
- if (!(mode & VKBD_FLAG_MINIMIZED)) {
+ if ((this->keyboard==gui_keyboard_system_or_own) && !(mode & VKBD_FLAG_MINIMIZED) ) {
int res;
if(!this->kbd)
this->kbd=g_new0(struct graphics_keyboard,1);