diff options
author | mdankov <mdankov@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2014-12-21 13:30:58 +0000 |
---|---|---|
committer | mdankov <mdankov@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2014-12-21 13:30:58 +0000 |
commit | 4aed9724ea2711715c8223f08b7b0a4845ad041b (patch) | |
tree | 6a60ba20a6cea448a55422b2f629c76fe16eb2ae /navit | |
parent | d065cdfe6ac448df5bf7108950a7e39168b18b22 (diff) | |
download | navit-svn-4aed9724ea2711715c8223f08b7b0a4845ad041b.tar.gz |
Add:port_android:Allow Android map download and backup/restore dialogs to be called from internal gui, for devices which have no hardware menu button.
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@5979 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit')
-rw-r--r-- | navit/android/src/org/navitproject/navit/Navit.java | 9 | ||||
-rw-r--r-- | navit/graphics/android/graphics_android.c | 27 | ||||
-rw-r--r-- | navit/xslt/android.xslt | 7 |
3 files changed, 40 insertions, 3 deletions
diff --git a/navit/android/src/org/navitproject/navit/Navit.java b/navit/android/src/org/navitproject/navit/Navit.java index 3e5d58d7..5cafb988 100644 --- a/navit/android/src/org/navitproject/navit/Navit.java +++ b/navit/android/src/org/navitproject/navit/Navit.java @@ -508,8 +508,14 @@ public class Navit extends Activity @Override
public boolean onOptionsItemSelected(MenuItem item)
{
+ runOptionsItem(item.getItemId());
+ return true;
+ }
+
+ public void runOptionsItem(int id)
+ {
// Handle item selection
- switch (item.getItemId())
+ switch (id)
{
case 1 :
// zoom in
@@ -559,7 +565,6 @@ public class Navit extends Activity this.exit();
break;
}
- return true;
}
void setDestination(float latitude, float longitude, String address) {
diff --git a/navit/graphics/android/graphics_android.c b/navit/graphics/android/graphics_android.c index aeceecf7..82908215 100644 --- a/navit/graphics/android/graphics_android.c +++ b/navit/graphics/android/graphics_android.c @@ -30,6 +30,7 @@ #include "debug.h" #include "callback.h" #include "android.h" +#include "command.h" int dummy; @@ -654,7 +655,7 @@ graphics_android_init(struct graphics_priv *ret, struct graphics_priv *parent, s } static jclass NavitClass; -static jmethodID Navit_disableSuspend, Navit_exit, Navit_fullscreen; +static jmethodID Navit_disableSuspend, Navit_exit, Navit_fullscreen, Navit_runOptionsItem; static int graphics_android_fullscreen(struct window *win, int on) @@ -670,6 +671,23 @@ graphics_android_disable_suspend(struct window *win) (*jnienv)->CallVoidMethod(jnienv, android_activity, Navit_disableSuspend); } +static void +graphics_android_cmd_runMenuItem(struct graphics_priv *this, char *function, struct attr **in, struct attr ***out, int *valid) +{ + int ncmd=0; + dbg(0,"Running %s\n",function); + if(!strcmp(function,"map_download_dialog")) { + ncmd=3; + } else if(!strcmp(function,"backup_restore_dialog")) { + ncmd=7; + } + (*jnienv)->CallVoidMethod(jnienv, android_activity, Navit_runOptionsItem, ncmd); +} + +static struct command_table commands[] = { + {"map_download_dialog",command_cast(graphics_android_cmd_runMenuItem)}, + {"backup_restore_dialog",command_cast(graphics_android_cmd_runMenuItem)}, +}; static struct graphics_priv * graphics_android_new(struct navit *nav, struct graphics_methods *meth, struct attr **attrs, struct callback_list *cbl) @@ -689,6 +707,9 @@ graphics_android_new(struct navit *nav, struct graphics_methods *meth, struct at if ((attr=attr_search(attrs, NULL, attr_use_camera))) { use_camera=attr->u.num; } + if ((attr=attr_search(attrs, NULL, attr_callback_list))) { + command_add_table(attr->u.callback_list, commands, sizeof(commands)/sizeof(struct command_table), ret); + } image_cache_hash = g_hash_table_new(g_str_hash, g_str_equal); if (graphics_android_init(ret, NULL, NULL, 0, 0, 0, 0, use_camera)) { dbg(lvl_debug,"returning %p\n",ret); @@ -913,6 +934,10 @@ event_android_new(struct event_methods *meth) Navit_fullscreen = (*jnienv)->GetMethodID(jnienv, NavitClass, "fullscreen", "(I)V"); if (Navit_fullscreen == NULL) return NULL; + Navit_runOptionsItem = (*jnienv)->GetMethodID(jnienv, NavitClass, "runOptionsItem", "(I)V"); + if (Navit_runOptionsItem == NULL) + return NULL; + dbg(lvl_debug,"ok\n"); *meth=event_android_methods; return NULL; diff --git a/navit/xslt/android.xslt b/navit/xslt/android.xslt index fb0bbc5b..482a832b 100644 --- a/navit/xslt/android.xslt +++ b/navit/xslt/android.xslt @@ -35,6 +35,13 @@ <xsl:apply-templates/> </xsl:copy> </xsl:template> + <xsl:template match="/config/navit/gui[2]/text()"> + <xsl:value-of select="replace(/config/navit/gui[2]/text(), + '<a name=''Tools''><text>Tools</text>','<a name=''Tools''><text>Tools</text> + <img src=''gui_maps'' onclick=''navit.graphics.map_download_dialog();''><text>Map download</text></img> + <img src=''gui_rules'' onclick=''navit.graphics.backup_restore_dialog();''><text>Backup / Restore</text></img>')"/> + </xsl:template> + <xsl:template match="/config/navit[1]"> <xsl:copy> <xsl:copy-of select="@*"/> |