summaryrefslogtreecommitdiff
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)
376#ifdef MENU_EXIT2 376#ifdef MENU_EXIT2
377 case MENU_EXIT2: 377 case MENU_EXIT2:
378#endif 378#endif
379#ifdef MENU_EXIT3 379#ifdef MENU_EXIT_MENU
380 case MENU_EXIT3: 380 case MENU_EXIT_MENU:
381#endif 381#endif
382#ifdef MENU_RC_EXIT 382#ifdef MENU_RC_EXIT
383 case MENU_RC_EXIT: 383 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 @@
24 24
25/* button definitions */ 25/* button definitions */
26#if CONFIG_KEYPAD == IRIVER_H100_PAD 26#if CONFIG_KEYPAD == IRIVER_H100_PAD
27#define MENU_NEXT BUTTON_DOWN 27#define MENU_NEXT BUTTON_DOWN
28#define MENU_PREV BUTTON_UP 28#define MENU_PREV BUTTON_UP
29#define MENU_EXIT BUTTON_LEFT 29#define MENU_EXIT BUTTON_LEFT
30#define MENU_EXIT2 BUTTON_OFF 30#define MENU_EXIT2 BUTTON_OFF
31#define MENU_EXIT3 BUTTON_MODE 31#define MENU_EXIT_MENU BUTTON_MODE
32#define MENU_ENTER BUTTON_RIGHT 32#define MENU_ENTER BUTTON_RIGHT
33#define MENU_ENTER2 BUTTON_SELECT 33#define MENU_ENTER2 BUTTON_SELECT
34 34
35#define MENU_RC_NEXT BUTTON_RC_FF 35#define MENU_RC_NEXT BUTTON_RC_FF
36#define MENU_RC_PREV BUTTON_RC_REW 36#define MENU_RC_PREV BUTTON_RC_REW
37#define MENU_RC_EXIT BUTTON_RC_STOP 37#define MENU_RC_EXIT BUTTON_RC_STOP
38#define MENU_RC_ENTER BUTTON_RC_ON 38#define MENU_RC_ENTER BUTTON_RC_ON
39 39
40#elif CONFIG_KEYPAD == RECORDER_PAD 40#elif CONFIG_KEYPAD == RECORDER_PAD
41#define MENU_NEXT BUTTON_DOWN 41#define MENU_NEXT BUTTON_DOWN
42#define MENU_PREV BUTTON_UP 42#define MENU_PREV BUTTON_UP
43#define MENU_EXIT BUTTON_LEFT 43#define MENU_EXIT BUTTON_LEFT
44#define MENU_EXIT2 BUTTON_OFF 44#define MENU_EXIT2 BUTTON_OFF
45#define MENU_EXIT3 BUTTON_F1 45#define MENU_EXIT_MENU BUTTON_F1
46#define MENU_ENTER BUTTON_RIGHT 46#define MENU_ENTER BUTTON_RIGHT
47#define MENU_ENTER2 BUTTON_PLAY 47#define MENU_ENTER2 BUTTON_PLAY
48 48
49#define MENU_RC_NEXT BUTTON_RC_RIGHT 49#define MENU_RC_NEXT BUTTON_RC_RIGHT
50#define MENU_RC_PREV BUTTON_RC_LEFT 50#define MENU_RC_PREV BUTTON_RC_LEFT
51#define MENU_RC_EXIT BUTTON_RC_STOP 51#define MENU_RC_EXIT BUTTON_RC_STOP
52#define MENU_RC_ENTER BUTTON_RC_PLAY 52#define MENU_RC_ENTER BUTTON_RC_PLAY
53 53
54#elif CONFIG_KEYPAD == PLAYER_PAD 54#elif CONFIG_KEYPAD == PLAYER_PAD
55#define MENU_NEXT BUTTON_RIGHT 55#define MENU_NEXT BUTTON_RIGHT
56#define MENU_PREV BUTTON_LEFT 56#define MENU_PREV BUTTON_LEFT
57#define MENU_EXIT BUTTON_STOP 57#define MENU_EXIT BUTTON_STOP
58#define MENU_EXIT2 BUTTON_MENU 58#define MENU_EXIT_MENU BUTTON_MENU
59#define MENU_ENTER BUTTON_PLAY 59#define MENU_ENTER BUTTON_PLAY
60 60
61#define MENU_RC_NEXT BUTTON_RC_RIGHT 61#define MENU_RC_NEXT BUTTON_RC_RIGHT
62#define MENU_RC_PREV BUTTON_RC_LEFT 62#define MENU_RC_PREV BUTTON_RC_LEFT
63#define MENU_RC_EXIT BUTTON_RC_STOP 63#define MENU_RC_EXIT BUTTON_RC_STOP
64#define MENU_RC_ENTER BUTTON_RC_PLAY 64#define MENU_RC_ENTER BUTTON_RC_PLAY
65 65
66#elif CONFIG_KEYPAD == ONDIO_PAD 66#elif CONFIG_KEYPAD == ONDIO_PAD
67#define MENU_NEXT BUTTON_DOWN 67#define MENU_NEXT BUTTON_DOWN
68#define MENU_PREV BUTTON_UP 68#define MENU_PREV BUTTON_UP
69#define MENU_EXIT BUTTON_LEFT 69#define MENU_EXIT BUTTON_LEFT
70#define MENU_EXIT2 BUTTON_MENU 70#define MENU_EXIT_MENU BUTTON_MENU
71#define MENU_ENTER BUTTON_RIGHT 71#define MENU_ENTER BUTTON_RIGHT
72 72
73#elif CONFIG_KEYPAD == GMINI100_PAD 73#elif CONFIG_KEYPAD == GMINI100_PAD
74#define MENU_NEXT BUTTON_DOWN 74#define MENU_NEXT BUTTON_DOWN
75#define MENU_PREV BUTTON_UP 75#define MENU_PREV BUTTON_UP
76#define MENU_EXIT BUTTON_LEFT 76#define MENU_EXIT BUTTON_LEFT
77#define MENU_EXIT2 BUTTON_OFF 77#define MENU_EXIT2 BUTTON_OFF
78#define MENU_EXIT3 BUTTON_MENU 78#define MENU_EXIT_MENU BUTTON_MENU
79#define MENU_ENTER BUTTON_RIGHT 79#define MENU_ENTER BUTTON_RIGHT
80#define MENU_ENTER2 BUTTON_PLAY 80#define MENU_ENTER2 BUTTON_PLAY
81 81
82#endif 82#endif
83 83
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 @@
51#ifdef HAVE_LCD_BITMAP 51#ifdef HAVE_LCD_BITMAP
52#include "icons.h" 52#include "icons.h"
53#endif 53#endif
54#include "main_menu.h"
54 55
55#define DEFAULT_PLAYLIST_NAME "/dynamic.m3u" 56#define DEFAULT_PLAYLIST_NAME "/dynamic.m3u"
56 57
@@ -488,6 +489,19 @@ bool create_dir(void)
488 return true; 489 return true;
489} 490}
490 491
492static bool exit_to_main;
493
494/* catch MENU_EXIT_MENU within context menu to call the main menu afterwards */
495static int onplay_callback(int key, int menu)
496{
497 (void)menu;
498
499 if (key == MENU_EXIT_MENU)
500 exit_to_main = true;
501
502 return key;
503}
504
491int onplay(char* file, int attr, int from) 505int onplay(char* file, int attr, int from)
492{ 506{
493 struct menu_item items[8]; /* increase this if you add entries! */ 507 struct menu_item items[8]; /* increase this if you add entries! */
@@ -495,6 +509,7 @@ int onplay(char* file, int attr, int from)
495 509
496 onplay_result = ONPLAY_OK; 510 onplay_result = ONPLAY_OK;
497 context=from; 511 context=from;
512 exit_to_main = false;
498 selected_file = file; 513 selected_file = file;
499 selected_file_attr = attr; 514 selected_file_attr = attr;
500 515
@@ -523,7 +538,7 @@ int onplay(char* file, int attr, int from)
523 i++; 538 i++;
524 } 539 }
525 540
526#ifdef HAVE_MULTIVOLUME 541#ifdef HAVE_MULTIVOLUME
527 if (!(attr & ATTR_VOLUME)) /* no rename+delete for volumes */ 542 if (!(attr & ATTR_VOLUME)) /* no rename+delete for volumes */
528#endif 543#endif
529 { 544 {
@@ -570,11 +585,14 @@ int onplay(char* file, int attr, int from)
570 button_clear_queue(); 585 button_clear_queue();
571 if (i) 586 if (i)
572 { 587 {
573 m = menu_init( items, i, NULL, NULL, NULL, NULL ); 588 m = menu_init( items, i, onplay_callback, NULL, NULL, NULL );
574 result = menu_show(m); 589 result = menu_show(m);
575 if (result >= 0) 590 if (result >= 0)
576 items[result].function(); 591 items[result].function();
577 menu_exit(m); 592 menu_exit(m);
593
594 if (exit_to_main)
595 result = main_menu();
578 596
579#ifdef HAVE_LCD_BITMAP 597#ifdef HAVE_LCD_BITMAP
580 if (global_settings.statusbar) 598 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)
616 break; 616 break;
617 617
618 /* menu key functions */ 618 /* menu key functions */
619#ifdef WPS_MENU
619#ifdef WPS_RC_MENU 620#ifdef WPS_RC_MENU
620 case WPS_RC_MENU: 621 case WPS_RC_MENU:
621#endif 622#endif
@@ -640,6 +641,7 @@ long wps_show(void)
640#endif 641#endif
641 restore = true; 642 restore = true;
642 break; 643 break;
644#endif /* WPS_MENU */
643 645
644#ifdef WPS_KEYLOCK 646#ifdef WPS_KEYLOCK
645 /* key lock */ 647 /* 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 @@
115#define WPS_INCVOL BUTTON_UP 115#define WPS_INCVOL BUTTON_UP
116#define WPS_DECVOL BUTTON_DOWN 116#define WPS_DECVOL BUTTON_DOWN
117#define WPS_PAUSE BUTTON_OFF 117#define WPS_PAUSE BUTTON_OFF
118#define WPS_MENU (BUTTON_MENU | BUTTON_REPEAT) 118/* #define WPS_MENU Ondio can't have both main menu and context menu in wps */
119#define WPS_BROWSE (BUTTON_MENU | BUTTON_REL) 119#define WPS_BROWSE (BUTTON_MENU | BUTTON_REL)
120#define WPS_BROWSE_PRE BUTTON_MENU 120#define WPS_BROWSE_PRE BUTTON_MENU
121#define WPS_KEYLOCK (BUTTON_MENU | BUTTON_DOWN) 121#define WPS_KEYLOCK (BUTTON_MENU | BUTTON_DOWN)
122#define WPS_EXIT (BUTTON_OFF | BUTTON_REPEAT) 122#define WPS_EXIT (BUTTON_OFF | BUTTON_REPEAT)
123#define WPS_CONTEXT (BUTTON_MENU | BUTTON_REPEAT)
123 124
124#elif CONFIG_KEYPAD == GMINI100_PAD 125#elif CONFIG_KEYPAD == GMINI100_PAD
125#define WPS_NEXT (BUTTON_RIGHT | BUTTON_REL) 126#define WPS_NEXT (BUTTON_RIGHT | BUTTON_REL)