diff options
author | Björn Stenberg <bjorn@haxx.se> | 2002-09-29 22:24:00 +0000 |
---|---|---|
committer | Björn Stenberg <bjorn@haxx.se> | 2002-09-29 22:24:00 +0000 |
commit | 5f8ac6d677963835c4c2bbec57bff031ec5ba89e (patch) | |
tree | 069cb952ad41c384874c6053453fb472cb35a5ab | |
parent | 46d2d3868b36616d5cdb714ffd25eb583c3372ba (diff) | |
download | rockbox-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.c | 84 |
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 | ||
590 | bool 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 | |||
589 | bool dirbrowse(char *root) | 650 | bool 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 | ||