diff options
author | Daniel Stenberg <daniel@haxx.se> | 2002-08-23 12:32:52 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2002-08-23 12:32:52 +0000 |
commit | b285076925fed906d95573b64115cb3f6bdafe65 (patch) | |
tree | 6d959f585fc210acf39e667991038d21aef48d13 /apps | |
parent | ad4a92eb87eb98ff316f54f06650f1c5e1dcd7ca (diff) | |
download | rockbox-b285076925fed906d95573b64115cb3f6bdafe65.tar.gz rockbox-b285076925fed906d95573b64115cb3f6bdafe65.zip |
Remade the menu system slightly. All functions invoked from menus now use
the Menu typedef as return type, and *ALL* menus that intercept USB connect
can then return MENU_REFRESH_DIR so that the parent (any parent really) that
do file or dir-accesses knows that and can do the refresh. If no refresh
is needed by the parent, MENU_OK is returned.
Somewhat biggish commit this close to 1.3, but we need to sort out this
refresh-after-usb-connected business.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1948 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r-- | apps/Makefile | 2 | ||||
-rw-r--r-- | apps/debug_menu.c | 51 | ||||
-rw-r--r-- | apps/debug_menu.h | 6 | ||||
-rw-r--r-- | apps/games_menu.c | 11 | ||||
-rw-r--r-- | apps/games_menu.h | 4 | ||||
-rw-r--r-- | apps/main_menu.c | 18 | ||||
-rw-r--r-- | apps/main_menu.h | 4 | ||||
-rw-r--r-- | apps/menu.c | 8 | ||||
-rw-r--r-- | apps/menu.h | 12 | ||||
-rw-r--r-- | apps/recorder/blank.c | 16 | ||||
-rw-r--r-- | apps/recorder/bounce.c | 5 | ||||
-rw-r--r-- | apps/recorder/boxes.c | 5 | ||||
-rw-r--r-- | apps/recorder/boxes.h | 4 | ||||
-rw-r--r-- | apps/recorder/sokoban.c | 5 | ||||
-rw-r--r-- | apps/recorder/sokoban.h | 4 | ||||
-rw-r--r-- | apps/recorder/tetris.c | 5 | ||||
-rw-r--r-- | apps/screensavers_menu.c | 11 | ||||
-rw-r--r-- | apps/screensavers_menu.h | 2 | ||||
-rw-r--r-- | apps/settings_menu.c | 45 | ||||
-rw-r--r-- | apps/settings_menu.h | 4 | ||||
-rw-r--r-- | apps/sound_menu.c | 28 | ||||
-rw-r--r-- | apps/sound_menu.h | 4 | ||||
-rw-r--r-- | apps/tree.c | 10 |
23 files changed, 175 insertions, 89 deletions
diff --git a/apps/Makefile b/apps/Makefile index e375cb9b1d..8ec3b0a581 100644 --- a/apps/Makefile +++ b/apps/Makefile | |||
@@ -15,7 +15,7 @@ OC = sh-elf-objcopy | |||
15 | 15 | ||
16 | FIRMWARE := ../firmware | 16 | FIRMWARE := ../firmware |
17 | 17 | ||
18 | INCLUDES= -I$(FIRMWARE)/include -I$(FIRMWARE) -I$(FIRMWARE)/common -I$(FIRMWARE)/drivers -I$(FIRMWARE)/malloc | 18 | INCLUDES= -I$(FIRMWARE)/include -I$(FIRMWARE) -I$(FIRMWARE)/common -I$(FIRMWARE)/drivers -I$(FIRMWARE)/malloc -I. |
19 | 19 | ||
20 | # Pick a target to build for | 20 | # Pick a target to build for |
21 | #TARGET = -DARCHOS_PLAYER=1 | 21 | #TARGET = -DARCHOS_PLAYER=1 |
diff --git a/apps/debug_menu.c b/apps/debug_menu.c index 44079a789d..ed5e8268ea 100644 --- a/apps/debug_menu.c +++ b/apps/debug_menu.c | |||
@@ -82,7 +82,7 @@ void dbg_os(void) | |||
82 | } | 82 | } |
83 | } | 83 | } |
84 | #else | 84 | #else |
85 | void dbg_os(void) | 85 | Menu dbg_os(void) |
86 | { | 86 | { |
87 | char buf[32]; | 87 | char buf[32]; |
88 | int button; | 88 | int button; |
@@ -109,7 +109,7 @@ void dbg_os(void) | |||
109 | switch(button) | 109 | switch(button) |
110 | { | 110 | { |
111 | case BUTTON_STOP: | 111 | case BUTTON_STOP: |
112 | return; | 112 | return MENU_OK; |
113 | 113 | ||
114 | case BUTTON_LEFT: | 114 | case BUTTON_LEFT: |
115 | currval--; | 115 | currval--; |
@@ -124,12 +124,13 @@ void dbg_os(void) | |||
124 | break; | 124 | break; |
125 | } | 125 | } |
126 | } | 126 | } |
127 | return MENU_OK; | ||
127 | } | 128 | } |
128 | #endif | 129 | #endif |
129 | 130 | ||
130 | #ifdef HAVE_LCD_BITMAP | 131 | #ifdef HAVE_LCD_BITMAP |
131 | /* Test code!!! */ | 132 | /* Test code!!! */ |
132 | void dbg_ports(void) | 133 | Menu dbg_ports(void) |
133 | { | 134 | { |
134 | unsigned short porta; | 135 | unsigned short porta; |
135 | unsigned short portb; | 136 | unsigned short portb; |
@@ -199,12 +200,13 @@ void dbg_ports(void) | |||
199 | case BUTTON_LEFT: | 200 | case BUTTON_LEFT: |
200 | charger_enable(false); | 201 | charger_enable(false); |
201 | ide_power_enable(true); | 202 | ide_power_enable(true); |
202 | return; | 203 | return MENU_OK; |
203 | } | 204 | } |
204 | } | 205 | } |
206 | return MENU_OK; | ||
205 | } | 207 | } |
206 | #else | 208 | #else |
207 | void dbg_ports(void) | 209 | Menu dbg_ports(void) |
208 | { | 210 | { |
209 | unsigned short porta; | 211 | unsigned short porta; |
210 | unsigned short portb; | 212 | unsigned short portb; |
@@ -280,7 +282,7 @@ void dbg_ports(void) | |||
280 | switch(button) | 282 | switch(button) |
281 | { | 283 | { |
282 | case BUTTON_STOP: | 284 | case BUTTON_STOP: |
283 | return; | 285 | return MENU_OK; |
284 | 286 | ||
285 | case BUTTON_LEFT: | 287 | case BUTTON_LEFT: |
286 | currval--; | 288 | currval--; |
@@ -295,12 +297,13 @@ void dbg_ports(void) | |||
295 | break; | 297 | break; |
296 | } | 298 | } |
297 | } | 299 | } |
300 | return MENU_OK; | ||
298 | } | 301 | } |
299 | #endif | 302 | #endif |
300 | 303 | ||
301 | #ifdef HAVE_RTC | 304 | #ifdef HAVE_RTC |
302 | /* Read RTC RAM contents and display them */ | 305 | /* Read RTC RAM contents and display them */ |
303 | void dbg_rtc(void) | 306 | Menu dbg_rtc(void) |
304 | { | 307 | { |
305 | char buf[32]; | 308 | char buf[32]; |
306 | unsigned char addr = 0, r, c; | 309 | unsigned char addr = 0, r, c; |
@@ -344,14 +347,15 @@ void dbg_rtc(void) | |||
344 | break; | 347 | break; |
345 | case BUTTON_OFF: | 348 | case BUTTON_OFF: |
346 | case BUTTON_LEFT: | 349 | case BUTTON_LEFT: |
347 | return; | 350 | return MENU_OK; |
348 | } | 351 | } |
349 | } | 352 | } |
353 | return MENU_OK; | ||
350 | } | 354 | } |
351 | #else | 355 | #else |
352 | void dbg_rtc(void) | 356 | Menu dbg_rtc(void) |
353 | { | 357 | { |
354 | return; | 358 | return MENU_OK; |
355 | } | 359 | } |
356 | #endif | 360 | #endif |
357 | 361 | ||
@@ -361,7 +365,7 @@ void dbg_rtc(void) | |||
361 | #define NUMROWS 4 | 365 | #define NUMROWS 4 |
362 | #endif | 366 | #endif |
363 | /* Read MAS registers and display them */ | 367 | /* Read MAS registers and display them */ |
364 | void dbg_mas(void) | 368 | Menu dbg_mas(void) |
365 | { | 369 | { |
366 | char buf[32]; | 370 | char buf[32]; |
367 | unsigned int addr = 0, r, i; | 371 | unsigned int addr = 0, r, i; |
@@ -405,13 +409,14 @@ void dbg_mas(void) | |||
405 | #else | 409 | #else |
406 | case BUTTON_DOWN: | 410 | case BUTTON_DOWN: |
407 | #endif | 411 | #endif |
408 | return; | 412 | return MENU_OK; |
409 | } | 413 | } |
410 | } | 414 | } |
415 | return MENU_OK; | ||
411 | } | 416 | } |
412 | 417 | ||
413 | #ifdef HAVE_MAS3587F | 418 | #ifdef HAVE_MAS3587F |
414 | void dbg_mas_codec(void) | 419 | Menu dbg_mas_codec(void) |
415 | { | 420 | { |
416 | char buf[32]; | 421 | char buf[32]; |
417 | unsigned int addr = 0, r, i; | 422 | unsigned int addr = 0, r, i; |
@@ -442,9 +447,10 @@ void dbg_mas_codec(void) | |||
442 | if (addr) { addr -= 4; } | 447 | if (addr) { addr -= 4; } |
443 | break; | 448 | break; |
444 | case BUTTON_LEFT: | 449 | case BUTTON_LEFT: |
445 | return; | 450 | return MENU_OK; |
446 | } | 451 | } |
447 | } | 452 | } |
453 | return MENU_OK; | ||
448 | } | 454 | } |
449 | #endif | 455 | #endif |
450 | 456 | ||
@@ -458,7 +464,7 @@ void dbg_mas_codec(void) | |||
458 | #define BAT_FIRST_VAL MAX(POWER_HISTORY_LEN - LCD_WIDTH - 1, 0) | 464 | #define BAT_FIRST_VAL MAX(POWER_HISTORY_LEN - LCD_WIDTH - 1, 0) |
459 | #define BAT_YSPACE (LCD_HEIGHT - 20) | 465 | #define BAT_YSPACE (LCD_HEIGHT - 20) |
460 | 466 | ||
461 | void view_battery(void) | 467 | Menu view_battery(void) |
462 | { | 468 | { |
463 | int view = 0; | 469 | int view = 0; |
464 | int i, x, y; | 470 | int i, x, y; |
@@ -579,15 +585,16 @@ void view_battery(void) | |||
579 | 585 | ||
580 | case BUTTON_LEFT: | 586 | case BUTTON_LEFT: |
581 | case BUTTON_OFF: | 587 | case BUTTON_OFF: |
582 | return; | 588 | return MENU_OK; |
583 | } | 589 | } |
584 | } | 590 | } |
591 | return MENU_OK; | ||
585 | } | 592 | } |
586 | 593 | ||
587 | #endif | 594 | #endif |
588 | 595 | ||
589 | #ifdef HAVE_MAS3507D | 596 | #ifdef HAVE_MAS3507D |
590 | void dbg_mas_info(void) | 597 | Menu dbg_mas_info(void) |
591 | { | 598 | { |
592 | int button; | 599 | int button; |
593 | char buf[32]; | 600 | char buf[32]; |
@@ -721,7 +728,7 @@ void dbg_mas_info(void) | |||
721 | switch(button) | 728 | switch(button) |
722 | { | 729 | { |
723 | case BUTTON_STOP: | 730 | case BUTTON_STOP: |
724 | return; | 731 | return MENU_OK; |
725 | 732 | ||
726 | case BUTTON_LEFT: | 733 | case BUTTON_LEFT: |
727 | currval--; | 734 | currval--; |
@@ -757,12 +764,14 @@ void dbg_mas_info(void) | |||
757 | break; | 764 | break; |
758 | } | 765 | } |
759 | } | 766 | } |
767 | return MENU_OK; | ||
760 | } | 768 | } |
761 | #endif | 769 | #endif |
762 | 770 | ||
763 | void debug_menu(void) | 771 | Menu debug_menu(void) |
764 | { | 772 | { |
765 | int m; | 773 | int m; |
774 | Menu result; | ||
766 | 775 | ||
767 | struct menu_items items[] = { | 776 | struct menu_items items[] = { |
768 | { "View I/O ports", dbg_ports }, | 777 | { "View I/O ports", dbg_ports }, |
@@ -785,8 +794,10 @@ void debug_menu(void) | |||
785 | }; | 794 | }; |
786 | 795 | ||
787 | m=menu_init( items, sizeof items / sizeof(struct menu_items) ); | 796 | m=menu_init( items, sizeof items / sizeof(struct menu_items) ); |
788 | menu_run(m); | 797 | result = menu_run(m); |
789 | menu_exit(m); | 798 | menu_exit(m); |
799 | |||
800 | return result; | ||
790 | } | 801 | } |
791 | 802 | ||
792 | #endif /* SIMULATOR */ | 803 | #endif /* SIMULATOR */ |
diff --git a/apps/debug_menu.h b/apps/debug_menu.h index 78b344bce3..5dcc3ac183 100644 --- a/apps/debug_menu.h +++ b/apps/debug_menu.h | |||
@@ -19,12 +19,12 @@ | |||
19 | #ifndef _DEBUG_MENU_H | 19 | #ifndef _DEBUG_MENU_H |
20 | #define _DEBUG_MENU_H | 20 | #define _DEBUG_MENU_H |
21 | 21 | ||
22 | void debug_menu(void); | 22 | Menu debug_menu(void); |
23 | 23 | ||
24 | #ifndef SIMULATOR | 24 | #ifndef SIMULATOR |
25 | extern void dbg_ports(void); | 25 | extern Menu dbg_ports(void); |
26 | #ifdef HAVE_RTC | 26 | #ifdef HAVE_RTC |
27 | extern void dbg_rtc(void); | 27 | extern Menu dbg_rtc(void); |
28 | #endif | 28 | #endif |
29 | #endif | 29 | #endif |
30 | 30 | ||
diff --git a/apps/games_menu.c b/apps/games_menu.c index 1d30fbbcce..3850a4f0ab 100644 --- a/apps/games_menu.c +++ b/apps/games_menu.c | |||
@@ -29,11 +29,12 @@ | |||
29 | #include "sprintf.h" | 29 | #include "sprintf.h" |
30 | 30 | ||
31 | #include "sokoban.h" | 31 | #include "sokoban.h" |
32 | extern void tetris(void); | 32 | extern Menu tetris(void); |
33 | 33 | ||
34 | void games_menu(void) | 34 | Menu games_menu(void) |
35 | { | 35 | { |
36 | int m; | 36 | int m; |
37 | Menu result; | ||
37 | 38 | ||
38 | struct menu_items items[] = { | 39 | struct menu_items items[] = { |
39 | { "Tetris", tetris }, | 40 | { "Tetris", tetris }, |
@@ -41,10 +42,10 @@ void games_menu(void) | |||
41 | }; | 42 | }; |
42 | 43 | ||
43 | m=menu_init( items, sizeof items / sizeof(struct menu_items) ); | 44 | m=menu_init( items, sizeof items / sizeof(struct menu_items) ); |
44 | menu_run(m); | 45 | result = menu_run(m); |
45 | menu_exit(m); | 46 | menu_exit(m); |
47 | |||
48 | return result; | ||
46 | } | 49 | } |
47 | 50 | ||
48 | #endif | 51 | #endif |
49 | |||
50 | |||
diff --git a/apps/games_menu.h b/apps/games_menu.h index 861c27bfac..a179a2a8ea 100644 --- a/apps/games_menu.h +++ b/apps/games_menu.h | |||
@@ -19,6 +19,8 @@ | |||
19 | #ifndef _GAMES_MENU_H | 19 | #ifndef _GAMES_MENU_H |
20 | #define _GAMES_MENU_H | 20 | #define _GAMES_MENU_H |
21 | 21 | ||
22 | void games_menu(void); | 22 | #include "menu.h" |
23 | |||
24 | Menu games_menu(void); | ||
23 | 25 | ||
24 | #endif | 26 | #endif |
diff --git a/apps/main_menu.c b/apps/main_menu.c index 2cb9bda9bd..885deea6c4 100644 --- a/apps/main_menu.c +++ b/apps/main_menu.c | |||
@@ -105,7 +105,7 @@ int show_logo( void ) | |||
105 | return 0; | 105 | return 0; |
106 | } | 106 | } |
107 | 107 | ||
108 | void show_credits(void) | 108 | Menu show_credits(void) |
109 | { | 109 | { |
110 | int j = 0; | 110 | int j = 0; |
111 | int btn; | 111 | int btn; |
@@ -120,22 +120,23 @@ void show_credits(void) | |||
120 | 120 | ||
121 | btn = button_get(false); | 121 | btn = button_get(false); |
122 | if (btn != BUTTON_NONE && !(btn & BUTTON_REL)) | 122 | if (btn != BUTTON_NONE && !(btn & BUTTON_REL)) |
123 | return; | 123 | return MENU_OK; |
124 | } | 124 | } |
125 | roll_credits(); | 125 | roll_credits(); |
126 | return MENU_OK; | ||
126 | } | 127 | } |
127 | 128 | ||
128 | #ifdef SIMULATOR | 129 | #ifdef SIMULATOR |
129 | #define mp3buf 0 | 130 | #define mp3buf 0 |
130 | #define mp3end 0 | 131 | #define mp3end 0 |
131 | 132 | ||
132 | extern void simulate_usb(void); | 133 | extern Menu simulate_usb(void); |
133 | #else | 134 | #else |
134 | /* defined in linker script */ | 135 | /* defined in linker script */ |
135 | extern unsigned char mp3buf[]; | 136 | extern unsigned char mp3buf[]; |
136 | extern unsigned char mp3end[]; | 137 | extern unsigned char mp3end[]; |
137 | #endif | 138 | #endif |
138 | void show_info(void) | 139 | Menu show_info(void) |
139 | { | 140 | { |
140 | char s[32]; | 141 | char s[32]; |
141 | int buflen = ((mp3end - mp3buf) * 100) / 0x100000; | 142 | int buflen = ((mp3end - mp3buf) * 100) / 0x100000; |
@@ -181,11 +182,14 @@ void show_info(void) | |||
181 | if(button_get(false) & ~BUTTON_REL) | 182 | if(button_get(false) & ~BUTTON_REL) |
182 | done = true; | 183 | done = true; |
183 | } | 184 | } |
185 | |||
186 | return MENU_OK; | ||
184 | } | 187 | } |
185 | 188 | ||
186 | void main_menu(void) | 189 | Menu main_menu(void) |
187 | { | 190 | { |
188 | int m; | 191 | int m; |
192 | Menu result; | ||
189 | 193 | ||
190 | /* main menu */ | 194 | /* main menu */ |
191 | struct menu_items items[] = { | 195 | struct menu_items items[] = { |
@@ -208,11 +212,13 @@ void main_menu(void) | |||
208 | #ifdef HAVE_LCD_CHARCELLS | 212 | #ifdef HAVE_LCD_CHARCELLS |
209 | lcd_icon(ICON_PARAM, true); | 213 | lcd_icon(ICON_PARAM, true); |
210 | #endif | 214 | #endif |
211 | menu_run(m); | 215 | result = menu_run(m); |
212 | #ifdef HAVE_LCD_CHARCELLS | 216 | #ifdef HAVE_LCD_CHARCELLS |
213 | lcd_icon(ICON_PARAM, false); | 217 | lcd_icon(ICON_PARAM, false); |
214 | #endif | 218 | #endif |
215 | menu_exit(m); | 219 | menu_exit(m); |
216 | 220 | ||
217 | settings_save(); | 221 | settings_save(); |
222 | |||
223 | return result; | ||
218 | } | 224 | } |
diff --git a/apps/main_menu.h b/apps/main_menu.h index 54cc6023c7..8efcd6f380 100644 --- a/apps/main_menu.h +++ b/apps/main_menu.h | |||
@@ -19,7 +19,9 @@ | |||
19 | #ifndef _MAIN_MENU_H | 19 | #ifndef _MAIN_MENU_H |
20 | #define _MAIN_MENU_H | 20 | #define _MAIN_MENU_H |
21 | 21 | ||
22 | #include "menu.h" | ||
23 | |||
22 | extern int show_logo(void); | 24 | extern int show_logo(void); |
23 | extern void main_menu(void); | 25 | extern Menu main_menu(void); |
24 | 26 | ||
25 | #endif | 27 | #endif |
diff --git a/apps/menu.c b/apps/menu.c index 418ccf309d..b0060f4df4 100644 --- a/apps/menu.c +++ b/apps/menu.c | |||
@@ -212,13 +212,14 @@ void menu_exit(int m) | |||
212 | inuse[m] = false; | 212 | inuse[m] = false; |
213 | } | 213 | } |
214 | 214 | ||
215 | void menu_run(int m) | 215 | Menu menu_run(int m) |
216 | { | 216 | { |
217 | #ifndef SIMULATOR | 217 | #ifndef SIMULATOR |
218 | #ifdef HAVE_LCD_BITMAP | 218 | #ifdef HAVE_LCD_BITMAP |
219 | bool laststate; | 219 | bool laststate; |
220 | #endif | 220 | #endif |
221 | #endif | 221 | #endif |
222 | Menu result = MENU_OK; | ||
222 | 223 | ||
223 | menu_draw(m); | 224 | menu_draw(m); |
224 | 225 | ||
@@ -273,7 +274,7 @@ void menu_run(int m) | |||
273 | case BUTTON_MENU: | 274 | case BUTTON_MENU: |
274 | #endif | 275 | #endif |
275 | lcd_stop_scroll(); | 276 | lcd_stop_scroll(); |
276 | return; | 277 | return result; |
277 | 278 | ||
278 | #ifdef HAVE_RECORDER_KEYPAD | 279 | #ifdef HAVE_RECORDER_KEYPAD |
279 | case BUTTON_F3: | 280 | case BUTTON_F3: |
@@ -298,6 +299,7 @@ void menu_run(int m) | |||
298 | #else | 299 | #else |
299 | lcd_icon(ICON_PARAM, true); | 300 | lcd_icon(ICON_PARAM, true); |
300 | #endif | 301 | #endif |
302 | result = MENU_REFRESH_DIR; | ||
301 | break; | 303 | break; |
302 | #endif | 304 | #endif |
303 | 305 | ||
@@ -308,4 +310,6 @@ void menu_run(int m) | |||
308 | status_draw(); | 310 | status_draw(); |
309 | lcd_update(); | 311 | lcd_update(); |
310 | } | 312 | } |
313 | |||
314 | return result; | ||
311 | } | 315 | } |
diff --git a/apps/menu.h b/apps/menu.h index 0871e502c8..fc962c79aa 100644 --- a/apps/menu.h +++ b/apps/menu.h | |||
@@ -22,15 +22,23 @@ | |||
22 | 22 | ||
23 | #include <stdbool.h> | 23 | #include <stdbool.h> |
24 | 24 | ||
25 | typedef enum { | ||
26 | MENU_OK, | ||
27 | MENU_REFRESH_DIR, /* any file/directory contents need to be re-read */ | ||
28 | MENU_LAST /* don't use as return code, only for number of return codes | ||
29 | available */ | ||
30 | } Menu; | ||
31 | |||
25 | struct menu_items { | 32 | struct menu_items { |
26 | char *desc; | 33 | char *desc; |
27 | void (*function) (void); | 34 | Menu (*function) (void); |
28 | }; | 35 | }; |
29 | 36 | ||
30 | int menu_init(struct menu_items* items, int count); | 37 | int menu_init(struct menu_items* items, int count); |
31 | void menu_exit(int menu); | 38 | void menu_exit(int menu); |
32 | void menu_run(int menu); | ||
33 | 39 | ||
34 | void put_cursorxy(int x, int y, bool on); | 40 | void put_cursorxy(int x, int y, bool on); |
35 | 41 | ||
42 | Menu menu_run(int menu); | ||
43 | |||
36 | #endif /* End __MENU_H__ */ | 44 | #endif /* End __MENU_H__ */ |
diff --git a/apps/recorder/blank.c b/apps/recorder/blank.c index 835420f63b..2c59ec66bc 100644 --- a/apps/recorder/blank.c +++ b/apps/recorder/blank.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include "lcd.h" | 24 | #include "lcd.h" |
25 | #include "button.h" | 25 | #include "button.h" |
26 | #include "kernel.h" | 26 | #include "kernel.h" |
27 | #include "menu.h" | ||
27 | 28 | ||
28 | #ifdef SIMULATOR | 29 | #ifdef SIMULATOR |
29 | #include <stdio.h> | 30 | #include <stdio.h> |
@@ -33,7 +34,7 @@ | |||
33 | #define SS_TITLE "Blank" | 34 | #define SS_TITLE "Blank" |
34 | #define SS_TITLE_FONT 2 | 35 | #define SS_TITLE_FONT 2 |
35 | 36 | ||
36 | void blank(void) | 37 | Menu blank(void) |
37 | { | 38 | { |
38 | int w, h; | 39 | int w, h; |
39 | char *off = "[Off] to stop"; | 40 | char *off = "[Off] to stop"; |
@@ -76,15 +77,16 @@ void blank(void) | |||
76 | lcd_update(); | 77 | lcd_update(); |
77 | sleep(HZ); | 78 | sleep(HZ); |
78 | 79 | ||
79 | lcd_clear_display(); | 80 | lcd_clear_display(); |
80 | lcd_update(); | 81 | lcd_update(); |
81 | 82 | ||
82 | while(1) { | 83 | while(1) { |
83 | if(button_get(false)) | 84 | if(button_get(false)) |
84 | return; | 85 | return MENU_OK; |
85 | sleep(HZ/10); | 86 | sleep(HZ/10); |
86 | } | 87 | } |
87 | 88 | ||
89 | return MENU_OK; | ||
88 | } | 90 | } |
89 | 91 | ||
90 | #endif | 92 | #endif |
diff --git a/apps/recorder/bounce.c b/apps/recorder/bounce.c index 6b500964f0..cb080a0d00 100644 --- a/apps/recorder/bounce.c +++ b/apps/recorder/bounce.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include "lcd.h" | 24 | #include "lcd.h" |
25 | #include "button.h" | 25 | #include "button.h" |
26 | #include "kernel.h" | 26 | #include "kernel.h" |
27 | #include "menu.h" | ||
27 | 28 | ||
28 | #ifdef SIMULATOR | 29 | #ifdef SIMULATOR |
29 | #include <stdio.h> | 30 | #include <stdio.h> |
@@ -83,7 +84,7 @@ static void loopit(void) | |||
83 | } | 84 | } |
84 | 85 | ||
85 | 86 | ||
86 | void bounce(void) | 87 | Menu bounce(void) |
87 | { | 88 | { |
88 | int w, h; | 89 | int w, h; |
89 | char *off = "[Off] to stop"; | 90 | char *off = "[Off] to stop"; |
@@ -126,6 +127,8 @@ void bounce(void) | |||
126 | lcd_update(); | 127 | lcd_update(); |
127 | sleep(HZ); | 128 | sleep(HZ); |
128 | loopit(); | 129 | loopit(); |
130 | |||
131 | return MENU_OK; | ||
129 | } | 132 | } |
130 | 133 | ||
131 | #endif | 134 | #endif |
diff --git a/apps/recorder/boxes.c b/apps/recorder/boxes.c index 6b6d0065c9..60fdef6f9b 100644 --- a/apps/recorder/boxes.c +++ b/apps/recorder/boxes.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include "lcd.h" | 25 | #include "lcd.h" |
26 | #include "button.h" | 26 | #include "button.h" |
27 | #include "kernel.h" | 27 | #include "kernel.h" |
28 | #include "menu.h" | ||
28 | 29 | ||
29 | #ifdef SIMULATOR | 30 | #ifdef SIMULATOR |
30 | #include <stdio.h> | 31 | #include <stdio.h> |
@@ -82,7 +83,7 @@ static void ss_loop(void) | |||
82 | } | 83 | } |
83 | } | 84 | } |
84 | 85 | ||
85 | void boxes(void) | 86 | Menu boxes(void) |
86 | { | 87 | { |
87 | int w, h; | 88 | int w, h; |
88 | char *off = "[Off] to stop"; | 89 | char *off = "[Off] to stop"; |
@@ -125,6 +126,8 @@ void boxes(void) | |||
125 | lcd_update(); | 126 | lcd_update(); |
126 | sleep(HZ/2); | 127 | sleep(HZ/2); |
127 | ss_loop(); | 128 | ss_loop(); |
129 | |||
130 | return MENU_OK; | ||
128 | } | 131 | } |
129 | 132 | ||
130 | #endif | 133 | #endif |
diff --git a/apps/recorder/boxes.h b/apps/recorder/boxes.h index bf3e095a65..2defb0bbfc 100644 --- a/apps/recorder/boxes.h +++ b/apps/recorder/boxes.h | |||
@@ -20,7 +20,9 @@ | |||
20 | #ifndef __BOXES_H__ | 20 | #ifndef __BOXES_H__ |
21 | #define __BOXES_H__ | 21 | #define __BOXES_H__ |
22 | 22 | ||
23 | void boxes(void); | 23 | #include "menu.h" |
24 | |||
25 | Menu boxes(void); | ||
24 | 26 | ||
25 | #endif /* __BOXES_H__ */ | 27 | #endif /* __BOXES_H__ */ |
26 | 28 | ||
diff --git a/apps/recorder/sokoban.c b/apps/recorder/sokoban.c index 2795d745e6..6ce19e6a41 100644 --- a/apps/recorder/sokoban.c +++ b/apps/recorder/sokoban.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include "lcd.h" | 23 | #include "lcd.h" |
24 | #include "button.h" | 24 | #include "button.h" |
25 | #include "kernel.h" | 25 | #include "kernel.h" |
26 | #include "menu.h" | ||
26 | 27 | ||
27 | #ifdef SIMULATOR | 28 | #ifdef SIMULATOR |
28 | #include <stdio.h> | 29 | #include <stdio.h> |
@@ -1334,7 +1335,7 @@ void sokoban_loop(void) { | |||
1334 | } | 1335 | } |
1335 | 1336 | ||
1336 | 1337 | ||
1337 | void sokoban(void) | 1338 | Menu sokoban(void) |
1338 | { | 1339 | { |
1339 | int w, h; | 1340 | int w, h; |
1340 | int len = strlen(SOKOBAN_TITLE); | 1341 | int len = strlen(SOKOBAN_TITLE); |
@@ -1371,4 +1372,6 @@ void sokoban(void) | |||
1371 | sleep(HZ*2); | 1372 | sleep(HZ*2); |
1372 | lcd_clear_display(); | 1373 | lcd_clear_display(); |
1373 | sokoban_loop(); | 1374 | sokoban_loop(); |
1375 | |||
1376 | return MENU_OK; | ||
1374 | } | 1377 | } |
diff --git a/apps/recorder/sokoban.h b/apps/recorder/sokoban.h index 8e6c54c43e..ee1398c011 100644 --- a/apps/recorder/sokoban.h +++ b/apps/recorder/sokoban.h | |||
@@ -20,10 +20,12 @@ | |||
20 | #ifndef __SOKOBAN__ | 20 | #ifndef __SOKOBAN__ |
21 | #define __SOKOBAN__ | 21 | #define __SOKOBAN__ |
22 | 22 | ||
23 | #include "menu.h" | ||
24 | |||
23 | void load_level(int); | 25 | void load_level(int); |
24 | void update_screen(void); | 26 | void update_screen(void); |
25 | void sokoban_loop(void); | 27 | void sokoban_loop(void); |
26 | void sokoban(void); | 28 | Menu sokoban(void); |
27 | 29 | ||
28 | #endif /*__SOKOBAN__ */ | 30 | #endif /*__SOKOBAN__ */ |
29 | 31 | ||
diff --git a/apps/recorder/tetris.c b/apps/recorder/tetris.c index 76d1940889..910374920f 100644 --- a/apps/recorder/tetris.c +++ b/apps/recorder/tetris.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include "button.h" | 27 | #include "button.h" |
28 | #include "kernel.h" | 28 | #include "kernel.h" |
29 | #include <string.h> | 29 | #include <string.h> |
30 | #include "menu.h" | ||
30 | 31 | ||
31 | #ifdef SIMULATOR | 32 | #ifdef SIMULATOR |
32 | #include <stdio.h> | 33 | #include <stdio.h> |
@@ -388,7 +389,7 @@ void init_tetris(void) | |||
388 | next_f = 0; | 389 | next_f = 0; |
389 | } | 390 | } |
390 | 391 | ||
391 | void tetris(void) | 392 | Menu tetris(void) |
392 | { | 393 | { |
393 | init_tetris(); | 394 | init_tetris(); |
394 | 395 | ||
@@ -400,6 +401,8 @@ void tetris(void) | |||
400 | next_f = t_rand(block_frames[next_b]); | 401 | next_f = t_rand(block_frames[next_b]); |
401 | new_block(); | 402 | new_block(); |
402 | game_loop(); | 403 | game_loop(); |
404 | |||
405 | return MENU_OK; | ||
403 | } | 406 | } |
404 | 407 | ||
405 | #endif | 408 | #endif |
diff --git a/apps/screensavers_menu.c b/apps/screensavers_menu.c index a7bd4d422c..b184b916cc 100644 --- a/apps/screensavers_menu.c +++ b/apps/screensavers_menu.c | |||
@@ -30,12 +30,13 @@ | |||
30 | #include "sprintf.h" | 30 | #include "sprintf.h" |
31 | 31 | ||
32 | #include "boxes.h" | 32 | #include "boxes.h" |
33 | extern void bounce(void); | 33 | extern Menu bounce(void); |
34 | extern void blank(void); | 34 | extern Menu blank(void); |
35 | 35 | ||
36 | void screensavers_menu(void) | 36 | Menu screensavers_menu(void) |
37 | { | 37 | { |
38 | int m; | 38 | int m; |
39 | Menu result; | ||
39 | 40 | ||
40 | struct menu_items items[] = { | 41 | struct menu_items items[] = { |
41 | { "Boxes", boxes }, | 42 | { "Boxes", boxes }, |
@@ -44,8 +45,10 @@ void screensavers_menu(void) | |||
44 | }; | 45 | }; |
45 | 46 | ||
46 | m=menu_init( items, sizeof items / sizeof(struct menu_items) ); | 47 | m=menu_init( items, sizeof items / sizeof(struct menu_items) ); |
47 | menu_run(m); | 48 | result = menu_run(m); |
48 | menu_exit(m); | 49 | menu_exit(m); |
50 | |||
51 | return result; | ||
49 | } | 52 | } |
50 | 53 | ||
51 | #endif | 54 | #endif |
diff --git a/apps/screensavers_menu.h b/apps/screensavers_menu.h index 42a40cf826..cac4c43cc9 100644 --- a/apps/screensavers_menu.h +++ b/apps/screensavers_menu.h | |||
@@ -19,7 +19,7 @@ | |||
19 | #ifndef _SCREENSAVERS_MENU_H | 19 | #ifndef _SCREENSAVERS_MENU_H |
20 | #define _SCREENSAVERS_MENU_H | 20 | #define _SCREENSAVERS_MENU_H |
21 | 21 | ||
22 | void screensavers_menu(void); | 22 | Menu screensavers_menu(void); |
23 | 23 | ||
24 | #endif | 24 | #endif |
25 | 25 | ||
diff --git a/apps/settings_menu.c b/apps/settings_menu.c index 0d88edfff4..2bb4ef4481 100644 --- a/apps/settings_menu.c +++ b/apps/settings_menu.c | |||
@@ -36,39 +36,45 @@ | |||
36 | #include "powermgmt.h" | 36 | #include "powermgmt.h" |
37 | #include "rtc.h" | 37 | #include "rtc.h" |
38 | 38 | ||
39 | static void show_hidden_files(void) | 39 | static Menu show_hidden_files(void) |
40 | { | 40 | { |
41 | set_bool( "[Show hidden files]", &global_settings.show_hidden_files ); | 41 | set_bool( "[Show hidden files]", &global_settings.show_hidden_files ); |
42 | return MENU_OK; | ||
42 | } | 43 | } |
43 | 44 | ||
44 | static void contrast(void) | 45 | static Menu contrast(void) |
45 | { | 46 | { |
46 | set_int( "[Contrast]", "", &global_settings.contrast, | 47 | set_int( "[Contrast]", "", &global_settings.contrast, |
47 | lcd_set_contrast, 1, 0, MAX_CONTRAST_SETTING ); | 48 | lcd_set_contrast, 1, 0, MAX_CONTRAST_SETTING ); |
49 | return MENU_OK; | ||
48 | } | 50 | } |
49 | 51 | ||
50 | static void shuffle(void) | 52 | static Menu shuffle(void) |
51 | { | 53 | { |
52 | set_bool( "[Shuffle]", &global_settings.playlist_shuffle ); | 54 | set_bool( "[Shuffle]", &global_settings.playlist_shuffle ); |
55 | return MENU_OK; | ||
53 | } | 56 | } |
54 | 57 | ||
55 | static void mp3_filter(void) | 58 | static Menu mp3_filter(void) |
56 | { | 59 | { |
57 | set_bool( "[MP3/M3U filter]", &global_settings.mp3filter ); | 60 | set_bool( "[MP3/M3U filter]", &global_settings.mp3filter ); |
61 | return MENU_OK; | ||
58 | } | 62 | } |
59 | 63 | ||
60 | static void sort_case(void) | 64 | static Menu sort_case(void) |
61 | { | 65 | { |
62 | set_bool( "[Sort case sensitive]", &global_settings.sort_case ); | 66 | set_bool( "[Sort case sensitive]", &global_settings.sort_case ); |
67 | return MENU_OK; | ||
63 | } | 68 | } |
64 | 69 | ||
65 | static void resume(void) | 70 | static Menu resume(void) |
66 | { | 71 | { |
67 | char* names[] = { "off", "ask", "on " }; | 72 | char* names[] = { "off", "ask", "on " }; |
68 | set_option( "[Resume]", &global_settings.resume, names, 3 ); | 73 | set_option( "[Resume]", &global_settings.resume, names, 3 ); |
74 | return MENU_OK; | ||
69 | } | 75 | } |
70 | 76 | ||
71 | static void backlight_timer(void) | 77 | static Menu backlight_timer(void) |
72 | { | 78 | { |
73 | char* names[] = { "off", "on ", | 79 | char* names[] = { "off", "on ", |
74 | "1s ", "2s ", "3s ", "4s ", "5s ", | 80 | "1s ", "2s ", "3s ", "4s ", "5s ", |
@@ -77,15 +83,17 @@ static void backlight_timer(void) | |||
77 | "60s", "90s"}; | 83 | "60s", "90s"}; |
78 | set_option("[Backlight]", &global_settings.backlight, names, 19 ); | 84 | set_option("[Backlight]", &global_settings.backlight, names, 19 ); |
79 | backlight_time(global_settings.backlight); | 85 | backlight_time(global_settings.backlight); |
86 | return MENU_OK; | ||
80 | } | 87 | } |
81 | 88 | ||
82 | static void scroll_speed(void) | 89 | static Menu scroll_speed(void) |
83 | { | 90 | { |
84 | set_int("Scroll speed indicator...", "", &global_settings.scroll_speed, | 91 | set_int("Scroll speed indicator...", "", &global_settings.scroll_speed, |
85 | &lcd_scroll_speed, 1, 1, 20 ); | 92 | &lcd_scroll_speed, 1, 1, 20 ); |
93 | return MENU_OK; | ||
86 | } | 94 | } |
87 | 95 | ||
88 | static void wps_set(void) | 96 | static Menu wps_set(void) |
89 | { | 97 | { |
90 | #ifdef HAVE_LCD_BITMAP | 98 | #ifdef HAVE_LCD_BITMAP |
91 | char* names[] = { "ID3 Tags", "File ", "Parse " }; | 99 | char* names[] = { "ID3 Tags", "File ", "Parse " }; |
@@ -102,18 +110,20 @@ static void wps_set(void) | |||
102 | #endif | 110 | #endif |
103 | 111 | ||
104 | #endif | 112 | #endif |
113 | return MENU_OK; | ||
105 | } | 114 | } |
106 | 115 | ||
107 | #ifdef HAVE_CHARGE_CTRL | 116 | #ifdef HAVE_CHARGE_CTRL |
108 | static void deep_discharge(void) | 117 | static Menu deep_discharge(void) |
109 | { | 118 | { |
110 | set_bool( "[Deep discharge]", &global_settings.discharge ); | 119 | set_bool( "[Deep discharge]", &global_settings.discharge ); |
111 | charge_restart_level = global_settings.discharge ? CHARGE_RESTART_LO : CHARGE_RESTART_HI; | 120 | charge_restart_level = global_settings.discharge ? CHARGE_RESTART_LO : CHARGE_RESTART_HI; |
121 | return MENU_OK; | ||
112 | } | 122 | } |
113 | #endif | 123 | #endif |
114 | 124 | ||
115 | #ifdef HAVE_RTC | 125 | #ifdef HAVE_RTC |
116 | static void timedate_set(void) | 126 | static Menu timedate_set(void) |
117 | { | 127 | { |
118 | int timedate[7]; /* hour,minute,second,year,month,day,dayofweek */ | 128 | int timedate[7]; /* hour,minute,second,year,month,day,dayofweek */ |
119 | 129 | ||
@@ -150,24 +160,28 @@ static void timedate_set(void) | |||
150 | rtc_write(0x04, timedate[6] | (rtc_read(0x04) & 0xf8)); /* dayofweek */ | 160 | rtc_write(0x04, timedate[6] | (rtc_read(0x04) & 0xf8)); /* dayofweek */ |
151 | rtc_write(0x00, 0x00); /* 0.1 + 0.01 seconds */ | 161 | rtc_write(0x00, 0x00); /* 0.1 + 0.01 seconds */ |
152 | } | 162 | } |
163 | return MENU_OK; | ||
153 | } | 164 | } |
154 | #endif | 165 | #endif |
155 | 166 | ||
156 | static void ff_rewind(void) | 167 | static Menu ff_rewind(void) |
157 | { | 168 | { |
158 | set_int("[FF/Rewind Step Size]", "s", &global_settings.ff_rewind, | 169 | set_int("[FF/Rewind Step Size]", "s", &global_settings.ff_rewind, |
159 | NULL, 1, 1, 999 ); | 170 | NULL, 1, 1, 999 ); |
171 | return MENU_OK; | ||
160 | } | 172 | } |
161 | 173 | ||
162 | void settings_menu(void) | 174 | Menu settings_menu(void) |
163 | { | 175 | { |
164 | int m; | 176 | int m; |
177 | Menu result; | ||
178 | |||
165 | struct menu_items items[] = { | 179 | struct menu_items items[] = { |
166 | { "Shuffle", shuffle }, | 180 | { "Shuffle", shuffle }, |
167 | { "MP3/M3U filter", mp3_filter }, | 181 | { "MP3/M3U filter", mp3_filter }, |
168 | { "Sort mode", sort_case }, | 182 | { "Sort mode", sort_case }, |
169 | { "Backlight Timer", backlight_timer }, | 183 | { "Backlight Timer", backlight_timer }, |
170 | { "Contrast", contrast }, | 184 | { "Contrast", contrast }, |
171 | { "Scroll speed", scroll_speed }, | 185 | { "Scroll speed", scroll_speed }, |
172 | { "While Playing", wps_set }, | 186 | { "While Playing", wps_set }, |
173 | #ifdef HAVE_CHARGE_CTRL | 187 | #ifdef HAVE_CHARGE_CTRL |
@@ -183,7 +197,7 @@ void settings_menu(void) | |||
183 | bool old_shuffle = global_settings.playlist_shuffle; | 197 | bool old_shuffle = global_settings.playlist_shuffle; |
184 | 198 | ||
185 | m=menu_init( items, sizeof items / sizeof(struct menu_items) ); | 199 | m=menu_init( items, sizeof items / sizeof(struct menu_items) ); |
186 | menu_run(m); | 200 | result = menu_run(m); |
187 | menu_exit(m); | 201 | menu_exit(m); |
188 | 202 | ||
189 | if (old_shuffle != global_settings.playlist_shuffle) | 203 | if (old_shuffle != global_settings.playlist_shuffle) |
@@ -197,4 +211,5 @@ void settings_menu(void) | |||
197 | sort_playlist(); | 211 | sort_playlist(); |
198 | } | 212 | } |
199 | } | 213 | } |
214 | return result; | ||
200 | } | 215 | } |
diff --git a/apps/settings_menu.h b/apps/settings_menu.h index 00227c08fa..19cffaccae 100644 --- a/apps/settings_menu.h +++ b/apps/settings_menu.h | |||
@@ -19,6 +19,8 @@ | |||
19 | #ifndef _SETTINGS_MENU_H | 19 | #ifndef _SETTINGS_MENU_H |
20 | #define _SETTINGS_MENU_H | 20 | #define _SETTINGS_MENU_H |
21 | 21 | ||
22 | void settings_menu(void); | 22 | #include "menu.h" |
23 | |||
24 | Menu settings_menu(void); | ||
23 | 25 | ||
24 | #endif | 26 | #endif |
diff --git a/apps/sound_menu.c b/apps/sound_menu.c index 63873ff0f8..24da3f5555 100644 --- a/apps/sound_menu.c +++ b/apps/sound_menu.c | |||
@@ -145,48 +145,56 @@ void set_sound(char* string, | |||
145 | lcd_stop_scroll(); | 145 | lcd_stop_scroll(); |
146 | } | 146 | } |
147 | 147 | ||
148 | static void volume(void) | 148 | static Menu volume(void) |
149 | { | 149 | { |
150 | set_sound("Volume", &global_settings.volume, SOUND_VOLUME); | 150 | set_sound("Volume", &global_settings.volume, SOUND_VOLUME); |
151 | return MENU_OK; | ||
151 | } | 152 | } |
152 | 153 | ||
153 | static void balance(void) | 154 | static Menu balance(void) |
154 | { | 155 | { |
155 | set_sound("Balance", &global_settings.balance, SOUND_BALANCE); | 156 | set_sound("Balance", &global_settings.balance, SOUND_BALANCE); |
157 | return MENU_OK; | ||
156 | } | 158 | } |
157 | 159 | ||
158 | static void bass(void) | 160 | static Menu bass(void) |
159 | { | 161 | { |
160 | set_sound("Bass", &global_settings.bass, SOUND_BASS); | 162 | set_sound("Bass", &global_settings.bass, SOUND_BASS); |
163 | return MENU_OK; | ||
161 | }; | 164 | }; |
162 | 165 | ||
163 | static void treble(void) | 166 | static Menu treble(void) |
164 | { | 167 | { |
165 | set_sound("Treble", &global_settings.treble, SOUND_TREBLE); | 168 | set_sound("Treble", &global_settings.treble, SOUND_TREBLE); |
169 | return MENU_OK; | ||
166 | } | 170 | } |
167 | 171 | ||
168 | #ifdef HAVE_MAS3587F | 172 | #ifdef HAVE_MAS3587F |
169 | static void loudness(void) | 173 | static Menu loudness(void) |
170 | { | 174 | { |
171 | set_sound("Loudness", &global_settings.loudness, SOUND_LOUDNESS); | 175 | set_sound("Loudness", &global_settings.loudness, SOUND_LOUDNESS); |
176 | return MENU_OK; | ||
172 | }; | 177 | }; |
173 | 178 | ||
174 | static void bass_boost(void) | 179 | static Menu bass_boost(void) |
175 | { | 180 | { |
176 | set_sound("Bass boost", &global_settings.bass_boost, SOUND_SUPERBASS); | 181 | set_sound("Bass boost", &global_settings.bass_boost, SOUND_SUPERBASS); |
182 | return MENU_OK; | ||
177 | }; | 183 | }; |
178 | 184 | ||
179 | static void avc(void) | 185 | static Menu avc(void) |
180 | { | 186 | { |
181 | char* names[] = { "off", "2s ", "4s ", "8s " }; | 187 | char* names[] = { "off", "2s ", "4s ", "8s " }; |
182 | set_option("[AV decay time]", &global_settings.avc, names, 4 ); | 188 | set_option("[AV decay time]", &global_settings.avc, names, 4 ); |
183 | mpeg_sound_set(SOUND_AVC, global_settings.avc); | 189 | mpeg_sound_set(SOUND_AVC, global_settings.avc); |
190 | return MENU_OK; | ||
184 | } | 191 | } |
185 | #endif /* ARCHOS_RECORDER */ | 192 | #endif /* ARCHOS_RECORDER */ |
186 | 193 | ||
187 | void sound_menu(void) | 194 | Menu sound_menu(void) |
188 | { | 195 | { |
189 | int m; | 196 | int m; |
197 | Menu result; | ||
190 | struct menu_items items[] = { | 198 | struct menu_items items[] = { |
191 | { "Volume", volume }, | 199 | { "Volume", volume }, |
192 | { "Bass", bass }, | 200 | { "Bass", bass }, |
@@ -200,6 +208,8 @@ void sound_menu(void) | |||
200 | }; | 208 | }; |
201 | 209 | ||
202 | m=menu_init( items, sizeof items / sizeof(struct menu_items) ); | 210 | m=menu_init( items, sizeof items / sizeof(struct menu_items) ); |
203 | menu_run(m); | 211 | result = menu_run(m); |
204 | menu_exit(m); | 212 | menu_exit(m); |
213 | |||
214 | return result; | ||
205 | } | 215 | } |
diff --git a/apps/sound_menu.h b/apps/sound_menu.h index db40c120aa..27e9c5efa3 100644 --- a/apps/sound_menu.h +++ b/apps/sound_menu.h | |||
@@ -19,6 +19,8 @@ | |||
19 | #ifndef _SOUND_MENU_H | 19 | #ifndef _SOUND_MENU_H |
20 | #define _SOUND_MENU_H | 20 | #define _SOUND_MENU_H |
21 | 21 | ||
22 | void sound_menu(void); | 22 | #include "menu.h" |
23 | |||
24 | Menu sound_menu(void); | ||
23 | 25 | ||
24 | #endif | 26 | #endif |
diff --git a/apps/tree.c b/apps/tree.c index 8718252ac5..0c4e26ab8e 100644 --- a/apps/tree.c +++ b/apps/tree.c | |||
@@ -640,13 +640,15 @@ bool dirbrowse(char *root) | |||
640 | bool lastfilter = global_settings.mp3filter; | 640 | bool lastfilter = global_settings.mp3filter; |
641 | bool lastsortcase = global_settings.sort_case; | 641 | bool lastsortcase = global_settings.sort_case; |
642 | bool show_hidden_files = global_settings.show_hidden_files; | 642 | bool show_hidden_files = global_settings.show_hidden_files; |
643 | Menu result; | ||
643 | 644 | ||
644 | lcd_stop_scroll(); | 645 | lcd_stop_scroll(); |
645 | main_menu(); | 646 | result = main_menu(); |
646 | /* do we need to rescan dir? */ | 647 | /* do we need to rescan dir? */ |
647 | if ( lastfilter != global_settings.mp3filter || | 648 | if (result == MENU_REFRESH_DIR || |
648 | lastsortcase != global_settings.sort_case || | 649 | lastfilter != global_settings.mp3filter || |
649 | show_hidden_files != global_settings.show_hidden_files) | 650 | lastsortcase != global_settings.sort_case || |
651 | show_hidden_files != global_settings.show_hidden_files) | ||
650 | lastdir[0] = 0; | 652 | lastdir[0] = 0; |
651 | restore = true; | 653 | restore = true; |
652 | break; | 654 | break; |