diff options
author | Linus Nielsen Feltzing <linus@haxx.se> | 2004-03-16 13:44:56 +0000 |
---|---|---|
committer | Linus Nielsen Feltzing <linus@haxx.se> | 2004-03-16 13:44:56 +0000 |
commit | 77936e6ec5c2d71f605df855ed24677c307b1bc7 (patch) | |
tree | f58c287f2a9f575c764b026116e32787c6c5bc0e /apps/tree.c | |
parent | ce0878bd40ea07d126181d1827a235f7c3ee1b00 (diff) | |
download | rockbox-77936e6ec5c2d71f605df855ed24677c307b1bc7.tar.gz rockbox-77936e6ec5c2d71f605df855ed24677c307b1bc7.zip |
First shot at a nice little button bar at the bottom of the recorder LCD. Enable Button Bar in the Display settings. Only the dir browser uses it at the moment.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4391 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/tree.c')
-rw-r--r-- | apps/tree.c | 45 |
1 files changed, 33 insertions, 12 deletions
diff --git a/apps/tree.c b/apps/tree.c index 7a7ba3a2f9..18758e3570 100644 --- a/apps/tree.c +++ b/apps/tree.c | |||
@@ -387,6 +387,24 @@ struct entry* load_and_sort_directory(char *dirname, int *dirfilter, | |||
387 | return dircache; | 387 | return dircache; |
388 | } | 388 | } |
389 | 389 | ||
390 | #ifdef HAVE_LCD_BITMAP | ||
391 | static int recalc_screen_height(void) | ||
392 | { | ||
393 | int fw, fh; | ||
394 | int height = LCD_HEIGHT; | ||
395 | |||
396 | lcd_setfont(FONT_UI); | ||
397 | lcd_getstringsize("A", &fw, &fh); | ||
398 | if(global_settings.statusbar) | ||
399 | height -= STATUSBAR_HEIGHT; | ||
400 | |||
401 | if(global_settings.buttonbar) | ||
402 | height -= BUTTONBAR_HEIGHT; | ||
403 | |||
404 | return height / fh; | ||
405 | } | ||
406 | #endif | ||
407 | |||
390 | static int showdir(char *path, int start, int *dirfilter) | 408 | static int showdir(char *path, int start, int *dirfilter) |
391 | { | 409 | { |
392 | int icon_type = 0; | 410 | int icon_type = 0; |
@@ -399,7 +417,7 @@ static int showdir(char *path, int start, int *dirfilter) | |||
399 | int fw, fh; | 417 | int fw, fh; |
400 | lcd_setfont(FONT_UI); | 418 | lcd_setfont(FONT_UI); |
401 | lcd_getstringsize("A", &fw, &fh); | 419 | lcd_getstringsize("A", &fw, &fh); |
402 | tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; | 420 | tree_max_on_screen = recalc_screen_height(); |
403 | line_height = fh; | 421 | line_height = fh; |
404 | #else | 422 | #else |
405 | tree_max_on_screen = TREE_MAX_ON_SCREEN; | 423 | tree_max_on_screen = TREE_MAX_ON_SCREEN; |
@@ -536,10 +554,18 @@ static int showdir(char *path, int start, int *dirfilter) | |||
536 | #ifdef HAVE_LCD_BITMAP | 554 | #ifdef HAVE_LCD_BITMAP |
537 | if (global_settings.scrollbar && (filesindir > tree_max_on_screen)) | 555 | if (global_settings.scrollbar && (filesindir > tree_max_on_screen)) |
538 | scrollbar(SCROLLBAR_X, SCROLLBAR_Y, SCROLLBAR_WIDTH - 1, | 556 | scrollbar(SCROLLBAR_X, SCROLLBAR_Y, SCROLLBAR_WIDTH - 1, |
539 | LCD_HEIGHT - SCROLLBAR_Y, filesindir, start, | 557 | tree_max_on_screen * line_height, filesindir, start, |
540 | start + tree_max_on_screen, VERTICAL); | 558 | start + tree_max_on_screen, VERTICAL); |
559 | |||
560 | if(global_settings.buttonbar) { | ||
561 | buttonbar_set(str(LANG_DIRBROWSE_F1), | ||
562 | str(LANG_DIRBROWSE_F2), | ||
563 | str(LANG_DIRBROWSE_F3)); | ||
564 | buttonbar_draw(); | ||
565 | } | ||
541 | #endif | 566 | #endif |
542 | status_draw(true); | 567 | status_draw(true); |
568 | |||
543 | return filesindir; | 569 | return filesindir; |
544 | } | 570 | } |
545 | 571 | ||
@@ -852,10 +878,7 @@ static bool dirbrowse(char *root, int *dirfilter) | |||
852 | has been refreshed on screen */ | 878 | has been refreshed on screen */ |
853 | 879 | ||
854 | #ifdef HAVE_LCD_BITMAP | 880 | #ifdef HAVE_LCD_BITMAP |
855 | int fw, fh; | 881 | tree_max_on_screen = recalc_screen_height(); |
856 | lcd_setfont(FONT_UI); | ||
857 | lcd_getstringsize("A", &fw, &fh); | ||
858 | tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; | ||
859 | #else | 882 | #else |
860 | tree_max_on_screen = TREE_MAX_ON_SCREEN; | 883 | tree_max_on_screen = TREE_MAX_ON_SCREEN; |
861 | #endif | 884 | #endif |
@@ -1065,8 +1088,7 @@ static bool dirbrowse(char *root, int *dirfilter) | |||
1065 | lcd_update(); | 1088 | lcd_update(); |
1066 | 1089 | ||
1067 | /* maybe we have a new font */ | 1090 | /* maybe we have a new font */ |
1068 | lcd_getstringsize("A", &fw, &fh); | 1091 | tree_max_on_screen = recalc_screen_height(); |
1069 | tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; | ||
1070 | /* make sure cursor is on screen */ | 1092 | /* make sure cursor is on screen */ |
1071 | while ( dircursor > tree_max_on_screen ) | 1093 | while ( dircursor > tree_max_on_screen ) |
1072 | { | 1094 | { |
@@ -1114,8 +1136,7 @@ static bool dirbrowse(char *root, int *dirfilter) | |||
1114 | set_file(buf, global_settings.font_file, | 1136 | set_file(buf, global_settings.font_file, |
1115 | MAX_FILENAME); | 1137 | MAX_FILENAME); |
1116 | 1138 | ||
1117 | lcd_getstringsize("A", &fw, &fh); | 1139 | tree_max_on_screen = recalc_screen_height(); |
1118 | tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; | ||
1119 | /* make sure cursor is on screen */ | 1140 | /* make sure cursor is on screen */ |
1120 | while ( dircursor > tree_max_on_screen ) { | 1141 | while ( dircursor > tree_max_on_screen ) { |
1121 | dircursor--; | 1142 | dircursor--; |
@@ -1291,7 +1312,7 @@ static bool dirbrowse(char *root, int *dirfilter) | |||
1291 | reload_root = true; | 1312 | reload_root = true; |
1292 | 1313 | ||
1293 | #ifdef HAVE_LCD_BITMAP | 1314 | #ifdef HAVE_LCD_BITMAP |
1294 | tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; | 1315 | tree_max_on_screen = recalc_screen_height(); |
1295 | #endif | 1316 | #endif |
1296 | restore = true; | 1317 | restore = true; |
1297 | } | 1318 | } |
@@ -1318,7 +1339,7 @@ static bool dirbrowse(char *root, int *dirfilter) | |||
1318 | if (wps_show() == SYS_USB_CONNECTED) | 1339 | if (wps_show() == SYS_USB_CONNECTED) |
1319 | reload_root = true; | 1340 | reload_root = true; |
1320 | #ifdef HAVE_LCD_BITMAP | 1341 | #ifdef HAVE_LCD_BITMAP |
1321 | tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; | 1342 | tree_max_on_screen = recalc_screen_height(); |
1322 | #endif | 1343 | #endif |
1323 | restore = true; | 1344 | restore = true; |
1324 | start_wps=false; | 1345 | start_wps=false; |