summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-09-03 20:47:23 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-09-03 20:47:23 +0000
commit0ad2010865165120a521272eef68d00b6a7b2edc (patch)
tree6384e594f4df2d0bca683528c3026accb67d3ab8
parent5867b496593011017808d8b819da9fa0b347e8c9 (diff)
downloadrockbox-0ad2010865165120a521272eef68d00b6a7b2edc.zip
rockbox-0ad2010865165120a521272eef68d00b6a7b2edc.tar.gz
rockbox-0ad2010865165120a521272eef68d00b6a7b2edc.tar.bz2
rockbox-0ad2010865165120a521272eef68d00b6a7b2edc.tar.xz
Added dir filter toggle (mp3/m3u) to F2 quick-set screen.
Added UpArrow and DownArrow icons. Simplified dir reload handling in tree.c git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2158 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/recorder/icons.c6
-rw-r--r--apps/recorder/icons.h2
-rw-r--r--apps/tree.c96
-rw-r--r--apps/wps.c35
4 files changed, 61 insertions, 78 deletions
diff --git a/apps/recorder/icons.c b/apps/recorder/icons.c
index 440902a..0501a3f 100644
--- a/apps/recorder/icons.c
+++ b/apps/recorder/icons.c
@@ -97,7 +97,11 @@ unsigned char bitmap_icons_7x8[][7] =
/* Repeat playmode */
{0x38,0x44,0x44,0x4e,0x5f,0x44,0x38},
/* Shuffle playmode (dice) */
- {0x3e,0x41,0x51,0x41,0x45,0x41,0x3e}
+ {0x3e,0x41,0x51,0x41,0x45,0x41,0x3e},
+ /* Down-arrow */
+ {0x04,0x0c,0x1c,0x3c,0x1c,0x0c,0x04},
+ /* Up-arrow */
+ {0x20,0x30,0x38,0x3c,0x38,0x30,0x20},
};
unsigned char rockbox112x37[]={
diff --git a/apps/recorder/icons.h b/apps/recorder/icons.h
index 46b7c3d..3102093 100644
--- a/apps/recorder/icons.h
+++ b/apps/recorder/icons.h
@@ -50,6 +50,8 @@ enum icons_7x8 {
Icon_Normal,
Icon_Repeat,
Icon_Shuffle,
+ Icon_DownArrow,
+ Icon_UpArrow,
Icon_Last
};
diff --git a/apps/tree.c b/apps/tree.c
index c9cbf4d..a190d78 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -327,18 +327,17 @@ static int showdir(char *path, int start)
default:
icon_type = 0;
}
+
+ if (icon_type) {
#ifdef HAVE_LCD_BITMAP
- if (icon_type)
lcd_bitmap(bitmap_icons_6x8[icon_type],
CURSOR_X * 6 + CURSOR_WIDTH,
MARGIN_Y+(i-start)*line_height, 6, 8, true);
#else
- if(icon_type!=0)
- {
lcd_define_pattern((i-start)*8,tree_icons_5x7[icon_type],8);
lcd_putc(LINE_X-1, i-start, i-start);
- }
#endif
+ }
/* if MP3 filter is on, cut off the extension */
if (global_settings.mp3filter &&
@@ -476,9 +475,12 @@ bool dirbrowse(char *root)
char buf[MAX_PATH];
int i;
int lasti=-1;
- int rc;
int button;
int tree_max_on_screen;
+ bool reload_root = false;
+ bool lastfilter = global_settings.mp3filter;
+ bool lastsortcase = global_settings.sort_case;
+ bool lastshowhidden = global_settings.show_hidden_files;
#ifdef LOADABLE_FONTS
int fh;
unsigned char *font = lcd_getcurrentldfont();
@@ -629,15 +631,8 @@ bool dirbrowse(char *root)
status_set_playmode(STATUS_PLAY);
status_draw();
lcd_stop_scroll();
- rc = wps_show();
- if(rc == SYS_USB_CONNECTED)
- {
- /* Force a re-read of the root directory */
- strcpy(currdir, "/");
- lastdir[0] = 0;
- dirlevel = 0;
- dircursor = 0;
- start = 0;
+ if ( wps_show() == SYS_USB_CONNECTED ) {
+ reload_root = true;
global_settings.resume_index = -1;
}
#ifdef LOADABLE_FONTS
@@ -721,38 +716,18 @@ bool dirbrowse(char *root)
}
break;
- case TREE_MENU: {
- bool lastfilter = global_settings.mp3filter;
- bool lastsortcase = global_settings.sort_case;
- bool show_hidden_files = global_settings.show_hidden_files;
- Menu result;
-
+ case TREE_MENU:
lcd_stop_scroll();
- result = main_menu();
- /* do we need to rescan dir? */
- if (result == MENU_DISK_CHANGED ||
- lastfilter != global_settings.mp3filter ||
- lastsortcase != global_settings.sort_case ||
- show_hidden_files != global_settings.show_hidden_files)
- lastdir[0] = 0;
+ main_menu();
restore = true;
break;
- }
case BUTTON_ON:
if (mpeg_is_playing())
{
lcd_stop_scroll();
- rc = wps_show();
- if(rc == SYS_USB_CONNECTED)
- {
- /* Force a re-read of the root directory */
- strcpy(currdir, "/");
- lastdir[0] = 0;
- dirlevel = 0;
- dircursor = 0;
- start = 0;
- }
+ if (wps_show() == SYS_USB_CONNECTED)
+ reload_root = true;
#ifdef LOADABLE_FONTS
tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh;
#else
@@ -764,24 +739,14 @@ bool dirbrowse(char *root)
#ifdef HAVE_RECORDER_KEYPAD
case BUTTON_F2:
- if (f2_screen()) {
- /* reread root dir */
- strcpy(currdir, "/");
- lastdir[0] = 0;
- dirlevel = 0;
- dircursor = 0;
- }
+ if (f2_screen())
+ reload_root = true;
restore = true;
break;
case BUTTON_F3:
- if (f3_screen()) {
- /* reread root dir */
- strcpy(currdir, "/");
- lastdir[0] = 0;
- dirlevel = 0;
- dircursor = 0;
- }
+ if (f3_screen())
+ reload_root = true;
#ifdef LOADABLE_FONTS
tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh;
#else
@@ -805,12 +770,7 @@ bool dirbrowse(char *root)
backlight_time(global_settings.backlight);
/* Force a re-read of the root directory */
- restore = true;
- strcpy(currdir, "/");
- lastdir[0] = 0;
- dirlevel = 0;
- dircursor = 0;
- start = 0;
+ reload_root = true;
}
break;
#endif
@@ -819,6 +779,26 @@ bool dirbrowse(char *root)
if ( button )
ata_spin();
+ /* do we need to rescan dir? */
+ if (reload_root ||
+ lastfilter != global_settings.mp3filter ||
+ lastsortcase != global_settings.sort_case ||
+ lastshowhidden != global_settings.show_hidden_files)
+ {
+ if ( reload_root ) {
+ strcpy(currdir, "/");
+ dirlevel = 0;
+ reload_root = false;
+ }
+ dircursor = 0;
+ start = 0;
+ lastdir[0] = 0;
+ lastfilter = global_settings.mp3filter;
+ lastsortcase = global_settings.sort_case;
+ lastshowhidden = global_settings.show_hidden_files;
+ restore = true;
+ }
+
if ( restore ) {
/* restore display */
/* We need to adjust if the number of lines on screen have
diff --git a/apps/wps.c b/apps/wps.c
index 029ed44..e894cad 100644
--- a/apps/wps.c
+++ b/apps/wps.c
@@ -638,15 +638,7 @@ bool f2_screen(void)
while (!exit) {
int w,h;
- char* ptr;
-
- ptr = "Repeat";
-#ifdef LCD_PROPFONTS
- lcd_getstringsize(ptr,0,&w,&h);
-#else
- lcd_getfontsize(0,&w,&h);
- w *= strlen(ptr);
-#endif
+ char buf[32];
lcd_clear_display();
@@ -657,13 +649,18 @@ bool f2_screen(void)
lcd_bitmap(bitmap_icons_7x8[Icon_FastBackward],
LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8, true);
- /* commented out until we really can disable repeat
- lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h*2, ptr, 0);
- lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h, "mode:", 0);
- lcd_putsxy(LCD_WIDTH - w, LCD_HEIGHT/2, "on", 0 );
- lcd_bitmap(bitmap_icons_7x8[Icon_FastForward],
- LCD_WIDTH/2 + 8, LCD_HEIGHT/2 - 4, 7, 8, true);
- */
+ snprintf(buf, sizeof buf, "Dir filter: %s",
+ global_settings.mp3filter ? "on" : "off");
+#ifdef LCD_PROPFONTS
+ lcd_getstringsize(buf,0,&w,&h);
+#else
+ lcd_getfontsize(0,&w,&h);
+ w *= strlen(buf);
+#endif
+ lcd_putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h, buf, 0);
+ lcd_bitmap(bitmap_icons_7x8[Icon_DownArrow],
+ LCD_WIDTH/2 - 3, LCD_HEIGHT - h*3, 7, 8, true);
+
lcd_update();
switch (button_get(true)) {
@@ -678,9 +675,9 @@ bool f2_screen(void)
sort_playlist(true);
break;
- case BUTTON_RIGHT:
- case BUTTON_F2 | BUTTON_RIGHT:
- /* toggle repeat */
+ case BUTTON_DOWN:
+ case BUTTON_F2 | BUTTON_DOWN:
+ global_settings.mp3filter = !global_settings.mp3filter;
break;
#ifdef SIMULATOR