summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
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 6966bc9..60cc4b7 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 579de66..9d682da 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 f686533..762ab9e 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 022226c..bc545e4 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 2af2c72..4f22ed9 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)