From 0ad2010865165120a521272eef68d00b6a7b2edc Mon Sep 17 00:00:00 2001 From: Björn Stenberg Date: Tue, 3 Sep 2002 20:47:23 +0000 Subject: 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 --- apps/recorder/icons.c | 6 +++- apps/recorder/icons.h | 2 ++ apps/tree.c | 96 ++++++++++++++++++++------------------------------- apps/wps.c | 35 +++++++++---------- 4 files changed, 61 insertions(+), 78 deletions(-) (limited to 'apps') diff --git a/apps/recorder/icons.c b/apps/recorder/icons.c index 440902a83a..0501a3f0c0 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 46b7c3d2d9..3102093898 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 c9cbf4dae2..a190d78ff5 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 029ed44f55..e894cad774 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 -- cgit v1.2.3