diff options
author | Jens Arnold <amiconn@rockbox.org> | 2005-06-23 10:11:10 +0000 |
---|---|---|
committer | Jens Arnold <amiconn@rockbox.org> | 2005-06-23 10:11:10 +0000 |
commit | da2b45f2e5cfcdf730849fbd5261ef8f0761bdcb (patch) | |
tree | ae220e13ae2d7013815b4d06423d7fd90f13fdd1 | |
parent | 3263620c5c296dd181e8a54d1bc51c5869b129ff (diff) | |
download | rockbox-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
-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 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 | ||
492 | static bool exit_to_main; | ||
493 | |||
494 | /* catch MENU_EXIT_MENU within context menu to call the main menu afterwards */ | ||
495 | static 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 | |||
491 | int onplay(char* file, int attr, int from) | 505 | int 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) |