1
0
Fork 0
forked from len0rd/rockbox

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
This commit is contained in:
Jens Arnold 2005-06-23 10:11:10 +00:00
parent 3263620c5c
commit da2b45f2e5
5 changed files with 69 additions and 48 deletions

View file

@ -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:

View file

@ -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_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
#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_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
#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

View file

@ -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)

View file

@ -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 */

View file

@ -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)