summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/plugins/SOURCES9
-rw-r--r--apps/plugins/battery_test.c34
-rw-r--r--apps/plugins/jpeg.c13
-rw-r--r--apps/plugins/metronome.c11
-rw-r--r--apps/plugins/rockblox.c12
-rw-r--r--apps/plugins/snow.c8
-rw-r--r--apps/plugins/stopwatch.c71
-rw-r--r--apps/plugins/video.c45
-rw-r--r--apps/plugins/viewer.c273
9 files changed, 257 insertions, 219 deletions
diff --git a/apps/plugins/SOURCES b/apps/plugins/SOURCES
index 494a4a6..80a6fde 100644
--- a/apps/plugins/SOURCES
+++ b/apps/plugins/SOURCES
@@ -1,4 +1,5 @@
/* plugins common to both Player+Recorder model */
+battery_test.c
favorites.c
firmware_flash.c
helloworld.c
@@ -6,20 +7,16 @@ metronome.c
rockbox_flash.c
search.c
sort.c
-vbrfix.c
-#if CONFIG_KEYPAD != ONDIO_PAD
-/* gradually bring in the ones not working yet */
-battery_test.c
stopwatch.c
+vbrfix.c
viewer.c
-#endif /* #if CONFIG_KEYPAD != ONDIO_PAD */
#ifdef HAVE_LCD_BITMAP /* recorder model only */
grayscale.c
jpeg.c
rockblox.c
snow.c
-video.c
+video.c
#if CONFIG_KEYPAD != ONDIO_PAD
/* gradually bring in the ones not working yet */
bounce.c
diff --git a/apps/plugins/battery_test.c b/apps/plugins/battery_test.c
index 04be9b0..bc6e580 100644
--- a/apps/plugins/battery_test.c
+++ b/apps/plugins/battery_test.c
@@ -29,6 +29,16 @@
to watch.
*/
+/* variable button definitions */
+#if CONFIG_KEYPAD == RECORDER_PAD
+#define BATTERY_TEST_QUIT BUTTON_ON
+#define BATTERY_TEST_QUIT2 BUTTON_OFF
+#elif CONFIG_KEYPAD == ONDIO_PAD
+#define BATTERY_TEST_QUIT BUTTON_OFF
+#elif CONFIG_KEYPAD == PLAYER_PAD
+#define BATTERY_TEST_QUIT BUTTON_STOP
+#endif
+
static struct plugin_api* rb;
void* buffer;
@@ -94,19 +104,19 @@ enum plugin_status loop(void)
/* simulate 128kbit/s (16kbyte/s) playback duration */
do {
button = rb->button_get_w_tmo(HZ * (buffersize / 16384) - HZ*10);
-
- /* Check if we shall exit the plugin */
- if (button==BUTTON_ON ||
-#if CONFIG_KEYPAD == RECORDER_PAD
- button==BUTTON_OFF
-#else
- button==BUTTON_STOP
-#endif
- )
- return PLUGIN_OK;
- if (rb->default_event_handler(button) == SYS_USB_CONNECTED) {
- return PLUGIN_USB_CONNECTED;
+ switch (button) {
+ /* Check if we shall exit the plugin */
+ case BATTERY_TEST_QUIT:
+#ifdef BATTERY_TEST_QUIT2
+ case BATTERY_TEST_QUIT2:
+#endif
+ return PLUGIN_OK;
+
+ default:
+ if (rb->default_event_handler(button) == SYS_USB_CONNECTED)
+ return PLUGIN_USB_CONNECTED;
+ break;
}
} while (!(button&(BUTTON_REL|BUTTON_REPEAT)));
diff --git a/apps/plugins/jpeg.c b/apps/plugins/jpeg.c
index 7d8fab7..c601712 100644
--- a/apps/plugins/jpeg.c
+++ b/apps/plugins/jpeg.c
@@ -33,10 +33,12 @@
#if CONFIG_KEYPAD == RECORDER_PAD
#define JPEG_ZOOM_IN BUTTON_PLAY
#define JPEG_ZOOM_OUT BUTTON_ON
+
#elif CONFIG_KEYPAD == ONDIO_PAD
#define JPEG_ZOOM_PRE BUTTON_MENU
#define JPEG_ZOOM_IN (BUTTON_MENU | BUTTON_REL)
#define JPEG_ZOOM_OUT (BUTTON_MENU | BUTTON_REPEAT)
+
#endif
/******************************* Globals ***********************************/
@@ -1527,10 +1529,6 @@ int scroll_bmp(struct t_disp* pdisp)
button = rb->button_get(true);
- if (rb->default_event_handler_ex(button, cleanup, NULL)
- == SYS_USB_CONNECTED)
- return PLUGIN_USB_CONNECTED;
-
switch(button)
{
case BUTTON_LEFT:
@@ -1617,6 +1615,13 @@ int scroll_bmp(struct t_disp* pdisp)
case BUTTON_OFF:
return PLUGIN_OK;
+
+ default:
+ if (rb->default_event_handler_ex(button, cleanup, NULL)
+ == SYS_USB_CONNECTED)
+ return PLUGIN_USB_CONNECTED;
+ break;
+
} /* switch */
if (button != BUTTON_NONE)
diff --git a/apps/plugins/metronome.c b/apps/plugins/metronome.c
index 2dd7c89..cf5113c 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){
button = rb->button_get(true);
- if (rb->default_event_handler_ex(button, cleanup, NULL)
- == SYS_USB_CONNECTED)
- return PLUGIN_USB_CONNECTED;
-
switch (button) {
case METRONOME_QUIT:
@@ -294,6 +290,13 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter){
calc_period();
draw_display();
break;
+
+ default:
+ if (rb->default_event_handler_ex(button, cleanup, NULL)
+ == SYS_USB_CONNECTED)
+ return PLUGIN_USB_CONNECTED;
+ break;
+
}
}
}
diff --git a/apps/plugins/rockblox.c b/apps/plugins/rockblox.c
index f90ced2..eac6563 100644
--- a/apps/plugins/rockblox.c
+++ b/apps/plugins/rockblox.c
@@ -318,12 +318,15 @@ static void move_down(void)
static int game_loop(void)
{
+ int button;
+
while(1)
{
int count = 0;
while(count * 300 < level_speeds[level])
{
- switch(rb->button_get_w_tmo(HZ/10))
+ button = rb->button_get_w_tmo(HZ/10);
+ switch(button)
{
case BUTTON_OFF:
return PLUGIN_OK;
@@ -348,9 +351,10 @@ static int game_loop(void)
move_down();
break;
- case SYS_USB_CONNECTED:
- rb->usb_screen();
- return PLUGIN_USB_CONNECTED;
+ default:
+ if (rb->default_event_handler(button) == SYS_USB_CONNECTED)
+ return PLUGIN_USB_CONNECTED;
+ break;
}
count++;
diff --git a/apps/plugins/snow.c b/apps/plugins/snow.c
index df9966e..77ec350 100644
--- a/apps/plugins/snow.c
+++ b/apps/plugins/snow.c
@@ -93,6 +93,7 @@ static void snow_init(void)
enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
{
+ int button;
TEST_PLUGIN_API(api);
(void)(parameter);
rb = api;
@@ -103,8 +104,13 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
rb->lcd_update();
rb->sleep(HZ/20);
- if (rb->button_get(false) == BUTTON_OFF)
+ button = rb->button_get(false);
+
+ if (button == BUTTON_OFF)
return false;
+ else
+ if (rb->default_event_handler(button) == SYS_USB_CONNECTED)
+ return PLUGIN_USB_CONNECTED;
}
}
diff --git a/apps/plugins/stopwatch.c b/apps/plugins/stopwatch.c
index 370a1b5..6157dda 100644
--- a/apps/plugins/stopwatch.c
+++ b/apps/plugins/stopwatch.c
@@ -31,6 +31,30 @@
#define MAX_LAPS 10
#define MAX_SCROLL (MAX_LAPS - LAP_LINES)
+/* variable button definitions */
+#if CONFIG_KEYPAD == RECORDER_PAD
+#define STOPWATCH_QUIT BUTTON_OFF
+#define STOPWATCH_START_STOP BUTTON_PLAY
+#define STOPWATCH_RESET_TIMER BUTTON_LEFT
+#define STOPWATCH_LAP_TIMER BUTTON_ON
+#define STOPWATCH_SCROLL_UP BUTTON_UP
+#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN
+#elif CONFIG_KEYPAD == ONDIO_PAD
+#define STOPWATCH_QUIT BUTTON_OFF
+#define STOPWATCH_START_STOP BUTTON_RIGHT
+#define STOPWATCH_RESET_TIMER BUTTON_LEFT
+#define STOPWATCH_LAP_TIMER BUTTON_MENU
+#define STOPWATCH_SCROLL_UP BUTTON_UP
+#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN
+#elif CONFIG_KEYPAD == PLAYER_PAD
+#define STOPWATCH_QUIT BUTTON_MENU
+#define STOPWATCH_START_STOP BUTTON_PLAY
+#define STOPWATCH_RESET_TIMER BUTTON_STOP
+#define STOPWATCH_LAP_TIMER BUTTON_ON
+#define STOPWATCH_SCROLL_UP BUTTON_RIGHT
+#define STOPWATCH_SCROLL_DOWN BUTTON_LEFT
+#endif
+
static struct plugin_api* rb;
static int stopwatch = 0;
@@ -102,17 +126,13 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
switch (button)
{
- /* OFF/MENU key to exit */
-#if CONFIG_KEYPAD == RECORDER_PAD
- case BUTTON_OFF:
-#else
- case BUTTON_MENU:
-#endif
+ /* exit */
+ case STOPWATCH_QUIT:
done = true;
break;
- /* PLAY = Stop/Start toggle */
- case BUTTON_PLAY:
+ /* Stop/Start toggle */
+ case STOPWATCH_START_STOP:
counting = ! counting;
if (counting)
{
@@ -126,12 +146,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
}
break;
- /* LEFT = Reset timer */
-#if CONFIG_KEYPAD == RECORDER_PAD
- case BUTTON_LEFT:
-#else
- case BUTTON_STOP:
-#endif
+ /* Reset timer */
+ case STOPWATCH_RESET_TIMER:
if (!counting)
{
prev_total = 0;
@@ -140,19 +156,15 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
}
break;
- /* ON = Lap timer */
- case BUTTON_ON:
+ /* Lap timer */
+ case STOPWATCH_LAP_TIMER:
lap_times[curr_lap%MAX_LAPS] = stopwatch;
curr_lap++;
update_lap = true;
break;
- /* UP (RIGHT/+) = Scroll Lap timer up */
-#if CONFIG_KEYPAD == RECORDER_PAD
- case BUTTON_UP:
-#else
- case BUTTON_RIGHT:
-#endif
+ /* Scroll Lap timer up */
+ case STOPWATCH_SCROLL_UP:
if (lap_scroll > 0)
{
lap_scroll --;
@@ -160,12 +172,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
}
break;
- /* DOWN (LEFT/-) = Scroll Lap timer down */
-#if CONFIG_KEYPAD == RECORDER_PAD
- case BUTTON_DOWN:
-#else
- case BUTTON_LEFT:
-#endif
+ /* Scroll Lap timer down */
+ case STOPWATCH_SCROLL_DOWN:
if ((lap_scroll < curr_lap - LAP_LINES) &&
(lap_scroll < MAX_SCROLL) )
{
@@ -174,9 +182,10 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
}
break;
- case SYS_USB_CONNECTED:
- rb->usb_screen();
- return PLUGIN_USB_CONNECTED;
+ default:
+ if (rb->default_event_handler(button) == SYS_USB_CONNECTED)
+ return PLUGIN_USB_CONNECTED;
+ break;
}
if (counting)
diff --git a/apps/plugins/video.c b/apps/plugins/video.c
index e63ef1c..de05ba4 100644
--- a/apps/plugins/video.c
+++ b/apps/plugins/video.c
@@ -36,9 +36,17 @@
#if CONFIG_KEYPAD == RECORDER_PAD
#define VIDEO_STOP_SEEK BUTTON_PLAY
#define VIDEO_RESUME BUTTON_PLAY
+#define VIDEO_DEBUG BUTTON_F1
+#define VIDEO_CONTRAST_DOWN BUTTON_F2
+#define VIDEO_CONTRAST_UP BUTTON_F3
+
#elif CONFIG_KEYPAD == ONDIO_PAD
-#define VIDEO_STOP_SEEK BUTTON_MENU
+#define VIDEO_STOP_SEEK_PRE BUTTON_MENU
+#define VIDEO_STOP_SEEK (BUTTON_MENU | BUTTON_REL)
#define VIDEO_RESUME BUTTON_RIGHT
+#define VIDEO_CONTRAST_DOWN (BUTTON_MENU | BUTTON_DOWN)
+#define VIDEO_CONTRAST_UP (BUTTON_MENU | BUTTON_UP)
+
#endif
/****************** constants ******************/
@@ -285,7 +293,6 @@ void ChangeVolume(int delta)
}
-#if CONFIG_KEYPAD == RECORDER_PAD
// helper function to change the LCD contrast by a certain amount, +/-
void ChangeContrast(int delta)
{
@@ -313,7 +320,6 @@ void ChangeContrast(int delta)
}
}
}
-#endif
// sync the video to the current audio
@@ -563,6 +569,7 @@ void Cleanup(void *fd)
int PlayTick(int fd)
{
int button;
+ static int lastbutton = 0;
int avail_audio = -1, avail_video = -1;
int retval = 1;
int filepos;
@@ -667,11 +674,6 @@ int PlayTick(int fd)
else
filepos -= Available(gBuf.pReadAudio); // else audio
- if (rb->default_event_handler_ex(button, Cleanup, &fd)
- == SYS_USB_CONNECTED)
- retval = -1; // signal "aborted" to caller
- // SYS_USB_CONNECTED won't be catched again by the switch()
-
switch (button)
{ // set exit conditions
case BUTTON_OFF:
@@ -686,6 +688,10 @@ int PlayTick(int fd)
retval = 0; // signal "stopped" to caller
break;
case VIDEO_STOP_SEEK:
+#ifdef VIDEO_STOP_SEEK_PRE
+ if (lastbutton != VIDEO_STOP_SEEK_PRE)
+ break;
+#endif
if (gPlay.bSeeking)
{
gPlay.bSeeking = false;
@@ -757,25 +763,32 @@ int PlayTick(int fd)
else
gPlay.nSeekAcc++;
break;
-#if CONFIG_KEYPAD == RECORDER_PAD
- case BUTTON_F1: // debug key
- case BUTTON_F1 | BUTTON_REPEAT:
+#ifdef VIDEO_DEBUG
+ case VIDEO_DEBUG: // debug key
+ case VIDEO_DEBUG | BUTTON_REPEAT:
DrawBuf(); // show buffer status
gPlay.nTimeOSD = 30;
gPlay.bDirtyOSD = true;
break;
- case BUTTON_F2: // contrast down
- case BUTTON_F2 | BUTTON_REPEAT:
+#endif
+ case VIDEO_CONTRAST_DOWN: // contrast down
+ case VIDEO_CONTRAST_DOWN | BUTTON_REPEAT:
if (gPlay.bHasVideo)
ChangeContrast(-1);
break;
- case BUTTON_F3: // contrast up
- case BUTTON_F3 | BUTTON_REPEAT:
+ case VIDEO_CONTRAST_UP: // contrast up
+ case VIDEO_CONTRAST_UP | BUTTON_REPEAT:
if (gPlay.bHasVideo)
ChangeContrast(1);
break;
-#endif
+ default:
+ if (rb->default_event_handler_ex(button, Cleanup, &fd)
+ == SYS_USB_CONNECTED)
+ retval = -1; // signal "aborted" to caller
+ break;
}
+
+ lastbutton = button;
} /* if (button != BUTTON_NONE) */
diff --git a/apps/plugins/viewer.c b/apps/plugins/viewer.c
index eb15127..4628f8e 100644
--- a/apps/plugins/viewer.c
+++ b/apps/plugins/viewer.c
@@ -56,6 +56,50 @@
#define NEED_SCROLLBAR() ((!(ONE_SCREEN_FITS_ALL())) && \
(view_mode==WIDE? scrollbar_mode[WIDE]==SB_ON: scrollbar_mode[NARROW]==SB_ON))
+/* variable button definitions */
+#if CONFIG_KEYPAD == RECORDER_PAD
+#define VIEWER_QUIT BUTTON_OFF
+#define VIEWER_PAGE_UP BUTTON_UP
+#define VIEWER_PAGE_DOWN BUTTON_DOWN
+#define VIEWER_SCREEN_LEFT BUTTON_LEFT
+#define VIEWER_SCREEN_RIGHT BUTTON_RIGHT
+#define VIEWER_MODE_WRAP BUTTON_F1
+#define VIEWER_MODE_LINE BUTTON_F2
+#define VIEWER_MODE_WIDTH BUTTON_F3
+/* Recorder/ Ondio only */
+#define VIEWER_MODE_PAGE (BUTTON_ON | BUTTON_F1)
+#define VIEWER_MODE_SCROLLBAR (BUTTON_ON | BUTTON_F3)
+/* Recorder only */
+#define VIEWER_LINE_UP (BUTTON_ON | BUTTON_UP)
+#define VIEWER_LINE_DOWN (BUTTON_ON | BUTTON_DOWN)
+#define VIEWER_COLUMN_LEFT (BUTTON_ON | BUTTON_LEFT)
+#define VIEWER_COLUMN_RIGHT (BUTTON_ON | BUTTON_RIGHT)
+
+#elif CONFIG_KEYPAD == ONDIO_PAD
+#define VIEWER_QUIT BUTTON_OFF
+#define VIEWER_PAGE_UP BUTTON_UP
+#define VIEWER_PAGE_DOWN BUTTON_DOWN
+#define VIEWER_SCREEN_LEFT BUTTON_LEFT
+#define VIEWER_SCREEN_RIGHT BUTTON_RIGHT
+#define VIEWER_MODE_WRAP (BUTTON_MENU | BUTTON_LEFT)
+#define VIEWER_MODE_LINE (BUTTON_MENU | BUTTON_UP)
+#define VIEWER_MODE_WIDTH (BUTTON_MENU | BUTTON_RIGHT)
+/* Recorder/ Ondio only */
+#define VIEWER_MODE_PAGE (BUTTON_MENU | BUTTON_DOWN)
+#define VIEWER_MODE_SCROLLBAR (BUTTON_MENU | BUTTON_OFF)
+
+#elif CONFIG_KEYPAD == PLAYER_PAD
+#define VIEWER_QUIT BUTTON_STOP
+#define VIEWER_PAGE_UP BUTTON_LEFT
+#define VIEWER_PAGE_DOWN BUTTON_RIGHT
+#define VIEWER_SCREEN_LEFT (BUTTON_MENU | BUTTON_LEFT)
+#define VIEWER_SCREEN_RIGHT (BUTTON_MENU | BUTTON_RIGHT)
+#define VIEWER_MODE_WRAP (BUTTON_ON | BUTTON_LEFT)
+#define VIEWER_MODE_LINE (BUTTON_ON | BUTTON_MENU | BUTTON_RIGHT)
+#define VIEWER_MODE_WIDTH (BUTTON_ON | BUTTON_RIGHT)
+
+#endif
+
enum {
WRAP=0,
CHOP,
@@ -625,8 +669,10 @@ static bool viewer_init(char* file)
return true;
}
-static void viewer_exit(void)
+static void viewer_exit(void *parameter)
{
+ (void)parameter;
+
rb->close(fd);
}
@@ -641,90 +687,10 @@ static int col_limit(int col)
return col;
}
-#ifdef HAVE_LCD_BITMAP
-static int viewer_recorder_on_button(int col)
-{
- bool exit = false;
-
- while (!exit) {
- switch (rb->button_get(true)) {
- case BUTTON_ON | BUTTON_F1:
- /* Page-overlap mode */
- if (++page_mode == PAGE_MODES)
- page_mode = 0;
-
- rb->splash(HZ, true, "%s %s",
- page_mode_str[page_mode],
- page_mode_str[PAGE_MODES]);
-
- viewer_draw(col);
- break;
-
- case BUTTON_ON | BUTTON_F3:
- /* Show-scrollbar mode for current view-width mode */
- if (!(ONE_SCREEN_FITS_ALL())) {
- if (++scrollbar_mode[view_mode] == SCROLLBAR_MODES)
- scrollbar_mode[view_mode] = 0;
-
- init_need_scrollbar();
- viewer_draw(col);
-
- rb->splash(HZ, true, "%s %s (%s %s)",
- scrollbar_mode_str[SCROLLBAR_MODES],
- scrollbar_mode_str[scrollbar_mode[view_mode]],
- view_mode_str[view_mode],
- view_mode_str[VIEW_MODES]);
- }
- viewer_draw(col);
- break;
-
- case BUTTON_ON | BUTTON_UP:
- case BUTTON_ON | BUTTON_UP | BUTTON_REPEAT:
- /* Scroll up one line */
- viewer_scroll_up();
- viewer_draw(col);
- break;
-
- case BUTTON_ON | BUTTON_DOWN:
- case BUTTON_ON | BUTTON_DOWN | BUTTON_REPEAT:
- /* Scroll down one line */
- if (next_screen_ptr != NULL)
- screen_top_ptr = next_line_ptr;
-
- viewer_draw(col);
- break;
-
- case BUTTON_ON | BUTTON_LEFT:
- case BUTTON_ON | BUTTON_LEFT | BUTTON_REPEAT:
- /* Scroll left one column */
- col--;
- col = col_limit(col);
- viewer_draw(col);
- break;
-
- case BUTTON_ON | BUTTON_RIGHT:
- case BUTTON_ON | BUTTON_RIGHT | BUTTON_REPEAT:
- /* Scroll right one column */
- col++;
- col = col_limit(col);
- viewer_draw(col);
- break;
-
- case BUTTON_ON | BUTTON_REL:
- case BUTTON_ON | BUTTON_DOWN | BUTTON_REL:
- case BUTTON_ON | BUTTON_UP | BUTTON_REL:
- /* Drop out of this loop (when ON btn released) */
- exit = true;
- break;
- }
- }
- return col;
-}
-#endif
-
enum plugin_status plugin_start(struct plugin_api* api, void* file)
{
bool exit=false;
+ int button;
int col = 0;
int i;
int ok;
@@ -738,28 +704,22 @@ enum plugin_status plugin_start(struct plugin_api* api, void* file)
ok = viewer_init(file);
if (!ok) {
rb->splash(HZ, false, "Error");
- viewer_exit();
+ viewer_exit(NULL);
return PLUGIN_OK;
}
viewer_draw(col);
while (!exit) {
- switch (rb->button_get(true)) {
-#if CONFIG_KEYPAD == RECORDER_PAD
- case BUTTON_OFF:
-#else
- case BUTTON_STOP:
-#endif
- viewer_exit();
+ button = rb->button_get(true);
+ switch (button) {
+
+ case VIEWER_QUIT:
+ viewer_exit(NULL);
exit = true;
break;
-#if CONFIG_KEYPAD == RECORDER_PAD
- case BUTTON_F1:
-#else
- case BUTTON_ON | BUTTON_LEFT:
-#endif
+ case VIEWER_MODE_WRAP:
/* Word-wrap mode: WRAP or CHOP */
if (++word_mode == WORD_MODES)
word_mode = 0;
@@ -776,11 +736,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* file)
viewer_draw(col);
break;
-#if CONFIG_KEYPAD == RECORDER_PAD
- case BUTTON_F2:
-#else
- case BUTTON_ON | BUTTON_MENU | BUTTON_RIGHT:
-#endif
+ case VIEWER_MODE_LINE:
/* Line-paragraph mode: NORMAL, JOIN or EXPAND */
if (++line_mode == LINE_MODES)
line_mode = 0;
@@ -802,11 +758,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* file)
viewer_draw(col);
break;
-#if CONFIG_KEYPAD == RECORDER_PAD
- case BUTTON_F3:
-#else
- case BUTTON_ON | BUTTON_RIGHT:
-#endif
+ case VIEWER_MODE_WIDTH:
/* View-width mode: NARROW or WIDE */
if (line_mode == JOIN)
rb->splash(HZ, true, "(no %s %s)",
@@ -843,13 +795,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* file)
viewer_draw(col);
break;
-#if CONFIG_KEYPAD == RECORDER_PAD
- case BUTTON_UP:
- case BUTTON_UP | BUTTON_REPEAT:
-#else
- case BUTTON_LEFT:
- case BUTTON_LEFT | BUTTON_REPEAT:
-#endif
+ case VIEWER_PAGE_UP:
+ case VIEWER_PAGE_UP | BUTTON_REPEAT:
/* Page up */
#ifdef HAVE_LCD_BITMAP
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)
viewer_draw(col);
break;
-#if CONFIG_KEYPAD == RECORDER_PAD
- case BUTTON_DOWN:
- case BUTTON_DOWN | BUTTON_REPEAT:
-#else
- case BUTTON_RIGHT:
- case BUTTON_RIGHT | BUTTON_REPEAT:
-#endif
+ case VIEWER_PAGE_DOWN:
+ case VIEWER_PAGE_DOWN | BUTTON_REPEAT:
/* Page down */
if (next_screen_ptr != NULL)
screen_top_ptr = next_screen_to_draw_ptr;
@@ -875,13 +817,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* file)
viewer_draw(col);
break;
-#if CONFIG_KEYPAD == RECORDER_PAD
- case BUTTON_LEFT:
- case BUTTON_LEFT | BUTTON_REPEAT:
-#else
- case BUTTON_MENU | BUTTON_LEFT:
- case BUTTON_MENU | BUTTON_LEFT | BUTTON_REPEAT:
-#endif
+ case VIEWER_SCREEN_LEFT:
+ case VIEWER_SCREEN_LEFT | BUTTON_REPEAT:
if (view_mode == WIDE) {
/* Screen left */
col -= display_columns;
@@ -895,13 +832,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* file)
viewer_draw(col);
break;
-#if CONFIG_KEYPAD == RECORDER_PAD
- case BUTTON_RIGHT:
- case BUTTON_RIGHT | BUTTON_REPEAT:
-#else
- case BUTTON_MENU | BUTTON_RIGHT:
- case BUTTON_MENU | BUTTON_RIGHT | BUTTON_REPEAT:
-#endif
+ case VIEWER_SCREEN_RIGHT:
+ case VIEWER_SCREEN_RIGHT | BUTTON_REPEAT:
if (view_mode == WIDE) {
/* Screen right */
col += display_columns;
@@ -915,18 +847,77 @@ enum plugin_status plugin_start(struct plugin_api* api, void* file)
viewer_draw(col);
break;
+#if (CONFIG_KEYPAD == RECORDER_PAD) || (CONFIG_KEYPAD == ONDIO_PAD)
+ case VIEWER_MODE_PAGE:
+ /* Page-overlap mode */
+ if (++page_mode == PAGE_MODES)
+ page_mode = 0;
+
+ rb->splash(HZ, true, "%s %s",
+ page_mode_str[page_mode],
+ page_mode_str[PAGE_MODES]);
+
+ viewer_draw(col);
+ break;
+
+ case VIEWER_MODE_SCROLLBAR:
+ /* Show-scrollbar mode for current view-width mode */
+ if (!(ONE_SCREEN_FITS_ALL())) {
+ if (++scrollbar_mode[view_mode] == SCROLLBAR_MODES)
+ scrollbar_mode[view_mode] = 0;
+
+ init_need_scrollbar();
+ viewer_draw(col);
+
+ rb->splash(HZ, true, "%s %s (%s %s)",
+ scrollbar_mode_str[SCROLLBAR_MODES],
+ scrollbar_mode_str[scrollbar_mode[view_mode]],
+ view_mode_str[view_mode],
+ view_mode_str[VIEW_MODES]);
+ }
+ viewer_draw(col);
+ break;
+#endif
+
#if CONFIG_KEYPAD == RECORDER_PAD
- case BUTTON_ON:
- /*Go to On-btn combinations */
- col = viewer_recorder_on_button(col);
+ case VIEWER_LINE_UP:
+ case VIEWER_LINE_UP | BUTTON_REPEAT:
+ /* Scroll up one line */
+ viewer_scroll_up();
+ viewer_draw(col);
+ break;
+
+ case VIEWER_LINE_DOWN:
+ case VIEWER_LINE_DOWN | BUTTON_REPEAT:
+ /* Scroll down one line */
+ if (next_screen_ptr != NULL)
+ screen_top_ptr = next_line_ptr;
+
+ viewer_draw(col);
+ break;
+
+ case VIEWER_COLUMN_LEFT:
+ case VIEWER_COLUMN_LEFT | BUTTON_REPEAT:
+ /* Scroll left one column */
+ col--;
+ col = col_limit(col);
+ viewer_draw(col);
+ break;
+
+ case VIEWER_COLUMN_RIGHT:
+ case VIEWER_COLUMN_RIGHT | BUTTON_REPEAT:
+ /* Scroll right one column */
+ col++;
+ col = col_limit(col);
+ viewer_draw(col);
break;
#endif
- case SYS_USB_CONNECTED:
- /* Release control to USB functions */
- rb->usb_screen();
- viewer_exit();
- return PLUGIN_USB_CONNECTED;
+ default:
+ if (rb->default_event_handler_ex(button, viewer_exit, NULL)
+ == SYS_USB_CONNECTED)
+ return PLUGIN_USB_CONNECTED;
+ break;
}
}
return PLUGIN_OK;