summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-09-29 22:24:00 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-09-29 22:24:00 +0000
commit5f8ac6d677963835c4c2bbec57bff031ec5ba89e (patch)
tree069cb952ad41c384874c6053453fb472cb35a5ab
parent46d2d3868b36616d5cdb714ffd25eb583c3372ba (diff)
downloadrockbox-5f8ac6d677963835c4c2bbec57bff031ec5ba89e.tar.gz
rockbox-5f8ac6d677963835c4c2bbec57bff031ec5ba89e.zip
ON+UP/DOWN now acts as pgup/pgdn in dir browser on recorder.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2443 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/tree.c84
1 files changed, 78 insertions, 6 deletions
diff --git a/apps/tree.c b/apps/tree.c
index ca6aeba184..a9b62e0beb 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -586,6 +586,67 @@ void set_current_file(char *path)
586 } 586 }
587} 587}
588 588
589#ifdef HAVE_RECORDER_KEYPAD
590bool pageupdown(int* ds, int* dc, int numentries, int tree_max_on_screen )
591{
592 bool exit = false;
593 bool used = false;
594
595 int dirstart = *ds;
596 int dircursor = *dc;
597
598 while (!exit) {
599 switch (button_get(true)) {
600 case BUTTON_UP:
601 case BUTTON_ON | BUTTON_UP:
602 case BUTTON_ON | BUTTON_UP | BUTTON_REPEAT:
603 used = true;
604 if ( dirstart ) {
605 dirstart -= tree_max_on_screen;
606 if ( dirstart < 0 )
607 dirstart = 0;
608 }
609 else
610 dircursor = 0;
611 break;
612
613 case BUTTON_DOWN:
614 case BUTTON_ON | BUTTON_DOWN:
615 case BUTTON_ON | BUTTON_DOWN | BUTTON_REPEAT:
616 used = true;
617 if ( dirstart < numentries - tree_max_on_screen ) {
618 dirstart += tree_max_on_screen;
619 if ( dirstart >
620 numentries - tree_max_on_screen )
621 dirstart = numentries - tree_max_on_screen;
622 }
623 else
624 dircursor = numentries - dirstart - 1;
625 break;
626
627#ifdef SIMULATOR
628 case BUTTON_ON:
629#else
630 case BUTTON_ON | BUTTON_REL:
631 case BUTTON_ON | BUTTON_UP | BUTTON_REL:
632 case BUTTON_ON | BUTTON_DOWN | BUTTON_REL:
633#endif
634 exit = true;
635 break;
636 }
637 if ( used ) {
638 showdir(currdir, dirstart);
639 put_cursorxy(CURSOR_X, CURSOR_Y + dircursor, true);
640 lcd_update();
641 }
642 }
643 *ds = dirstart;
644 *dc = dircursor;
645
646 return used;
647}
648#endif
649
589bool dirbrowse(char *root) 650bool dirbrowse(char *root)
590{ 651{
591 int numentries=0; 652 int numentries=0;
@@ -894,15 +955,26 @@ bool dirbrowse(char *root)
894 break; 955 break;
895 956
896 case BUTTON_ON: 957 case BUTTON_ON:
897 if (mpeg_status() & MPEG_STATUS_PLAY) 958#ifdef HAVE_RECORDER_KEYPAD
959 if (pageupdown(&dirstart, &dircursor, numentries,
960 tree_max_on_screen))
898 { 961 {
899 lcd_stop_scroll(); 962 /* start scroll */
900 if (wps_show() == SYS_USB_CONNECTED) 963 restore = true;
901 reload_root = true; 964 }
965 else
966#endif
967 {
968 if (mpeg_status() & MPEG_STATUS_PLAY)
969 {
970 lcd_stop_scroll();
971 if (wps_show() == SYS_USB_CONNECTED)
972 reload_root = true;
902#ifdef HAVE_LCD_BITMAP 973#ifdef HAVE_LCD_BITMAP
903 tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; 974 tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh;
904#endif 975#endif
905 restore = true; 976 restore = true;
977 }
906 } 978 }
907 break; 979 break;
908 980