diff options
-rw-r--r-- | apps/plugins/SOURCES | 9 | ||||
-rw-r--r-- | apps/plugins/battery_test.c | 34 | ||||
-rw-r--r-- | apps/plugins/jpeg.c | 13 | ||||
-rw-r--r-- | apps/plugins/metronome.c | 11 | ||||
-rw-r--r-- | apps/plugins/rockblox.c | 12 | ||||
-rw-r--r-- | apps/plugins/snow.c | 8 | ||||
-rw-r--r-- | apps/plugins/stopwatch.c | 71 | ||||
-rw-r--r-- | apps/plugins/video.c | 45 | ||||
-rw-r--r-- | apps/plugins/viewer.c | 273 |
9 files changed, 257 insertions, 219 deletions
diff --git a/apps/plugins/SOURCES b/apps/plugins/SOURCES index 494a4a631a..80a6fde2e0 100644 --- a/apps/plugins/SOURCES +++ b/apps/plugins/SOURCES | |||
@@ -1,4 +1,5 @@ | |||
1 | /* plugins common to both Player+Recorder model */ | 1 | /* plugins common to both Player+Recorder model */ |
2 | battery_test.c | ||
2 | favorites.c | 3 | favorites.c |
3 | firmware_flash.c | 4 | firmware_flash.c |
4 | helloworld.c | 5 | helloworld.c |
@@ -6,20 +7,16 @@ metronome.c | |||
6 | rockbox_flash.c | 7 | rockbox_flash.c |
7 | search.c | 8 | search.c |
8 | sort.c | 9 | sort.c |
9 | vbrfix.c | ||
10 | #if CONFIG_KEYPAD != ONDIO_PAD | ||
11 | /* gradually bring in the ones not working yet */ | ||
12 | battery_test.c | ||
13 | stopwatch.c | 10 | stopwatch.c |
11 | vbrfix.c | ||
14 | viewer.c | 12 | viewer.c |
15 | #endif /* #if CONFIG_KEYPAD != ONDIO_PAD */ | ||
16 | 13 | ||
17 | #ifdef HAVE_LCD_BITMAP /* recorder model only */ | 14 | #ifdef HAVE_LCD_BITMAP /* recorder model only */ |
18 | grayscale.c | 15 | grayscale.c |
19 | jpeg.c | 16 | jpeg.c |
20 | rockblox.c | 17 | rockblox.c |
21 | snow.c | 18 | snow.c |
22 | video.c | 19 | video.c |
23 | #if CONFIG_KEYPAD != ONDIO_PAD | 20 | #if CONFIG_KEYPAD != ONDIO_PAD |
24 | /* gradually bring in the ones not working yet */ | 21 | /* gradually bring in the ones not working yet */ |
25 | bounce.c | 22 | bounce.c |
diff --git a/apps/plugins/battery_test.c b/apps/plugins/battery_test.c index 04be9b0070..bc6e580dcc 100644 --- a/apps/plugins/battery_test.c +++ b/apps/plugins/battery_test.c | |||
@@ -29,6 +29,16 @@ | |||
29 | to watch. | 29 | to watch. |
30 | */ | 30 | */ |
31 | 31 | ||
32 | /* variable button definitions */ | ||
33 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
34 | #define BATTERY_TEST_QUIT BUTTON_ON | ||
35 | #define BATTERY_TEST_QUIT2 BUTTON_OFF | ||
36 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
37 | #define BATTERY_TEST_QUIT BUTTON_OFF | ||
38 | #elif CONFIG_KEYPAD == PLAYER_PAD | ||
39 | #define BATTERY_TEST_QUIT BUTTON_STOP | ||
40 | #endif | ||
41 | |||
32 | static struct plugin_api* rb; | 42 | static struct plugin_api* rb; |
33 | 43 | ||
34 | void* buffer; | 44 | void* buffer; |
@@ -94,19 +104,19 @@ enum plugin_status loop(void) | |||
94 | /* simulate 128kbit/s (16kbyte/s) playback duration */ | 104 | /* simulate 128kbit/s (16kbyte/s) playback duration */ |
95 | do { | 105 | do { |
96 | button = rb->button_get_w_tmo(HZ * (buffersize / 16384) - HZ*10); | 106 | button = rb->button_get_w_tmo(HZ * (buffersize / 16384) - HZ*10); |
97 | |||
98 | /* Check if we shall exit the plugin */ | ||
99 | if (button==BUTTON_ON || | ||
100 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
101 | button==BUTTON_OFF | ||
102 | #else | ||
103 | button==BUTTON_STOP | ||
104 | #endif | ||
105 | ) | ||
106 | return PLUGIN_OK; | ||
107 | 107 | ||
108 | if (rb->default_event_handler(button) == SYS_USB_CONNECTED) { | 108 | switch (button) { |
109 | return PLUGIN_USB_CONNECTED; | 109 | /* Check if we shall exit the plugin */ |
110 | case BATTERY_TEST_QUIT: | ||
111 | #ifdef BATTERY_TEST_QUIT2 | ||
112 | case BATTERY_TEST_QUIT2: | ||
113 | #endif | ||
114 | return PLUGIN_OK; | ||
115 | |||
116 | default: | ||
117 | if (rb->default_event_handler(button) == SYS_USB_CONNECTED) | ||
118 | return PLUGIN_USB_CONNECTED; | ||
119 | break; | ||
110 | } | 120 | } |
111 | } while (!(button&(BUTTON_REL|BUTTON_REPEAT))); | 121 | } while (!(button&(BUTTON_REL|BUTTON_REPEAT))); |
112 | 122 | ||
diff --git a/apps/plugins/jpeg.c b/apps/plugins/jpeg.c index 7d8fab7456..c601712b11 100644 --- a/apps/plugins/jpeg.c +++ b/apps/plugins/jpeg.c | |||
@@ -33,10 +33,12 @@ | |||
33 | #if CONFIG_KEYPAD == RECORDER_PAD | 33 | #if CONFIG_KEYPAD == RECORDER_PAD |
34 | #define JPEG_ZOOM_IN BUTTON_PLAY | 34 | #define JPEG_ZOOM_IN BUTTON_PLAY |
35 | #define JPEG_ZOOM_OUT BUTTON_ON | 35 | #define JPEG_ZOOM_OUT BUTTON_ON |
36 | |||
36 | #elif CONFIG_KEYPAD == ONDIO_PAD | 37 | #elif CONFIG_KEYPAD == ONDIO_PAD |
37 | #define JPEG_ZOOM_PRE BUTTON_MENU | 38 | #define JPEG_ZOOM_PRE BUTTON_MENU |
38 | #define JPEG_ZOOM_IN (BUTTON_MENU | BUTTON_REL) | 39 | #define JPEG_ZOOM_IN (BUTTON_MENU | BUTTON_REL) |
39 | #define JPEG_ZOOM_OUT (BUTTON_MENU | BUTTON_REPEAT) | 40 | #define JPEG_ZOOM_OUT (BUTTON_MENU | BUTTON_REPEAT) |
41 | |||
40 | #endif | 42 | #endif |
41 | 43 | ||
42 | /******************************* Globals ***********************************/ | 44 | /******************************* Globals ***********************************/ |
@@ -1527,10 +1529,6 @@ int scroll_bmp(struct t_disp* pdisp) | |||
1527 | 1529 | ||
1528 | button = rb->button_get(true); | 1530 | button = rb->button_get(true); |
1529 | 1531 | ||
1530 | if (rb->default_event_handler_ex(button, cleanup, NULL) | ||
1531 | == SYS_USB_CONNECTED) | ||
1532 | return PLUGIN_USB_CONNECTED; | ||
1533 | |||
1534 | switch(button) | 1532 | switch(button) |
1535 | { | 1533 | { |
1536 | case BUTTON_LEFT: | 1534 | case BUTTON_LEFT: |
@@ -1617,6 +1615,13 @@ int scroll_bmp(struct t_disp* pdisp) | |||
1617 | 1615 | ||
1618 | case BUTTON_OFF: | 1616 | case BUTTON_OFF: |
1619 | return PLUGIN_OK; | 1617 | return PLUGIN_OK; |
1618 | |||
1619 | default: | ||
1620 | if (rb->default_event_handler_ex(button, cleanup, NULL) | ||
1621 | == SYS_USB_CONNECTED) | ||
1622 | return PLUGIN_USB_CONNECTED; | ||
1623 | break; | ||
1624 | |||
1620 | } /* switch */ | 1625 | } /* switch */ |
1621 | 1626 | ||
1622 | if (button != BUTTON_NONE) | 1627 | if (button != BUTTON_NONE) |
diff --git a/apps/plugins/metronome.c b/apps/plugins/metronome.c index 2dd7c8950c..cf5113cadf 100644 --- a/apps/plugins/metronome.c +++ b/apps/plugins/metronome.c | |||
@@ -235,10 +235,6 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter){ | |||
235 | 235 | ||
236 | button = rb->button_get(true); | 236 | button = rb->button_get(true); |
237 | 237 | ||
238 | if (rb->default_event_handler_ex(button, cleanup, NULL) | ||
239 | == SYS_USB_CONNECTED) | ||
240 | return PLUGIN_USB_CONNECTED; | ||
241 | |||
242 | switch (button) { | 238 | switch (button) { |
243 | 239 | ||
244 | case METRONOME_QUIT: | 240 | case METRONOME_QUIT: |
@@ -294,6 +290,13 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter){ | |||
294 | calc_period(); | 290 | calc_period(); |
295 | draw_display(); | 291 | draw_display(); |
296 | break; | 292 | break; |
293 | |||
294 | default: | ||
295 | if (rb->default_event_handler_ex(button, cleanup, NULL) | ||
296 | == SYS_USB_CONNECTED) | ||
297 | return PLUGIN_USB_CONNECTED; | ||
298 | break; | ||
299 | |||
297 | } | 300 | } |
298 | } | 301 | } |
299 | } | 302 | } |
diff --git a/apps/plugins/rockblox.c b/apps/plugins/rockblox.c index f90ced2450..eac6563601 100644 --- a/apps/plugins/rockblox.c +++ b/apps/plugins/rockblox.c | |||
@@ -318,12 +318,15 @@ static void move_down(void) | |||
318 | 318 | ||
319 | static int game_loop(void) | 319 | static int game_loop(void) |
320 | { | 320 | { |
321 | int button; | ||
322 | |||
321 | while(1) | 323 | while(1) |
322 | { | 324 | { |
323 | int count = 0; | 325 | int count = 0; |
324 | while(count * 300 < level_speeds[level]) | 326 | while(count * 300 < level_speeds[level]) |
325 | { | 327 | { |
326 | switch(rb->button_get_w_tmo(HZ/10)) | 328 | button = rb->button_get_w_tmo(HZ/10); |
329 | switch(button) | ||
327 | { | 330 | { |
328 | case BUTTON_OFF: | 331 | case BUTTON_OFF: |
329 | return PLUGIN_OK; | 332 | return PLUGIN_OK; |
@@ -348,9 +351,10 @@ static int game_loop(void) | |||
348 | move_down(); | 351 | move_down(); |
349 | break; | 352 | break; |
350 | 353 | ||
351 | case SYS_USB_CONNECTED: | 354 | default: |
352 | rb->usb_screen(); | 355 | if (rb->default_event_handler(button) == SYS_USB_CONNECTED) |
353 | return PLUGIN_USB_CONNECTED; | 356 | return PLUGIN_USB_CONNECTED; |
357 | break; | ||
354 | } | 358 | } |
355 | 359 | ||
356 | count++; | 360 | count++; |
diff --git a/apps/plugins/snow.c b/apps/plugins/snow.c index df9966eb38..77ec350654 100644 --- a/apps/plugins/snow.c +++ b/apps/plugins/snow.c | |||
@@ -93,6 +93,7 @@ static void snow_init(void) | |||
93 | 93 | ||
94 | enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | 94 | enum plugin_status plugin_start(struct plugin_api* api, void* parameter) |
95 | { | 95 | { |
96 | int button; | ||
96 | TEST_PLUGIN_API(api); | 97 | TEST_PLUGIN_API(api); |
97 | (void)(parameter); | 98 | (void)(parameter); |
98 | rb = api; | 99 | rb = api; |
@@ -103,8 +104,13 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
103 | rb->lcd_update(); | 104 | rb->lcd_update(); |
104 | rb->sleep(HZ/20); | 105 | rb->sleep(HZ/20); |
105 | 106 | ||
106 | if (rb->button_get(false) == BUTTON_OFF) | 107 | button = rb->button_get(false); |
108 | |||
109 | if (button == BUTTON_OFF) | ||
107 | return false; | 110 | return false; |
111 | else | ||
112 | if (rb->default_event_handler(button) == SYS_USB_CONNECTED) | ||
113 | return PLUGIN_USB_CONNECTED; | ||
108 | } | 114 | } |
109 | } | 115 | } |
110 | 116 | ||
diff --git a/apps/plugins/stopwatch.c b/apps/plugins/stopwatch.c index 370a1b51a6..6157dda038 100644 --- a/apps/plugins/stopwatch.c +++ b/apps/plugins/stopwatch.c | |||
@@ -31,6 +31,30 @@ | |||
31 | #define MAX_LAPS 10 | 31 | #define MAX_LAPS 10 |
32 | #define MAX_SCROLL (MAX_LAPS - LAP_LINES) | 32 | #define MAX_SCROLL (MAX_LAPS - LAP_LINES) |
33 | 33 | ||
34 | /* variable button definitions */ | ||
35 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
36 | #define STOPWATCH_QUIT BUTTON_OFF | ||
37 | #define STOPWATCH_START_STOP BUTTON_PLAY | ||
38 | #define STOPWATCH_RESET_TIMER BUTTON_LEFT | ||
39 | #define STOPWATCH_LAP_TIMER BUTTON_ON | ||
40 | #define STOPWATCH_SCROLL_UP BUTTON_UP | ||
41 | #define STOPWATCH_SCROLL_DOWN BUTTON_DOWN | ||
42 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
43 | #define STOPWATCH_QUIT BUTTON_OFF | ||
44 | #define STOPWATCH_START_STOP BUTTON_RIGHT | ||
45 | #define STOPWATCH_RESET_TIMER BUTTON_LEFT | ||
46 | #define STOPWATCH_LAP_TIMER BUTTON_MENU | ||
47 | #define STOPWATCH_SCROLL_UP BUTTON_UP | ||
48 | #define STOPWATCH_SCROLL_DOWN BUTTON_DOWN | ||
49 | #elif CONFIG_KEYPAD == PLAYER_PAD | ||
50 | #define STOPWATCH_QUIT BUTTON_MENU | ||
51 | #define STOPWATCH_START_STOP BUTTON_PLAY | ||
52 | #define STOPWATCH_RESET_TIMER BUTTON_STOP | ||
53 | #define STOPWATCH_LAP_TIMER BUTTON_ON | ||
54 | #define STOPWATCH_SCROLL_UP BUTTON_RIGHT | ||
55 | #define STOPWATCH_SCROLL_DOWN BUTTON_LEFT | ||
56 | #endif | ||
57 | |||
34 | static struct plugin_api* rb; | 58 | static struct plugin_api* rb; |
35 | 59 | ||
36 | static int stopwatch = 0; | 60 | static int stopwatch = 0; |
@@ -102,17 +126,13 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
102 | switch (button) | 126 | switch (button) |
103 | { | 127 | { |
104 | 128 | ||
105 | /* OFF/MENU key to exit */ | 129 | /* exit */ |
106 | #if CONFIG_KEYPAD == RECORDER_PAD | 130 | case STOPWATCH_QUIT: |
107 | case BUTTON_OFF: | ||
108 | #else | ||
109 | case BUTTON_MENU: | ||
110 | #endif | ||
111 | done = true; | 131 | done = true; |
112 | break; | 132 | break; |
113 | 133 | ||
114 | /* PLAY = Stop/Start toggle */ | 134 | /* Stop/Start toggle */ |
115 | case BUTTON_PLAY: | 135 | case STOPWATCH_START_STOP: |
116 | counting = ! counting; | 136 | counting = ! counting; |
117 | if (counting) | 137 | if (counting) |
118 | { | 138 | { |
@@ -126,12 +146,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
126 | } | 146 | } |
127 | break; | 147 | break; |
128 | 148 | ||
129 | /* LEFT = Reset timer */ | 149 | /* Reset timer */ |
130 | #if CONFIG_KEYPAD == RECORDER_PAD | 150 | case STOPWATCH_RESET_TIMER: |
131 | case BUTTON_LEFT: | ||
132 | #else | ||
133 | case BUTTON_STOP: | ||
134 | #endif | ||
135 | if (!counting) | 151 | if (!counting) |
136 | { | 152 | { |
137 | prev_total = 0; | 153 | prev_total = 0; |
@@ -140,19 +156,15 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
140 | } | 156 | } |
141 | break; | 157 | break; |
142 | 158 | ||
143 | /* ON = Lap timer */ | 159 | /* Lap timer */ |
144 | case BUTTON_ON: | 160 | case STOPWATCH_LAP_TIMER: |
145 | lap_times[curr_lap%MAX_LAPS] = stopwatch; | 161 | lap_times[curr_lap%MAX_LAPS] = stopwatch; |
146 | curr_lap++; | 162 | curr_lap++; |
147 | update_lap = true; | 163 | update_lap = true; |
148 | break; | 164 | break; |
149 | 165 | ||
150 | /* UP (RIGHT/+) = Scroll Lap timer up */ | 166 | /* Scroll Lap timer up */ |
151 | #if CONFIG_KEYPAD == RECORDER_PAD | 167 | case STOPWATCH_SCROLL_UP: |
152 | case BUTTON_UP: | ||
153 | #else | ||
154 | case BUTTON_RIGHT: | ||
155 | #endif | ||
156 | if (lap_scroll > 0) | 168 | if (lap_scroll > 0) |
157 | { | 169 | { |
158 | lap_scroll --; | 170 | lap_scroll --; |
@@ -160,12 +172,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
160 | } | 172 | } |
161 | break; | 173 | break; |
162 | 174 | ||
163 | /* DOWN (LEFT/-) = Scroll Lap timer down */ | 175 | /* Scroll Lap timer down */ |
164 | #if CONFIG_KEYPAD == RECORDER_PAD | 176 | case STOPWATCH_SCROLL_DOWN: |
165 | case BUTTON_DOWN: | ||
166 | #else | ||
167 | case BUTTON_LEFT: | ||
168 | #endif | ||
169 | if ((lap_scroll < curr_lap - LAP_LINES) && | 177 | if ((lap_scroll < curr_lap - LAP_LINES) && |
170 | (lap_scroll < MAX_SCROLL) ) | 178 | (lap_scroll < MAX_SCROLL) ) |
171 | { | 179 | { |
@@ -174,9 +182,10 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter) | |||
174 | } | 182 | } |
175 | break; | 183 | break; |
176 | 184 | ||
177 | case SYS_USB_CONNECTED: | 185 | default: |
178 | rb->usb_screen(); | 186 | if (rb->default_event_handler(button) == SYS_USB_CONNECTED) |
179 | return PLUGIN_USB_CONNECTED; | 187 | return PLUGIN_USB_CONNECTED; |
188 | break; | ||
180 | } | 189 | } |
181 | 190 | ||
182 | if (counting) | 191 | if (counting) |
diff --git a/apps/plugins/video.c b/apps/plugins/video.c index e63ef1c373..de05ba4af4 100644 --- a/apps/plugins/video.c +++ b/apps/plugins/video.c | |||
@@ -36,9 +36,17 @@ | |||
36 | #if CONFIG_KEYPAD == RECORDER_PAD | 36 | #if CONFIG_KEYPAD == RECORDER_PAD |
37 | #define VIDEO_STOP_SEEK BUTTON_PLAY | 37 | #define VIDEO_STOP_SEEK BUTTON_PLAY |
38 | #define VIDEO_RESUME BUTTON_PLAY | 38 | #define VIDEO_RESUME BUTTON_PLAY |
39 | #define VIDEO_DEBUG BUTTON_F1 | ||
40 | #define VIDEO_CONTRAST_DOWN BUTTON_F2 | ||
41 | #define VIDEO_CONTRAST_UP BUTTON_F3 | ||
42 | |||
39 | #elif CONFIG_KEYPAD == ONDIO_PAD | 43 | #elif CONFIG_KEYPAD == ONDIO_PAD |
40 | #define VIDEO_STOP_SEEK BUTTON_MENU | 44 | #define VIDEO_STOP_SEEK_PRE BUTTON_MENU |
45 | #define VIDEO_STOP_SEEK (BUTTON_MENU | BUTTON_REL) | ||
41 | #define VIDEO_RESUME BUTTON_RIGHT | 46 | #define VIDEO_RESUME BUTTON_RIGHT |
47 | #define VIDEO_CONTRAST_DOWN (BUTTON_MENU | BUTTON_DOWN) | ||
48 | #define VIDEO_CONTRAST_UP (BUTTON_MENU | BUTTON_UP) | ||
49 | |||
42 | #endif | 50 | #endif |
43 | /****************** constants ******************/ | 51 | /****************** constants ******************/ |
44 | 52 | ||
@@ -285,7 +293,6 @@ void ChangeVolume(int delta) | |||
285 | } | 293 | } |
286 | 294 | ||
287 | 295 | ||
288 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
289 | // helper function to change the LCD contrast by a certain amount, +/- | 296 | // helper function to change the LCD contrast by a certain amount, +/- |
290 | void ChangeContrast(int delta) | 297 | void ChangeContrast(int delta) |
291 | { | 298 | { |
@@ -313,7 +320,6 @@ void ChangeContrast(int delta) | |||
313 | } | 320 | } |
314 | } | 321 | } |
315 | } | 322 | } |
316 | #endif | ||
317 | 323 | ||
318 | 324 | ||
319 | // sync the video to the current audio | 325 | // sync the video to the current audio |
@@ -563,6 +569,7 @@ void Cleanup(void *fd) | |||
563 | int PlayTick(int fd) | 569 | int PlayTick(int fd) |
564 | { | 570 | { |
565 | int button; | 571 | int button; |
572 | static int lastbutton = 0; | ||
566 | int avail_audio = -1, avail_video = -1; | 573 | int avail_audio = -1, avail_video = -1; |
567 | int retval = 1; | 574 | int retval = 1; |
568 | int filepos; | 575 | int filepos; |
@@ -667,11 +674,6 @@ int PlayTick(int fd) | |||
667 | else | 674 | else |
668 | filepos -= Available(gBuf.pReadAudio); // else audio | 675 | filepos -= Available(gBuf.pReadAudio); // else audio |
669 | 676 | ||
670 | if (rb->default_event_handler_ex(button, Cleanup, &fd) | ||
671 | == SYS_USB_CONNECTED) | ||
672 | retval = -1; // signal "aborted" to caller | ||
673 | // SYS_USB_CONNECTED won't be catched again by the switch() | ||
674 | |||
675 | switch (button) | 677 | switch (button) |
676 | { // set exit conditions | 678 | { // set exit conditions |
677 | case BUTTON_OFF: | 679 | case BUTTON_OFF: |
@@ -686,6 +688,10 @@ int PlayTick(int fd) | |||
686 | retval = 0; // signal "stopped" to caller | 688 | retval = 0; // signal "stopped" to caller |
687 | break; | 689 | break; |
688 | case VIDEO_STOP_SEEK: | 690 | case VIDEO_STOP_SEEK: |
691 | #ifdef VIDEO_STOP_SEEK_PRE | ||
692 | if (lastbutton != VIDEO_STOP_SEEK_PRE) | ||
693 | break; | ||
694 | #endif | ||
689 | if (gPlay.bSeeking) | 695 | if (gPlay.bSeeking) |
690 | { | 696 | { |
691 | gPlay.bSeeking = false; | 697 | gPlay.bSeeking = false; |
@@ -757,25 +763,32 @@ int PlayTick(int fd) | |||
757 | else | 763 | else |
758 | gPlay.nSeekAcc++; | 764 | gPlay.nSeekAcc++; |
759 | break; | 765 | break; |
760 | #if CONFIG_KEYPAD == RECORDER_PAD | 766 | #ifdef VIDEO_DEBUG |
761 | case BUTTON_F1: // debug key | 767 | case VIDEO_DEBUG: // debug key |
762 | case BUTTON_F1 | BUTTON_REPEAT: | 768 | case VIDEO_DEBUG | BUTTON_REPEAT: |
763 | DrawBuf(); // show buffer status | 769 | DrawBuf(); // show buffer status |
764 | gPlay.nTimeOSD = 30; | 770 | gPlay.nTimeOSD = 30; |
765 | gPlay.bDirtyOSD = true; | 771 | gPlay.bDirtyOSD = true; |
766 | break; | 772 | break; |
767 | case BUTTON_F2: // contrast down | 773 | #endif |
768 | case BUTTON_F2 | BUTTON_REPEAT: | 774 | case VIDEO_CONTRAST_DOWN: // contrast down |
775 | case VIDEO_CONTRAST_DOWN | BUTTON_REPEAT: | ||
769 | if (gPlay.bHasVideo) | 776 | if (gPlay.bHasVideo) |
770 | ChangeContrast(-1); | 777 | ChangeContrast(-1); |
771 | break; | 778 | break; |
772 | case BUTTON_F3: // contrast up | 779 | case VIDEO_CONTRAST_UP: // contrast up |
773 | case BUTTON_F3 | BUTTON_REPEAT: | 780 | case VIDEO_CONTRAST_UP | BUTTON_REPEAT: |
774 | if (gPlay.bHasVideo) | 781 | if (gPlay.bHasVideo) |
775 | ChangeContrast(1); | 782 | ChangeContrast(1); |
776 | break; | 783 | break; |
777 | #endif | 784 | default: |
785 | if (rb->default_event_handler_ex(button, Cleanup, &fd) | ||
786 | == SYS_USB_CONNECTED) | ||
787 | retval = -1; // signal "aborted" to caller | ||
788 | break; | ||
778 | } | 789 | } |
790 | |||
791 | lastbutton = button; | ||
779 | } /* if (button != BUTTON_NONE) */ | 792 | } /* if (button != BUTTON_NONE) */ |
780 | 793 | ||
781 | 794 | ||
diff --git a/apps/plugins/viewer.c b/apps/plugins/viewer.c index eb15127704..4628f8e7b3 100644 --- a/apps/plugins/viewer.c +++ b/apps/plugins/viewer.c | |||
@@ -56,6 +56,50 @@ | |||
56 | #define NEED_SCROLLBAR() ((!(ONE_SCREEN_FITS_ALL())) && \ | 56 | #define NEED_SCROLLBAR() ((!(ONE_SCREEN_FITS_ALL())) && \ |
57 | (view_mode==WIDE? scrollbar_mode[WIDE]==SB_ON: scrollbar_mode[NARROW]==SB_ON)) | 57 | (view_mode==WIDE? scrollbar_mode[WIDE]==SB_ON: scrollbar_mode[NARROW]==SB_ON)) |
58 | 58 | ||
59 | /* variable button definitions */ | ||
60 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
61 | #define VIEWER_QUIT BUTTON_OFF | ||
62 | #define VIEWER_PAGE_UP BUTTON_UP | ||
63 | #define VIEWER_PAGE_DOWN BUTTON_DOWN | ||
64 | #define VIEWER_SCREEN_LEFT BUTTON_LEFT | ||
65 | #define VIEWER_SCREEN_RIGHT BUTTON_RIGHT | ||
66 | #define VIEWER_MODE_WRAP BUTTON_F1 | ||
67 | #define VIEWER_MODE_LINE BUTTON_F2 | ||
68 | #define VIEWER_MODE_WIDTH BUTTON_F3 | ||
69 | /* Recorder/ Ondio only */ | ||
70 | #define VIEWER_MODE_PAGE (BUTTON_ON | BUTTON_F1) | ||
71 | #define VIEWER_MODE_SCROLLBAR (BUTTON_ON | BUTTON_F3) | ||
72 | /* Recorder only */ | ||
73 | #define VIEWER_LINE_UP (BUTTON_ON | BUTTON_UP) | ||
74 | #define VIEWER_LINE_DOWN (BUTTON_ON | BUTTON_DOWN) | ||
75 | #define VIEWER_COLUMN_LEFT (BUTTON_ON | BUTTON_LEFT) | ||
76 | #define VIEWER_COLUMN_RIGHT (BUTTON_ON | BUTTON_RIGHT) | ||
77 | |||
78 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
79 | #define VIEWER_QUIT BUTTON_OFF | ||
80 | #define VIEWER_PAGE_UP BUTTON_UP | ||
81 | #define VIEWER_PAGE_DOWN BUTTON_DOWN | ||
82 | #define VIEWER_SCREEN_LEFT BUTTON_LEFT | ||
83 | #define VIEWER_SCREEN_RIGHT BUTTON_RIGHT | ||
84 | #define VIEWER_MODE_WRAP (BUTTON_MENU | BUTTON_LEFT) | ||
85 | #define VIEWER_MODE_LINE (BUTTON_MENU | BUTTON_UP) | ||
86 | #define VIEWER_MODE_WIDTH (BUTTON_MENU | BUTTON_RIGHT) | ||
87 | /* Recorder/ Ondio only */ | ||
88 | #define VIEWER_MODE_PAGE (BUTTON_MENU | BUTTON_DOWN) | ||
89 | #define VIEWER_MODE_SCROLLBAR (BUTTON_MENU | BUTTON_OFF) | ||
90 | |||
91 | #elif CONFIG_KEYPAD == PLAYER_PAD | ||
92 | #define VIEWER_QUIT BUTTON_STOP | ||
93 | #define VIEWER_PAGE_UP BUTTON_LEFT | ||
94 | #define VIEWER_PAGE_DOWN BUTTON_RIGHT | ||
95 | #define VIEWER_SCREEN_LEFT (BUTTON_MENU | BUTTON_LEFT) | ||
96 | #define VIEWER_SCREEN_RIGHT (BUTTON_MENU | BUTTON_RIGHT) | ||
97 | #define VIEWER_MODE_WRAP (BUTTON_ON | BUTTON_LEFT) | ||
98 | #define VIEWER_MODE_LINE (BUTTON_ON | BUTTON_MENU | BUTTON_RIGHT) | ||
99 | #define VIEWER_MODE_WIDTH (BUTTON_ON | BUTTON_RIGHT) | ||
100 | |||
101 | #endif | ||
102 | |||
59 | enum { | 103 | enum { |
60 | WRAP=0, | 104 | WRAP=0, |
61 | CHOP, | 105 | CHOP, |
@@ -625,8 +669,10 @@ static bool viewer_init(char* file) | |||
625 | return true; | 669 | return true; |
626 | } | 670 | } |
627 | 671 | ||
628 | static void viewer_exit(void) | 672 | static void viewer_exit(void *parameter) |
629 | { | 673 | { |
674 | (void)parameter; | ||
675 | |||
630 | rb->close(fd); | 676 | rb->close(fd); |
631 | } | 677 | } |
632 | 678 | ||
@@ -641,90 +687,10 @@ static int col_limit(int col) | |||
641 | return col; | 687 | return col; |
642 | } | 688 | } |
643 | 689 | ||
644 | #ifdef HAVE_LCD_BITMAP | ||
645 | static int viewer_recorder_on_button(int col) | ||
646 | { | ||
647 | bool exit = false; | ||
648 | |||
649 | while (!exit) { | ||
650 | switch (rb->button_get(true)) { | ||
651 | case BUTTON_ON | BUTTON_F1: | ||
652 | /* Page-overlap mode */ | ||
653 | if (++page_mode == PAGE_MODES) | ||
654 | page_mode = 0; | ||
655 | |||
656 | rb->splash(HZ, true, "%s %s", | ||
657 | page_mode_str[page_mode], | ||
658 | page_mode_str[PAGE_MODES]); | ||
659 | |||
660 | viewer_draw(col); | ||
661 | break; | ||
662 | |||
663 | case BUTTON_ON | BUTTON_F3: | ||
664 | /* Show-scrollbar mode for current view-width mode */ | ||
665 | if (!(ONE_SCREEN_FITS_ALL())) { | ||
666 | if (++scrollbar_mode[view_mode] == SCROLLBAR_MODES) | ||
667 | scrollbar_mode[view_mode] = 0; | ||
668 | |||
669 | init_need_scrollbar(); | ||
670 | viewer_draw(col); | ||
671 | |||
672 | rb->splash(HZ, true, "%s %s (%s %s)", | ||
673 | scrollbar_mode_str[SCROLLBAR_MODES], | ||
674 | scrollbar_mode_str[scrollbar_mode[view_mode]], | ||
675 | view_mode_str[view_mode], | ||
676 | view_mode_str[VIEW_MODES]); | ||
677 | } | ||
678 | viewer_draw(col); | ||
679 | break; | ||
680 | |||
681 | case BUTTON_ON | BUTTON_UP: | ||
682 | case BUTTON_ON | BUTTON_UP | BUTTON_REPEAT: | ||
683 | /* Scroll up one line */ | ||
684 | viewer_scroll_up(); | ||
685 | viewer_draw(col); | ||
686 | break; | ||
687 | |||
688 | case BUTTON_ON | BUTTON_DOWN: | ||
689 | case BUTTON_ON | BUTTON_DOWN | BUTTON_REPEAT: | ||
690 | /* Scroll down one line */ | ||
691 | if (next_screen_ptr != NULL) | ||
692 | screen_top_ptr = next_line_ptr; | ||
693 | |||
694 | viewer_draw(col); | ||
695 | break; | ||
696 | |||
697 | case BUTTON_ON | BUTTON_LEFT: | ||
698 | case BUTTON_ON | BUTTON_LEFT | BUTTON_REPEAT: | ||
699 | /* Scroll left one column */ | ||
700 | col--; | ||
701 | col = col_limit(col); | ||
702 | viewer_draw(col); | ||
703 | break; | ||
704 | |||
705 | case BUTTON_ON | BUTTON_RIGHT: | ||
706 | case BUTTON_ON | BUTTON_RIGHT | BUTTON_REPEAT: | ||
707 | /* Scroll right one column */ | ||
708 | col++; | ||
709 | col = col_limit(col); | ||
710 | viewer_draw(col); | ||
711 | break; | ||
712 | |||
713 | case BUTTON_ON | BUTTON_REL: | ||
714 | case BUTTON_ON | BUTTON_DOWN | BUTTON_REL: | ||
715 | case BUTTON_ON | BUTTON_UP | BUTTON_REL: | ||
716 | /* Drop out of this loop (when ON btn released) */ | ||
717 | exit = true; | ||
718 | break; | ||
719 | } | ||
720 | } | ||
721 | return col; | ||
722 | } | ||
723 | #endif | ||
724 | |||
725 | enum plugin_status plugin_start(struct plugin_api* api, void* file) | 690 | enum plugin_status plugin_start(struct plugin_api* api, void* file) |
726 | { | 691 | { |
727 | bool exit=false; | 692 | bool exit=false; |
693 | int button; | ||
728 | int col = 0; | 694 | int col = 0; |
729 | int i; | 695 | int i; |
730 | int ok; | 696 | int ok; |
@@ -738,28 +704,22 @@ enum plugin_status plugin_start(struct plugin_api* api, void* file) | |||
738 | ok = viewer_init(file); | 704 | ok = viewer_init(file); |
739 | if (!ok) { | 705 | if (!ok) { |
740 | rb->splash(HZ, false, "Error"); | 706 | rb->splash(HZ, false, "Error"); |
741 | viewer_exit(); | 707 | viewer_exit(NULL); |
742 | return PLUGIN_OK; | 708 | return PLUGIN_OK; |
743 | } | 709 | } |
744 | 710 | ||
745 | viewer_draw(col); | 711 | viewer_draw(col); |
746 | 712 | ||
747 | while (!exit) { | 713 | while (!exit) { |
748 | switch (rb->button_get(true)) { | 714 | button = rb->button_get(true); |
749 | #if CONFIG_KEYPAD == RECORDER_PAD | 715 | switch (button) { |
750 | case BUTTON_OFF: | 716 | |
751 | #else | 717 | case VIEWER_QUIT: |
752 | case BUTTON_STOP: | 718 | viewer_exit(NULL); |
753 | #endif | ||
754 | viewer_exit(); | ||
755 | exit = true; | 719 | exit = true; |
756 | break; | 720 | break; |
757 | 721 | ||
758 | #if CONFIG_KEYPAD == RECORDER_PAD | 722 | case VIEWER_MODE_WRAP: |
759 | case BUTTON_F1: | ||
760 | #else | ||
761 | case BUTTON_ON | BUTTON_LEFT: | ||
762 | #endif | ||
763 | /* Word-wrap mode: WRAP or CHOP */ | 723 | /* Word-wrap mode: WRAP or CHOP */ |
764 | if (++word_mode == WORD_MODES) | 724 | if (++word_mode == WORD_MODES) |
765 | word_mode = 0; | 725 | word_mode = 0; |
@@ -776,11 +736,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* file) | |||
776 | viewer_draw(col); | 736 | viewer_draw(col); |
777 | break; | 737 | break; |
778 | 738 | ||
779 | #if CONFIG_KEYPAD == RECORDER_PAD | 739 | case VIEWER_MODE_LINE: |
780 | case BUTTON_F2: | ||
781 | #else | ||
782 | case BUTTON_ON | BUTTON_MENU | BUTTON_RIGHT: | ||
783 | #endif | ||
784 | /* Line-paragraph mode: NORMAL, JOIN or EXPAND */ | 740 | /* Line-paragraph mode: NORMAL, JOIN or EXPAND */ |
785 | if (++line_mode == LINE_MODES) | 741 | if (++line_mode == LINE_MODES) |
786 | line_mode = 0; | 742 | line_mode = 0; |
@@ -802,11 +758,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* file) | |||
802 | viewer_draw(col); | 758 | viewer_draw(col); |
803 | break; | 759 | break; |
804 | 760 | ||
805 | #if CONFIG_KEYPAD == RECORDER_PAD | 761 | case VIEWER_MODE_WIDTH: |
806 | case BUTTON_F3: | ||
807 | #else | ||
808 | case BUTTON_ON | BUTTON_RIGHT: | ||
809 | #endif | ||
810 | /* View-width mode: NARROW or WIDE */ | 762 | /* View-width mode: NARROW or WIDE */ |
811 | if (line_mode == JOIN) | 763 | if (line_mode == JOIN) |
812 | rb->splash(HZ, true, "(no %s %s)", | 764 | rb->splash(HZ, true, "(no %s %s)", |
@@ -843,13 +795,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* file) | |||
843 | viewer_draw(col); | 795 | viewer_draw(col); |
844 | break; | 796 | break; |
845 | 797 | ||
846 | #if CONFIG_KEYPAD == RECORDER_PAD | 798 | case VIEWER_PAGE_UP: |
847 | case BUTTON_UP: | 799 | case VIEWER_PAGE_UP | BUTTON_REPEAT: |
848 | case BUTTON_UP | BUTTON_REPEAT: | ||
849 | #else | ||
850 | case BUTTON_LEFT: | ||
851 | case BUTTON_LEFT | BUTTON_REPEAT: | ||
852 | #endif | ||
853 | /* Page up */ | 800 | /* Page up */ |
854 | #ifdef HAVE_LCD_BITMAP | 801 | #ifdef HAVE_LCD_BITMAP |
855 | for (i = page_mode==OVERLAP? 1:0; i < display_lines; i++) | 802 | for (i = page_mode==OVERLAP? 1:0; i < display_lines; i++) |
@@ -861,13 +808,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* file) | |||
861 | viewer_draw(col); | 808 | viewer_draw(col); |
862 | break; | 809 | break; |
863 | 810 | ||
864 | #if CONFIG_KEYPAD == RECORDER_PAD | 811 | case VIEWER_PAGE_DOWN: |
865 | case BUTTON_DOWN: | 812 | case VIEWER_PAGE_DOWN | BUTTON_REPEAT: |
866 | case BUTTON_DOWN | BUTTON_REPEAT: | ||
867 | #else | ||
868 | case BUTTON_RIGHT: | ||
869 | case BUTTON_RIGHT | BUTTON_REPEAT: | ||
870 | #endif | ||
871 | /* Page down */ | 813 | /* Page down */ |
872 | if (next_screen_ptr != NULL) | 814 | if (next_screen_ptr != NULL) |
873 | screen_top_ptr = next_screen_to_draw_ptr; | 815 | screen_top_ptr = next_screen_to_draw_ptr; |
@@ -875,13 +817,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* file) | |||
875 | viewer_draw(col); | 817 | viewer_draw(col); |
876 | break; | 818 | break; |
877 | 819 | ||
878 | #if CONFIG_KEYPAD == RECORDER_PAD | 820 | case VIEWER_SCREEN_LEFT: |
879 | case BUTTON_LEFT: | 821 | case VIEWER_SCREEN_LEFT | BUTTON_REPEAT: |
880 | case BUTTON_LEFT | BUTTON_REPEAT: | ||
881 | #else | ||
882 | case BUTTON_MENU | BUTTON_LEFT: | ||
883 | case BUTTON_MENU | BUTTON_LEFT | BUTTON_REPEAT: | ||
884 | #endif | ||
885 | if (view_mode == WIDE) { | 822 | if (view_mode == WIDE) { |
886 | /* Screen left */ | 823 | /* Screen left */ |
887 | col -= display_columns; | 824 | col -= display_columns; |
@@ -895,13 +832,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* file) | |||
895 | viewer_draw(col); | 832 | viewer_draw(col); |
896 | break; | 833 | break; |
897 | 834 | ||
898 | #if CONFIG_KEYPAD == RECORDER_PAD | 835 | case VIEWER_SCREEN_RIGHT: |
899 | case BUTTON_RIGHT: | 836 | case VIEWER_SCREEN_RIGHT | BUTTON_REPEAT: |
900 | case BUTTON_RIGHT | BUTTON_REPEAT: | ||
901 | #else | ||
902 | case BUTTON_MENU | BUTTON_RIGHT: | ||
903 | case BUTTON_MENU | BUTTON_RIGHT | BUTTON_REPEAT: | ||
904 | #endif | ||
905 | if (view_mode == WIDE) { | 837 | if (view_mode == WIDE) { |
906 | /* Screen right */ | 838 | /* Screen right */ |
907 | col += display_columns; | 839 | col += display_columns; |
@@ -915,18 +847,77 @@ enum plugin_status plugin_start(struct plugin_api* api, void* file) | |||
915 | viewer_draw(col); | 847 | viewer_draw(col); |
916 | break; | 848 | break; |
917 | 849 | ||
850 | #if (CONFIG_KEYPAD == RECORDER_PAD) || (CONFIG_KEYPAD == ONDIO_PAD) | ||
851 | case VIEWER_MODE_PAGE: | ||
852 | /* Page-overlap mode */ | ||
853 | if (++page_mode == PAGE_MODES) | ||
854 | page_mode = 0; | ||
855 | |||
856 | rb->splash(HZ, true, "%s %s", | ||
857 | page_mode_str[page_mode], | ||
858 | page_mode_str[PAGE_MODES]); | ||
859 | |||
860 | viewer_draw(col); | ||
861 | break; | ||
862 | |||
863 | case VIEWER_MODE_SCROLLBAR: | ||
864 | /* Show-scrollbar mode for current view-width mode */ | ||
865 | if (!(ONE_SCREEN_FITS_ALL())) { | ||
866 | if (++scrollbar_mode[view_mode] == SCROLLBAR_MODES) | ||
867 | scrollbar_mode[view_mode] = 0; | ||
868 | |||
869 | init_need_scrollbar(); | ||
870 | viewer_draw(col); | ||
871 | |||
872 | rb->splash(HZ, true, "%s %s (%s %s)", | ||
873 | scrollbar_mode_str[SCROLLBAR_MODES], | ||
874 | scrollbar_mode_str[scrollbar_mode[view_mode]], | ||
875 | view_mode_str[view_mode], | ||
876 | view_mode_str[VIEW_MODES]); | ||
877 | } | ||
878 | viewer_draw(col); | ||
879 | break; | ||
880 | #endif | ||
881 | |||
918 | #if CONFIG_KEYPAD == RECORDER_PAD | 882 | #if CONFIG_KEYPAD == RECORDER_PAD |
919 | case BUTTON_ON: | 883 | case VIEWER_LINE_UP: |
920 | /*Go to On-btn combinations */ | 884 | case VIEWER_LINE_UP | BUTTON_REPEAT: |
921 | col = viewer_recorder_on_button(col); | 885 | /* Scroll up one line */ |
886 | viewer_scroll_up(); | ||
887 | viewer_draw(col); | ||
888 | break; | ||
889 | |||
890 | case VIEWER_LINE_DOWN: | ||
891 | case VIEWER_LINE_DOWN | BUTTON_REPEAT: | ||
892 | /* Scroll down one line */ | ||
893 | if (next_screen_ptr != NULL) | ||
894 | screen_top_ptr = next_line_ptr; | ||
895 | |||
896 | viewer_draw(col); | ||
897 | break; | ||
898 | |||
899 | case VIEWER_COLUMN_LEFT: | ||
900 | case VIEWER_COLUMN_LEFT | BUTTON_REPEAT: | ||
901 | /* Scroll left one column */ | ||
902 | col--; | ||
903 | col = col_limit(col); | ||
904 | viewer_draw(col); | ||
905 | break; | ||
906 | |||
907 | case VIEWER_COLUMN_RIGHT: | ||
908 | case VIEWER_COLUMN_RIGHT | BUTTON_REPEAT: | ||
909 | /* Scroll right one column */ | ||
910 | col++; | ||
911 | col = col_limit(col); | ||
912 | viewer_draw(col); | ||
922 | break; | 913 | break; |
923 | #endif | 914 | #endif |
924 | 915 | ||
925 | case SYS_USB_CONNECTED: | 916 | default: |
926 | /* Release control to USB functions */ | 917 | if (rb->default_event_handler_ex(button, viewer_exit, NULL) |
927 | rb->usb_screen(); | 918 | == SYS_USB_CONNECTED) |
928 | viewer_exit(); | 919 | return PLUGIN_USB_CONNECTED; |
929 | return PLUGIN_USB_CONNECTED; | 920 | break; |
930 | } | 921 | } |
931 | } | 922 | } |
932 | return PLUGIN_OK; | 923 | return PLUGIN_OK; |