diff options
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/menu.c | 4 | ||||
| -rw-r--r-- | apps/menu.h | 90 | ||||
| -rw-r--r-- | apps/onplay.c | 22 | ||||
| -rw-r--r-- | apps/wps.c | 2 | ||||
| -rw-r--r-- | apps/wps.h | 3 |
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) @@ -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 */ @@ -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) |