summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/bookmark.c37
-rw-r--r--apps/debug_menu.c10
-rw-r--r--apps/main_menu.c7
-rw-r--r--apps/menu.c11
-rw-r--r--apps/misc.c11
-rw-r--r--apps/misc.h1
-rw-r--r--apps/playlist_viewer.c15
-rw-r--r--apps/recorder/keyboard.c18
-rw-r--r--apps/recorder/radio.c6
-rw-r--r--apps/recorder/recording.c28
-rw-r--r--apps/screens.c30
-rw-r--r--apps/settings.c15
-rw-r--r--apps/settings_menu.c11
-rw-r--r--apps/sound_menu.c12
-rw-r--r--apps/tree.c30
-rw-r--r--apps/wps.c49
16 files changed, 169 insertions, 122 deletions
diff --git a/apps/bookmark.c b/apps/bookmark.c
index 993ea7e0ca..8d60de28fe 100644
--- a/apps/bookmark.c
+++ b/apps/bookmark.c
@@ -45,6 +45,7 @@
45#include "kernel.h" 45#include "kernel.h"
46#include "sprintf.h" 46#include "sprintf.h"
47#include "talk.h" 47#include "talk.h"
48#include "misc.h"
48 49
49#define MAX_BOOKMARKS 10 50#define MAX_BOOKMARKS 10
50#define MAX_BOOKMARK_SIZE 350 51#define MAX_BOOKMARK_SIZE 350
@@ -277,12 +278,10 @@ bool bookmark_autobookmark(void)
277 done = true; 278 done = true;
278 break; 279 break;
279 280
280 case SYS_USB_CONNECTED: 281 default:
281 usb_screen(); 282 if(default_event_handler(key) == SYS_USB_CONNECTED)
282#ifdef HAVE_LCD_CHARCELLS 283 return false;
283 status_set_param(true); 284 break;
284#endif
285 return false;
286 } 285 }
287 } 286 }
288 return true; 287 return true;
@@ -511,25 +510,23 @@ bool bookmark_autoload(char* file)
511 510
512 while(!done) 511 while(!done)
513 { 512 {
513 button_clear_queue();
514
514 /* Wait for a key to be pushed */ 515 /* Wait for a key to be pushed */
515 while (button_get(false)); /* clear button queue */
516 key = button_get(true); 516 key = button_get(true);
517 switch(key) 517 switch(key)
518 { 518 {
519 default:
520 return false;
521#ifdef HAVE_LCD_BITMAP 519#ifdef HAVE_LCD_BITMAP
522 case BUTTON_DOWN: 520 case BUTTON_DOWN:
523 return bookmark_load(global_bookmark_file_name, false); 521 return bookmark_load(global_bookmark_file_name, false);
524#endif 522#endif
525 case BUTTON_PLAY: 523 case BUTTON_PLAY:
526 return bookmark_load(global_bookmark_file_name, true); 524 return bookmark_load(global_bookmark_file_name, true);
527 case SYS_USB_CONNECTED: 525
528 usb_screen(); 526 default:
529#ifdef HAVE_LCD_CHARCELLS 527 if(default_event_handler(key) == SYS_USB_CONNECTED)
530 status_set_param(true); 528 return true;
531#endif 529 return false;
532 return true;
533 } 530 }
534 } 531 }
535 return true; 532 return true;
@@ -690,12 +687,6 @@ static char* select_bookmark(char* bookmark_file_name)
690 while (button_get(false)); /* clear button queue */ 687 while (button_get(false)); /* clear button queue */
691 break; 688 break;
692 689
693 case SYS_USB_CONNECTED:
694 usb_screen();
695#ifdef HAVE_LCD_CHARCELLS
696 status_set_param(true);
697#endif
698 return NULL;
699#ifdef HAVE_RECORDER_KEYPAD 690#ifdef HAVE_RECORDER_KEYPAD
700 case BUTTON_UP: 691 case BUTTON_UP:
701 bookmark_id--; 692 bookmark_id--;
@@ -726,6 +717,10 @@ static char* select_bookmark(char* bookmark_file_name)
726 case BUTTON_STOP: 717 case BUTTON_STOP:
727 return NULL; 718 return NULL;
728#endif 719#endif
720 default:
721 if(default_event_handler(key) == SYS_USB_CONNECTED)
722 return NULL;
723 break;
729 } 724 }
730 } 725 }
731 726
diff --git a/apps/debug_menu.c b/apps/debug_menu.c
index b89b4e4ce3..f7a96dcd3d 100644
--- a/apps/debug_menu.c
+++ b/apps/debug_menu.c
@@ -46,6 +46,7 @@
46#include "dir.h" 46#include "dir.h"
47#include "panic.h" 47#include "panic.h"
48#include "screens.h" 48#include "screens.h"
49#include "misc.h"
49#ifdef HAVE_LCD_BITMAP 50#ifdef HAVE_LCD_BITMAP
50#include "widgets.h" 51#include "widgets.h"
51#include "peakmeter.h" 52#include "peakmeter.h"
@@ -520,10 +521,11 @@ bool dbg_partitions(void)
520 if (partition > 3) 521 if (partition > 3)
521 partition = 0; 522 partition = 0;
522 break; 523 break;
523 524
524 case SYS_USB_CONNECTED: 525 default:
525 usb_screen(); 526 if(default_event_handler(button) == SYS_USB_CONNECTED)
526 return true; 527 return true;
528 break;
527 } 529 }
528 } 530 }
529 return false; 531 return false;
diff --git a/apps/main_menu.c b/apps/main_menu.c
index 991a1681de..b3c70a2c13 100644
--- a/apps/main_menu.c
+++ b/apps/main_menu.c
@@ -249,9 +249,10 @@ bool show_info(void)
249 state = 1; 249 state = 1;
250 break; 250 break;
251#endif 251#endif
252 case SYS_USB_CONNECTED: 252 default:
253 usb_screen(); 253 if(default_event_handler(key) == SYS_USB_CONNECTED)
254 return true; 254 return true;
255 break;
255 } 256 }
256 } 257 }
257 258
diff --git a/apps/menu.c b/apps/menu.c
index 72e4289fc5..5e8a51200a 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -34,6 +34,7 @@
34#include "screens.h" 34#include "screens.h"
35#include "talk.h" 35#include "talk.h"
36#include "lang.h" 36#include "lang.h"
37#include "misc.h"
37 38
38#ifdef HAVE_LCD_BITMAP 39#ifdef HAVE_LCD_BITMAP
39#include "icons.h" 40#include "icons.h"
@@ -373,12 +374,10 @@ int menu_show(int m)
373 exit = true; 374 exit = true;
374 break; 375 break;
375 376
376 case SYS_USB_CONNECTED: 377 default:
377 usb_screen(); 378 if(default_event_handler(key) == SYS_USB_CONNECTED)
378#ifdef HAVE_LCD_CHARCELLS 379 return MENU_ATTACHED_USB;
379 status_set_param(false); 380 break;
380#endif
381 return MENU_ATTACHED_USB;
382 } 381 }
383 382
384 status_draw(false); 383 status_draw(false);
diff --git a/apps/misc.c b/apps/misc.c
index 16719ad13a..6d45a64023 100644
--- a/apps/misc.c
+++ b/apps/misc.c
@@ -232,3 +232,14 @@ bool clean_shutdown(void)
232#endif 232#endif
233 return false; 233 return false;
234} 234}
235
236int default_event_handler(int button)
237{
238 switch(button)
239 {
240 case SYS_USB_CONNECTED:
241 usb_screen();
242 return SYS_USB_CONNECTED;
243 }
244 return 0;
245}
diff --git a/apps/misc.h b/apps/misc.h
index 7815bd2183..097b6cce60 100644
--- a/apps/misc.h
+++ b/apps/misc.h
@@ -40,5 +40,6 @@ void screen_dump(void);
40 40
41bool settings_parseline(char* line, char** name, char** value); 41bool settings_parseline(char* line, char** name, char** value);
42bool clean_shutdown(void); 42bool clean_shutdown(void);
43int default_event_handler(int button);
43 44
44#endif 45#endif
diff --git a/apps/playlist_viewer.c b/apps/playlist_viewer.c
index 4b9a3e3752..e5d95495fa 100644
--- a/apps/playlist_viewer.c
+++ b/apps/playlist_viewer.c
@@ -32,6 +32,7 @@
32#include "tree.h" 32#include "tree.h"
33#include "onplay.h" 33#include "onplay.h"
34#include "talk.h" 34#include "talk.h"
35#include "misc.h"
35 36
36#ifdef HAVE_LCD_BITMAP 37#ifdef HAVE_LCD_BITMAP
37#include "widgets.h" 38#include "widgets.h"
@@ -1045,15 +1046,17 @@ bool playlist_viewer_ex(char* filename)
1045 update = true; 1046 update = true;
1046 break; 1047 break;
1047 1048
1048 case SYS_USB_CONNECTED:
1049 usb_screen();
1050 ret = true;
1051 goto exit;
1052 break;
1053
1054 case BUTTON_NONE: 1049 case BUTTON_NONE:
1055 status_draw(false); 1050 status_draw(false);
1056 break; 1051 break;
1052
1053 default:
1054 if(default_event_handler(button) == SYS_USB_CONNECTED)
1055 {
1056 ret = true;
1057 goto exit;
1058 }
1059 break;
1057 } 1060 }
1058 1061
1059 if (update && !exit) 1062 if (update && !exit)
diff --git a/apps/recorder/keyboard.c b/apps/recorder/keyboard.c
index 32a1d8b735..0331a5711d 100644
--- a/apps/recorder/keyboard.c
+++ b/apps/recorder/keyboard.c
@@ -28,6 +28,7 @@
28#include "status.h" 28#include "status.h"
29#include "talk.h" 29#include "talk.h"
30#include "settings.h" 30#include "settings.h"
31#include "misc.h"
31 32
32#define KEYBOARD_LINES 4 33#define KEYBOARD_LINES 4
33#define KEYBOARD_PAGES 3 34#define KEYBOARD_PAGES 3
@@ -89,6 +90,7 @@ int kbd_input(char* text, int buflen)
89 char outline[256]; 90 char outline[256];
90 char c = 0; 91 char c = 0;
91 struct font* font = font_get(FONT_SYSFIXED); 92 struct font* font = font_get(FONT_SYSFIXED);
93 int button;
92 94
93 lcd_setfont(FONT_SYSFIXED); 95 lcd_setfont(FONT_SYSFIXED);
94 font_w = font->maxwidth; 96 font_w = font->maxwidth;
@@ -193,8 +195,9 @@ int kbd_input(char* text, int buflen)
193 195
194 /* The default action is to redraw */ 196 /* The default action is to redraw */
195 redraw = true; 197 redraw = true;
196 198
197 switch ( button_get_w_tmo(HZ/2) ) { 199 button = button_get_w_tmo(HZ/2);
200 switch ( button ) {
198 201
199 case BUTTON_OFF: 202 case BUTTON_OFF:
200 /* abort */ 203 /* abort */
@@ -309,15 +312,16 @@ int kbd_input(char* text, int buflen)
309 kbd_spellchar(text[editpos]); 312 kbd_spellchar(text[editpos]);
310 break; 313 break;
311 314
312 case SYS_USB_CONNECTED:
313 usb_screen();
314 lcd_setfont(FONT_SYSFIXED);
315 break;
316
317 case BUTTON_NONE: 315 case BUTTON_NONE:
318 status_draw(false); 316 status_draw(false);
319 redraw = false; 317 redraw = false;
320 break; 318 break;
319
320 default:
321 if(default_event_handler(button) == SYS_USB_CONNECTED)
322 lcd_setfont(FONT_SYSFIXED);
323 break;
324
321 } 325 }
322 } 326 }
323 lcd_setfont(FONT_UI); 327 lcd_setfont(FONT_UI);
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c
index 36847236e1..e26ac5bdc8 100644
--- a/apps/recorder/radio.c
+++ b/apps/recorder/radio.c
@@ -416,13 +416,17 @@ bool radio_screen(void)
416 /* Only accept USB connection when not recording */ 416 /* Only accept USB connection when not recording */
417 if(mpeg_status() != MPEG_STATUS_RECORD) 417 if(mpeg_status() != MPEG_STATUS_RECORD)
418 { 418 {
419 usb_screen(); 419 default_event_handler(SYS_USB_CONNECTED);
420 fmradio_set_status(0); 420 fmradio_set_status(0);
421 screen_freeze = true; /* Cosmetic: makes sure the 421 screen_freeze = true; /* Cosmetic: makes sure the
422 radio screen doesn't redraw */ 422 radio screen doesn't redraw */
423 done = true; 423 done = true;
424 } 424 }
425 break; 425 break;
426
427 default:
428 default_event_handler(button);
429 break;
426 } 430 }
427 431
428 peak_meter_peek(); 432 peak_meter_peek();
diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c
index a077c957a7..242351a0d6 100644
--- a/apps/recorder/recording.c
+++ b/apps/recorder/recording.c
@@ -437,11 +437,15 @@ bool recording_screen(void)
437 /* Only accept USB connection when not recording */ 437 /* Only accept USB connection when not recording */
438 if(mpeg_status() != MPEG_STATUS_RECORD) 438 if(mpeg_status() != MPEG_STATUS_RECORD)
439 { 439 {
440 usb_screen(); 440 default_event_handler(SYS_USB_CONNECTED);
441 done = true; 441 done = true;
442 been_in_usb_mode = true; 442 been_in_usb_mode = true;
443 } 443 }
444 break; 444 break;
445
446 default:
447 default_event_handler(button);
448 break;
445 } 449 }
446 450
447 peak_meter_peek(); 451 peak_meter_peek();
@@ -622,6 +626,7 @@ bool f2_rec_screen(void)
622 bool used = false; 626 bool used = false;
623 int w, h; 627 int w, h;
624 char buf[32]; 628 char buf[32];
629 int button;
625 630
626 lcd_setfont(FONT_SYSFIXED); 631 lcd_setfont(FONT_SYSFIXED);
627 lcd_getstringsize("A",&w,&h); 632 lcd_getstringsize("A",&w,&h);
@@ -671,7 +676,8 @@ bool f2_rec_screen(void)
671 676
672 lcd_update(); 677 lcd_update();
673 678
674 switch (button_get(true)) { 679 button = button_get(true);
680 switch (button) {
675 case BUTTON_LEFT: 681 case BUTTON_LEFT:
676 case BUTTON_F2 | BUTTON_LEFT: 682 case BUTTON_F2 | BUTTON_LEFT:
677 global_settings.rec_quality++; 683 global_settings.rec_quality++;
@@ -706,9 +712,10 @@ bool f2_rec_screen(void)
706 used = true; 712 used = true;
707 break; 713 break;
708 714
709 case SYS_USB_CONNECTED: 715 default:
710 usb_screen(); 716 if(default_event_handler(button) == SYS_USB_CONNECTED)
711 return true; 717 return true;
718 break;
712 } 719 }
713 } 720 }
714 721
@@ -735,6 +742,7 @@ bool f3_rec_screen(void)
735 bool exit = false; 742 bool exit = false;
736 bool used = false; 743 bool used = false;
737 int w, h; 744 int w, h;
745 int button;
738 char *src_str[] = 746 char *src_str[] =
739 { 747 {
740 str(LANG_RECORDING_SRC_MIC), 748 str(LANG_RECORDING_SRC_MIC),
@@ -760,7 +768,8 @@ bool f3_rec_screen(void)
760 768
761 lcd_update(); 769 lcd_update();
762 770
763 switch (button_get(true)) { 771 button = button_get(true);
772 switch (button) {
764 case BUTTON_LEFT: 773 case BUTTON_LEFT:
765 case BUTTON_F3 | BUTTON_LEFT: 774 case BUTTON_F3 | BUTTON_LEFT:
766 global_settings.rec_source++; 775 global_settings.rec_source++;
@@ -779,9 +788,10 @@ bool f3_rec_screen(void)
779 used = true; 788 used = true;
780 break; 789 break;
781 790
782 case SYS_USB_CONNECTED: 791 default:
783 usb_screen(); 792 if(default_event_handler(button) == SYS_USB_CONNECTED)
784 return true; 793 return true;
794 break;
785 } 795 }
786 } 796 }
787 797
diff --git a/apps/screens.c b/apps/screens.c
index 4d48372890..80b8484e35 100644
--- a/apps/screens.c
+++ b/apps/screens.c
@@ -288,6 +288,7 @@ int charging_screen(void)
288 2 if USB was connected */ 288 2 if USB was connected */
289int on_screen(void) 289int on_screen(void)
290{ 290{
291 int button;
291 static int pitch = 1000; 292 static int pitch = 1000;
292 bool exit = false; 293 bool exit = false;
293 bool used = false; 294 bool used = false;
@@ -329,7 +330,8 @@ int on_screen(void)
329 330
330 /* use lastbutton, so the main loop can decide whether to 331 /* use lastbutton, so the main loop can decide whether to
331 exit to browser or not */ 332 exit to browser or not */
332 switch (button_get(true)) { 333 button = button_get(true);
334 switch (button) {
333 case BUTTON_UP: 335 case BUTTON_UP:
334 case BUTTON_ON | BUTTON_UP: 336 case BUTTON_ON | BUTTON_UP:
335 case BUTTON_ON | BUTTON_UP | BUTTON_REPEAT: 337 case BUTTON_ON | BUTTON_UP | BUTTON_REPEAT:
@@ -407,9 +409,10 @@ int on_screen(void)
407 used = true; 409 used = true;
408 break; 410 break;
409 411
410 case SYS_USB_CONNECTED: 412 default:
411 usb_screen(); 413 if(default_event_handler(button) == SYS_USB_CONNECTED)
412 return 2; 414 return 2;
415 break;
413 } 416 }
414 } 417 }
415 418
@@ -606,10 +609,11 @@ bool quick_screen(int context, int button)
606 609
607 case BUTTON_OFF | BUTTON_REPEAT: 610 case BUTTON_OFF | BUTTON_REPEAT:
608 return false; 611 return false;
609 612
610 case SYS_USB_CONNECTED: 613 default:
611 usb_screen(); 614 if(default_event_handler(key) == SYS_USB_CONNECTED)
612 return true; 615 return true;
616 break;
613 } 617 }
614 } 618 }
615 619
@@ -1082,9 +1086,10 @@ bool set_time_screen(char* string, struct tm *tm)
1082 tm->tm_year = -1; 1086 tm->tm_year = -1;
1083 break; 1087 break;
1084 1088
1085 case SYS_USB_CONNECTED: 1089 default:
1086 usb_screen(); 1090 if (default_event_handler(button) == SYS_USB_CONNECTED)
1087 return true; 1091 return true;
1092 break;
1088 } 1093 }
1089 } 1094 }
1090 1095
@@ -1112,6 +1117,9 @@ bool shutdown_screen(void)
1112 break; 1117 break;
1113 1118
1114 default: 1119 default:
1120 if(default_event_handler(button) == SYS_USB_CONNECTED)
1121 return true;
1122
1115 /* Return if any other button was pushed, or if there 1123 /* Return if any other button was pushed, or if there
1116 was a timeout. We ignore RELEASE events, since we may 1124 was a timeout. We ignore RELEASE events, since we may
1117 have been called by a button down event, and the user might 1125 have been called by a button down event, and the user might
diff --git a/apps/settings.c b/apps/settings.c
index 31d9232851..83d69710df 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -1362,10 +1362,10 @@ bool set_int(char* string,
1362 done = true; 1362 done = true;
1363 break; 1363 break;
1364 1364
1365 case SYS_USB_CONNECTED: 1365 default:
1366 usb_screen(); 1366 if(default_event_handler(button) == SYS_USB_CONNECTED)
1367 return true; 1367 return true;
1368 1368 break;
1369 } 1369 }
1370 if(*variable > max ) 1370 if(*variable > max )
1371 *variable = max; 1371 *variable = max;
@@ -1492,9 +1492,10 @@ bool set_option(char* string, void* variable, enum optiontype type,
1492 done = true; 1492 done = true;
1493 break; 1493 break;
1494 1494
1495 case SYS_USB_CONNECTED: 1495 default:
1496 usb_screen(); 1496 if(default_event_handler(button) == SYS_USB_CONNECTED)
1497 return true; 1497 return true;
1498 break;
1498 } 1499 }
1499 1500
1500 if ( function && button != BUTTON_NONE) { 1501 if ( function && button != BUTTON_NONE) {
diff --git a/apps/settings_menu.c b/apps/settings_menu.c
index 5da733c1df..1141361281 100644
--- a/apps/settings_menu.c
+++ b/apps/settings_menu.c
@@ -43,6 +43,7 @@
43#include "screens.h" 43#include "screens.h"
44#include "talk.h" 44#include "talk.h"
45#include "timefuncs.h" 45#include "timefuncs.h"
46#include "misc.h"
46#ifdef HAVE_LCD_BITMAP 47#ifdef HAVE_LCD_BITMAP
47#include "peakmeter.h" 48#include "peakmeter.h"
48#endif 49#endif
@@ -1037,6 +1038,7 @@ static bool reset_settings(void)
1037{ 1038{
1038 bool done=false; 1039 bool done=false;
1039 int line; 1040 int line;
1041 int button;
1040 1042
1041 lcd_clear_display(); 1043 lcd_clear_display();
1042 1044
@@ -1052,7 +1054,8 @@ static bool reset_settings(void)
1052 lcd_update(); 1054 lcd_update();
1053 1055
1054 while(!done) { 1056 while(!done) {
1055 switch(button_get(true)) { 1057 button = button_get(true);
1058 switch(button) {
1056 case BUTTON_PLAY: 1059 case BUTTON_PLAY:
1057 settings_reset(); 1060 settings_reset();
1058 settings_apply(); 1061 settings_apply();
@@ -1071,9 +1074,9 @@ static bool reset_settings(void)
1071 done = true; 1074 done = true;
1072 break; 1075 break;
1073 1076
1074 case SYS_USB_CONNECTED: 1077 default:
1075 usb_screen(); 1078 if(default_event_handler(button) == SYS_USB_CONNECTED)
1076 return true; 1079 return true;
1077 } 1080 }
1078 } 1081 }
1079 1082
diff --git a/apps/sound_menu.c b/apps/sound_menu.c
index 4c9087e5f5..6f62ce2417 100644
--- a/apps/sound_menu.c
+++ b/apps/sound_menu.c
@@ -33,6 +33,7 @@
33#include "lang.h" 33#include "lang.h"
34#include "sprintf.h" 34#include "sprintf.h"
35#include "talk.h" 35#include "talk.h"
36#include "misc.h"
36 37
37static char *fmt[] = 38static char *fmt[] =
38{ 39{
@@ -56,6 +57,7 @@ bool set_sound(char* string,
56 char str[32]; 57 char str[32];
57 int talkunit = UNIT_INT; 58 int talkunit = UNIT_INT;
58 int steps; 59 int steps;
60 int button;
59 61
60 unit = mpeg_sound_unit(setting); 62 unit = mpeg_sound_unit(setting);
61 numdec = mpeg_sound_numdecimals(setting); 63 numdec = mpeg_sound_numdecimals(setting);
@@ -99,7 +101,8 @@ bool set_sound(char* string,
99 lcd_update(); 101 lcd_update();
100 102
101 changed = false; 103 changed = false;
102 switch( button_get_w_tmo(HZ/2) ) { 104 button = button_get_w_tmo(HZ/2);
105 switch( button ) {
103#ifdef HAVE_RECORDER_KEYPAD 106#ifdef HAVE_RECORDER_KEYPAD
104 case BUTTON_UP: 107 case BUTTON_UP:
105 case BUTTON_UP | BUTTON_REPEAT: 108 case BUTTON_UP | BUTTON_REPEAT:
@@ -136,9 +139,10 @@ bool set_sound(char* string,
136 done = true; 139 done = true;
137 break; 140 break;
138 141
139 case SYS_USB_CONNECTED: 142 default:
140 usb_screen(); 143 if(default_event_handler(button) == SYS_USB_CONNECTED)
141 return true; 144 return true;
145 break;
142 } 146 }
143 if (changed) { 147 if (changed) {
144 mpeg_sound_set(setting, *variable); 148 mpeg_sound_set(setting, *variable);
diff --git a/apps/tree.c b/apps/tree.c
index 72a2261024..9ce5a9c5f0 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -56,6 +56,7 @@
56#include "action.h" 56#include "action.h"
57#include "talk.h" 57#include "talk.h"
58#include "filetypes.h" 58#include "filetypes.h"
59#include "misc.h"
59 60
60#ifdef HAVE_LCD_BITMAP 61#ifdef HAVE_LCD_BITMAP
61#include "widgets.h" 62#include "widgets.h"
@@ -599,7 +600,7 @@ static bool ask_resume(bool ask_once)
599#endif 600#endif
600 601
601 if (usb_detect()) { 602 if (usb_detect()) {
602 usb_screen(); 603 default_event_handler(SYS_USB_CONNECTED);
603 return false; 604 return false;
604 } 605 }
605 606
@@ -635,13 +636,8 @@ static bool ask_resume(bool ask_once)
635 case BUTTON_ON | BUTTON_REPEAT: 636 case BUTTON_ON | BUTTON_REPEAT:
636 break; 637 break;
637#endif 638#endif
638
639 case SYS_USB_CONNECTED:
640 usb_screen();
641 stop = true;
642 break;
643
644 default: 639 default:
640 default_event_handler(button);
645 stop = true; 641 stop = true;
646 break; 642 break;
647 } 643 }
@@ -940,6 +936,7 @@ static bool dirbrowse(char *root, int *dirfilter)
940#ifndef SIMULATOR 936#ifndef SIMULATOR
941 if (boot_changed) { 937 if (boot_changed) {
942 bool stop = false; 938 bool stop = false;
939 int button;
943 940
944 lcd_clear_display(); 941 lcd_clear_display();
945 lcd_puts(0,0,str(LANG_BOOT_CHANGED)); 942 lcd_puts(0,0,str(LANG_BOOT_CHANGED));
@@ -950,18 +947,15 @@ static bool dirbrowse(char *root, int *dirfilter)
950 lcd_update(); 947 lcd_update();
951#endif 948#endif
952 while (!stop) { 949 while (!stop) {
953 switch (button_get(true)) { 950 button = button_get(true);
951 switch (button) {
954 case BUTTON_PLAY: 952 case BUTTON_PLAY:
955 rolo_load("/" BOOTFILE); 953 rolo_load("/" BOOTFILE);
956 stop = true; 954 stop = true;
957 break; 955 break;
958 956
959 case SYS_USB_CONNECTED:
960 usb_screen();
961 stop = true;
962 break;
963
964 default: 957 default:
958 default_event_handler(button);
965 stop = true; 959 stop = true;
966 break; 960 break;
967 } 961 }
@@ -1372,11 +1366,6 @@ static bool dirbrowse(char *root, int *dirfilter)
1372#endif 1366#endif
1373 break; 1367 break;
1374 1368
1375 case SYS_USB_CONNECTED:
1376 usb_screen();
1377 reload_root = true;
1378 break;
1379
1380 case BUTTON_NONE: 1369 case BUTTON_NONE:
1381 if (thumbnail_time != -1 && 1370 if (thumbnail_time != -1 &&
1382 TIME_AFTER(current_tick, thumbnail_time)) 1371 TIME_AFTER(current_tick, thumbnail_time))
@@ -1393,6 +1382,11 @@ static bool dirbrowse(char *root, int *dirfilter)
1393 } 1382 }
1394 status_draw(false); 1383 status_draw(false);
1395 break; 1384 break;
1385
1386 default:
1387 if(default_event_handler(button) == SYS_USB_CONNECTED)
1388 reload_root = true;
1389 break;
1396 } 1390 }
1397 1391
1398 if ( button ) 1392 if ( button )
diff --git a/apps/wps.c b/apps/wps.c
index 8943a4d2fb..86ce4b09c1 100644
--- a/apps/wps.c
+++ b/apps/wps.c
@@ -48,6 +48,8 @@
48#endif 48#endif
49#include "lang.h" 49#include "lang.h"
50#include "bookmark.h" 50#include "bookmark.h"
51#include "misc.h"
52
51#define FF_REWIND_MAX_PERCENT 3 /* cap ff/rewind step size at max % of file */ 53#define FF_REWIND_MAX_PERCENT 3 /* cap ff/rewind step size at max % of file */
52 /* 3% of 30min file == 54s step size */ 54 /* 3% of 30min file == 54s step size */
53#define MIN_FF_REWIND_STEP 500 55#define MIN_FF_REWIND_STEP 500
@@ -296,9 +298,9 @@ bool browse_id3(void)
296 exit = true; 298 exit = true;
297 break; 299 break;
298 300
299 case SYS_USB_CONNECTED: 301 default:
300 usb_screen(); 302 if(default_event_handler(button) == SYS_USB_CONNECTED)
301 return true; 303 return true;
302 break; 304 break;
303 } 305 }
304 } 306 }
@@ -419,11 +421,12 @@ static bool ffwd_rew(int button)
419 exit = true; 421 exit = true;
420 break; 422 break;
421 423
422 case SYS_USB_CONNECTED: 424 default:
423 status_set_ffmode(0); 425 if(default_event_handler(button) == SYS_USB_CONNECTED) {
424 usb_screen(); 426 status_set_ffmode(0);
425 usb = true; 427 usb = true;
426 exit = true; 428 exit = true;
429 }
427 break; 430 break;
428 } 431 }
429 if (!exit) 432 if (!exit)
@@ -511,10 +514,12 @@ static bool menu(void)
511 while (button_get(false)); /* clear button queue */ 514 while (button_get(false)); /* clear button queue */
512 break; 515 break;
513 516
514 case SYS_USB_CONNECTED: 517 default:
515 usb_screen(); 518 if(default_event_handler(button) == SYS_USB_CONNECTED) {
516 keys_locked = false; 519 keys_locked = false;
517 return true; 520 return true;
521 }
522 break;
518 } 523 }
519 524
520 if (keys_locked) { 525 if (keys_locked) {
@@ -754,19 +759,20 @@ int wps_show(void)
754 if (button && ignore_keyup) 759 if (button && ignore_keyup)
755 { 760 {
756 ignore_keyup = false; 761 ignore_keyup = false;
757 if (button & BUTTON_REL && button != SYS_USB_CONNECTED) 762 /* Negative events are system events */
763 if (button >= 0 && button & BUTTON_REL )
758 continue; 764 continue;
759 } 765 }
760 766
761 /* ignore non-remote buttons when keys are locked */ 767 /* ignore non-remote buttons when keys are locked */
762 if (keys_locked && 768 if (keys_locked &&
769 ! ((button < 0) ||
763#ifdef HAVE_RECORDER_KEYPAD 770#ifdef HAVE_RECORDER_KEYPAD
764 ! ((button & BUTTON_F1) || 771 (button & BUTTON_F1) ||
765#else 772#else
766 ! ((button & BUTTON_MENU) || 773 (button & BUTTON_MENU) ||
767#endif 774#endif
768 (button == BUTTON_NONE) || 775 (button == BUTTON_NONE)
769 (button == SYS_USB_CONNECTED)
770#ifdef BUTTON_REMOTE 776#ifdef BUTTON_REMOTE
771 || (button & BUTTON_REMOTE) 777 || (button & BUTTON_REMOTE)
772#endif 778#endif
@@ -970,13 +976,14 @@ int wps_show(void)
970 exit = true; 976 exit = true;
971 break; 977 break;
972 978
973 case SYS_USB_CONNECTED:
974 usb_screen();
975 return SYS_USB_CONNECTED;
976
977 case BUTTON_NONE: /* Timeout */ 979 case BUTTON_NONE: /* Timeout */
978 update_track = true; 980 update_track = true;
979 break; 981 break;
982
983 default:
984 if(default_event_handler(button) == SYS_USB_CONNECTED)
985 return SYS_USB_CONNECTED;
986 break;
980 } 987 }
981 988
982 if (update_track) 989 if (update_track)