summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2005-06-23 10:11:10 +0000
committerJens Arnold <amiconn@rockbox.org>2005-06-23 10:11:10 +0000
commitda2b45f2e5cfcdf730849fbd5261ef8f0761bdcb (patch)
treeae220e13ae2d7013815b4d06423d7fd90f13fdd1 /apps
parent3263620c5c296dd181e8a54d1bc51c5869b129ff (diff)
downloadrockbox-da2b45f2e5cfcdf730849fbd5261ef8f0761bdcb.tar.gz
rockbox-da2b45f2e5cfcdf730849fbd5261ef8f0761bdcb.zip
When exiting the context menu with the menu button, call the main menu. Mainly useful on Ondio which can't have both main menu and context menu bound in wps. Holding MODE on Ondio will now bring up the wps context menu instead of the main menu.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6840 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/menu.c4
-rw-r--r--apps/menu.h90
-rw-r--r--apps/onplay.c22
-rw-r--r--apps/wps.c2
-rw-r--r--apps/wps.h3
5 files changed, 71 insertions, 50 deletions
diff --git a/apps/menu.c b/apps/menu.c
index 6966bc990e..60cc4b7682 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -376,8 +376,8 @@ int menu_show(int m)
#ifdef MENU_EXIT2
case MENU_EXIT2:
#endif
-#ifdef MENU_EXIT3
- case MENU_EXIT3:
+#ifdef MENU_EXIT_MENU
+ case MENU_EXIT_MENU:
#endif
#ifdef MENU_RC_EXIT
case MENU_RC_EXIT:
diff --git a/apps/menu.h b/apps/menu.h
index 579de66aa0..9d682dad77 100644
--- a/apps/menu.h
+++ b/apps/menu.h
@@ -24,60 +24,60 @@
/* button definitions */
#if CONFIG_KEYPAD == IRIVER_H100_PAD
-#define MENU_NEXT BUTTON_DOWN
-#define MENU_PREV BUTTON_UP
-#define MENU_EXIT BUTTON_LEFT
-#define MENU_EXIT2 BUTTON_OFF
-#define MENU_EXIT3 BUTTON_MODE
-#define MENU_ENTER BUTTON_RIGHT
-#define MENU_ENTER2 BUTTON_SELECT
-
-#define MENU_RC_NEXT BUTTON_RC_FF
-#define MENU_RC_PREV BUTTON_RC_REW
-#define MENU_RC_EXIT BUTTON_RC_STOP
-#define MENU_RC_ENTER BUTTON_RC_ON
+#define MENU_NEXT BUTTON_DOWN
+#define MENU_PREV BUTTON_UP
+#define MENU_EXIT BUTTON_LEFT
+#define MENU_EXIT2 BUTTON_OFF
+#define MENU_EXIT_MENU BUTTON_MODE
+#define MENU_ENTER BUTTON_RIGHT
+#define MENU_ENTER2 BUTTON_SELECT
+
+#define MENU_RC_NEXT BUTTON_RC_FF
+#define MENU_RC_PREV BUTTON_RC_REW
+#define MENU_RC_EXIT BUTTON_RC_STOP
+#define MENU_RC_ENTER BUTTON_RC_ON
#elif CONFIG_KEYPAD == RECORDER_PAD
-#define MENU_NEXT BUTTON_DOWN
-#define MENU_PREV BUTTON_UP
-#define MENU_EXIT BUTTON_LEFT
-#define MENU_EXIT2 BUTTON_OFF
-#define MENU_EXIT3 BUTTON_F1
-#define MENU_ENTER BUTTON_RIGHT
-#define MENU_ENTER2 BUTTON_PLAY
-
-#define MENU_RC_NEXT BUTTON_RC_RIGHT
-#define MENU_RC_PREV BUTTON_RC_LEFT
-#define MENU_RC_EXIT BUTTON_RC_STOP
-#define MENU_RC_ENTER BUTTON_RC_PLAY
+#define MENU_NEXT BUTTON_DOWN
+#define MENU_PREV BUTTON_UP
+#define MENU_EXIT BUTTON_LEFT
+#define MENU_EXIT2 BUTTON_OFF
+#define MENU_EXIT_MENU BUTTON_F1
+#define MENU_ENTER BUTTON_RIGHT
+#define MENU_ENTER2 BUTTON_PLAY
+
+#define MENU_RC_NEXT BUTTON_RC_RIGHT
+#define MENU_RC_PREV BUTTON_RC_LEFT
+#define MENU_RC_EXIT BUTTON_RC_STOP
+#define MENU_RC_ENTER BUTTON_RC_PLAY
#elif CONFIG_KEYPAD == PLAYER_PAD
-#define MENU_NEXT BUTTON_RIGHT
-#define MENU_PREV BUTTON_LEFT
-#define MENU_EXIT BUTTON_STOP
-#define MENU_EXIT2 BUTTON_MENU
-#define MENU_ENTER BUTTON_PLAY
+#define MENU_NEXT BUTTON_RIGHT
+#define MENU_PREV BUTTON_LEFT
+#define MENU_EXIT BUTTON_STOP
+#define MENU_EXIT_MENU BUTTON_MENU
+#define MENU_ENTER BUTTON_PLAY
-#define MENU_RC_NEXT BUTTON_RC_RIGHT
-#define MENU_RC_PREV BUTTON_RC_LEFT
-#define MENU_RC_EXIT BUTTON_RC_STOP
-#define MENU_RC_ENTER BUTTON_RC_PLAY
+#define MENU_RC_NEXT BUTTON_RC_RIGHT
+#define MENU_RC_PREV BUTTON_RC_LEFT
+#define MENU_RC_EXIT BUTTON_RC_STOP
+#define MENU_RC_ENTER BUTTON_RC_PLAY
#elif CONFIG_KEYPAD == ONDIO_PAD
-#define MENU_NEXT BUTTON_DOWN
-#define MENU_PREV BUTTON_UP
-#define MENU_EXIT BUTTON_LEFT
-#define MENU_EXIT2 BUTTON_MENU
-#define MENU_ENTER BUTTON_RIGHT
+#define MENU_NEXT BUTTON_DOWN
+#define MENU_PREV BUTTON_UP
+#define MENU_EXIT BUTTON_LEFT
+#define MENU_EXIT_MENU BUTTON_MENU
+#define MENU_ENTER BUTTON_RIGHT
#elif CONFIG_KEYPAD == GMINI100_PAD
-#define MENU_NEXT BUTTON_DOWN
-#define MENU_PREV BUTTON_UP
-#define MENU_EXIT BUTTON_LEFT
-#define MENU_EXIT2 BUTTON_OFF
-#define MENU_EXIT3 BUTTON_MENU
-#define MENU_ENTER BUTTON_RIGHT
-#define MENU_ENTER2 BUTTON_PLAY
+#define MENU_NEXT BUTTON_DOWN
+#define MENU_PREV BUTTON_UP
+#define MENU_EXIT BUTTON_LEFT
+#define MENU_EXIT2 BUTTON_OFF
+#define MENU_EXIT_MENU BUTTON_MENU
+#define MENU_ENTER BUTTON_RIGHT
+#define MENU_ENTER2 BUTTON_PLAY
#endif
diff --git a/apps/onplay.c b/apps/onplay.c
index f686533324..762ab9e58b 100644
--- a/apps/onplay.c
+++ b/apps/onplay.c
@@ -51,6 +51,7 @@
#ifdef HAVE_LCD_BITMAP
#include "icons.h"
#endif
+#include "main_menu.h"
#define DEFAULT_PLAYLIST_NAME "/dynamic.m3u"
@@ -488,6 +489,19 @@ bool create_dir(void)
return true;
}
+static bool exit_to_main;
+
+/* catch MENU_EXIT_MENU within context menu to call the main menu afterwards */
+static int onplay_callback(int key, int menu)
+{
+ (void)menu;
+
+ if (key == MENU_EXIT_MENU)
+ exit_to_main = true;
+
+ return key;
+}
+
int onplay(char* file, int attr, int from)
{
struct menu_item items[8]; /* increase this if you add entries! */
@@ -495,6 +509,7 @@ int onplay(char* file, int attr, int from)
onplay_result = ONPLAY_OK;
context=from;
+ exit_to_main = false;
selected_file = file;
selected_file_attr = attr;
@@ -523,7 +538,7 @@ int onplay(char* file, int attr, int from)
i++;
}
-#ifdef HAVE_MULTIVOLUME
+#ifdef HAVE_MULTIVOLUME
if (!(attr & ATTR_VOLUME)) /* no rename+delete for volumes */
#endif
{
@@ -570,11 +585,14 @@ int onplay(char* file, int attr, int from)
button_clear_queue();
if (i)
{
- m = menu_init( items, i, NULL, NULL, NULL, NULL );
+ m = menu_init( items, i, onplay_callback, NULL, NULL, NULL );
result = menu_show(m);
if (result >= 0)
items[result].function();
menu_exit(m);
+
+ if (exit_to_main)
+ result = main_menu();
#ifdef HAVE_LCD_BITMAP
if (global_settings.statusbar)
diff --git a/apps/wps.c b/apps/wps.c
index 022226c43d..bc545e4f52 100644
--- a/apps/wps.c
+++ b/apps/wps.c
@@ -616,6 +616,7 @@ long wps_show(void)
break;
/* menu key functions */
+#ifdef WPS_MENU
#ifdef WPS_RC_MENU
case WPS_RC_MENU:
#endif
@@ -640,6 +641,7 @@ long wps_show(void)
#endif
restore = true;
break;
+#endif /* WPS_MENU */
#ifdef WPS_KEYLOCK
/* key lock */
diff --git a/apps/wps.h b/apps/wps.h
index 2af2c72ef3..4f22ed9e45 100644
--- a/apps/wps.h
+++ b/apps/wps.h
@@ -115,11 +115,12 @@
#define WPS_INCVOL BUTTON_UP
#define WPS_DECVOL BUTTON_DOWN
#define WPS_PAUSE BUTTON_OFF
-#define WPS_MENU (BUTTON_MENU | BUTTON_REPEAT)
+/* #define WPS_MENU Ondio can't have both main menu and context menu in wps */
#define WPS_BROWSE (BUTTON_MENU | BUTTON_REL)
#define WPS_BROWSE_PRE BUTTON_MENU
#define WPS_KEYLOCK (BUTTON_MENU | BUTTON_DOWN)
#define WPS_EXIT (BUTTON_OFF | BUTTON_REPEAT)
+#define WPS_CONTEXT (BUTTON_MENU | BUTTON_REPEAT)
#elif CONFIG_KEYPAD == GMINI100_PAD
#define WPS_NEXT (BUTTON_RIGHT | BUTTON_REL)