diff --git a/apps/lang/english.lang b/apps/lang/english.lang index 151cfde697..e04bed9772 100644 --- a/apps/lang/english.lang +++ b/apps/lang/english.lang @@ -10997,3 +10997,31 @@ *: "" + + id: LANG_SHOW_FILENAME_EXT + desc: in settings_menu + user: + + *: "Show filename extensions" + + + *: "Show filename extensions" + + + *: "Show filename extensions" + + + + id: LANG_UNKNOWN_TYPES + desc: in settings_menu + user: + + *: "Only unknown types" + + + *: "Only unknown types" + + + *: "Only unknown types" + + diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c index 283acc4cb7..039949835b 100644 --- a/apps/menus/settings_menu.c +++ b/apps/menus/settings_menu.c @@ -92,6 +92,7 @@ MENUITEM_SETTING(sort_case, &global_settings.sort_case, NULL); MENUITEM_SETTING(sort_dir, &global_settings.sort_dir, fileview_callback); MENUITEM_SETTING(sort_file, &global_settings.sort_file, fileview_callback); MENUITEM_SETTING(dirfilter, &global_settings.dirfilter, NULL); +MENUITEM_SETTING(show_filename_ext, &global_settings.show_filename_ext, NULL); MENUITEM_SETTING(browse_current, &global_settings.browse_current, NULL); MENUITEM_SETTING(show_path_in_browser, &global_settings.show_path_in_browser, NULL); static int fileview_callback(int action,const struct menu_item_ex *this_item) @@ -113,7 +114,8 @@ static int fileview_callback(int action,const struct menu_item_ex *this_item) MAKE_MENU(file_menu, ID2P(LANG_FILE), 0, Icon_file_view_menu, &sort_case, &sort_dir, &sort_file, - &dirfilter, &browse_current, &show_path_in_browser); + &dirfilter, &show_filename_ext, &browse_current, + &show_path_in_browser); /* FILE VIEW MENU */ /***********************************/ diff --git a/apps/settings.h b/apps/settings.h index 39dabc72ce..8d9646ff6d 100644 --- a/apps/settings.h +++ b/apps/settings.h @@ -444,6 +444,8 @@ struct user_settings int dirfilter; /* 0=display all, 1=only supported, 2=only music, 3=dirs+playlists, 4=ID3 database */ bool sort_case; /* dir sort order: 0=case insensitive, 1=sensitive */ + int show_filename_ext; /* show filename extensions in file browser? + 0 = no, 1 = yes, 2 = only unknown 0 */ int volume_type; /* how volume is displayed: 0=graphic, 1=percent */ int battery_display; /* how battery is displayed: 0=graphic, 1=percent */ int timeformat; /* time format: 0=24 hour clock, 1=12 hour clock */ diff --git a/apps/settings_list.c b/apps/settings_list.c index 7d3f76cac3..2b791279a3 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c @@ -653,6 +653,9 @@ const struct settings_list settings[] = { "all,supported,music,playlists", NULL, 4, ID2P(LANG_ALL), ID2P(LANG_FILTER_SUPPORTED), ID2P(LANG_FILTER_MUSIC), ID2P(LANG_PLAYLISTS)), OFFON_SETTING(0,sort_case,LANG_SORT_CASE,false,"sort case",NULL), + CHOICE_SETTING(0, show_filename_ext, LANG_SHOW_FILENAME_EXT, 2, + "show filename exts", "off,on,unknown", NULL , 3 , + ID2P(LANG_OFF), ID2P(LANG_ON), ID2P(LANG_UNKNOWN_TYPES)), OFFON_SETTING(0,browse_current,LANG_FOLLOW,false,"follow playlist",NULL), OFFON_SETTING(0,playlist_viewer_icons,LANG_SHOW_ICONS,true, "playlist viewer icons",NULL), diff --git a/apps/tree.c b/apps/tree.c index d59d84fc1f..00f29c5eb9 100644 --- a/apps/tree.c +++ b/apps/tree.c @@ -154,11 +154,11 @@ static char * tree_get_filename(int selected_item, void * data, char *buffer) name = e->name; attr = e->attr; } - /* if any file filter is on, and if it's not a directory, - * strip the extension */ - - if ( (*(local_tc->dirfilter) != SHOW_ID3DB) && !(attr & ATTR_DIRECTORY) - && (*(local_tc->dirfilter) != SHOW_ALL) ) + /* if it's not a directory, strip the extension if necessary */ + if((global_settings.show_filename_ext == 0) || + ((global_settings.show_filename_ext == 2) && + (filetype_supported(attr)) && + !(attr & ATTR_DIRECTORY))) { return(strip_extension(name, buffer)); }