summaryrefslogtreecommitdiff
path: root/navit
diff options
context:
space:
mode:
authormdankov <mdankov@ffa7fe5e-494d-0410-b361-a75ebd5db220>2014-12-21 13:30:58 +0000
committermdankov <mdankov@ffa7fe5e-494d-0410-b361-a75ebd5db220>2014-12-21 13:30:58 +0000
commit4aed9724ea2711715c8223f08b7b0a4845ad041b (patch)
tree6a60ba20a6cea448a55422b2f629c76fe16eb2ae /navit
parentd065cdfe6ac448df5bf7108950a7e39168b18b22 (diff)
downloadnavit-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.java9
-rw-r--r--navit/graphics/android/graphics_android.c27
-rw-r--r--navit/xslt/android.xslt7
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(),
+ '&lt;a name=''Tools''>&lt;text>Tools&lt;/text>','&lt;a name=''Tools''>&lt;text>Tools&lt;/text>
+ &lt;img src=''gui_maps'' onclick=''navit.graphics.map_download_dialog();''>&lt;text>Map download&lt;/text>&lt;/img>
+ &lt;img src=''gui_rules'' onclick=''navit.graphics.backup_restore_dialog();''>&lt;text>Backup / Restore&lt;/text>&lt;/img>')"/>
+ </xsl:template>
+
<xsl:template match="/config/navit[1]">
<xsl:copy>
<xsl:copy-of select="@*"/>