Index: apps/lang/english.lang =================================================================== --- apps/lang/english.lang (revision 13475) +++ apps/lang/english.lang (working copy) @@ -10862,4 +10862,17 @@ *: "Moving" - + + id: LANG_TAGCACHE_ALT_TAG_SORT + desc: in tag cache settings + user: + + *: "Alt Tag Order" + + + *: "Alt Tag Order" + + + *: "Alternative Tag Order" + + Index: apps/settings.h =================================================================== --- apps/settings.h (revision 13475) +++ apps/settings.h (working copy) @@ -571,6 +571,7 @@ bool tagcache_ram; /* load tagcache to ram? */ #endif bool tagcache_autoupdate; /* automatically keep tagcache in sync? */ + bool tagcache_alt_tag_sort; /* displays special tags such as last */ #endif int default_codepage; /* set default codepage for tag conversion */ #ifdef HAVE_REMOTE_LCD Index: apps/menus/settings_menu.c =================================================================== --- apps/menus/settings_menu.c (revision 13475) +++ apps/menus/settings_menu.c (working copy) @@ -62,6 +62,7 @@ MENUITEM_SETTING(tagcache_ram, &global_settings.tagcache_ram, NULL); #endif MENUITEM_SETTING(tagcache_autoupdate, &global_settings.tagcache_autoupdate, NULL); +MENUITEM_SETTING(tagcache_alt_tag_sort, &global_settings.tagcache_alt_tag_sort, NULL); MENUITEM_FUNCTION(tc_init, 0, ID2P(LANG_TAGCACHE_FORCE_UPDATE), (int(*)(void))tagcache_rebuild_with_splash, NULL, NULL, Icon_NOICON); @@ -79,7 +80,7 @@ #ifdef HAVE_TC_RAMCACHE &tagcache_ram, #endif - &tagcache_autoupdate, &tc_init, &tc_update, &runtimedb, + &tagcache_alt_tag_sort, &tagcache_autoupdate, &tc_init, &tc_update, &runtimedb, &tc_export, &tc_import); #endif /* HAVE_TAGCACHE */ /* TAGCACHE MENU */ Index: apps/settings_list.c =================================================================== --- apps/settings_list.c (revision 13475) +++ apps/settings_list.c (working copy) @@ -945,6 +945,8 @@ #endif OFFON_SETTING(0,tagcache_autoupdate, LANG_TAGCACHE_AUTOUPDATE,false,"tagcache_autoupdate",NULL), + OFFON_SETTING(0,tagcache_alt_tag_sort, + LANG_TAGCACHE_ALT_TAG_SORT,false,"tagcache_alt_tag_sort",NULL), #endif #ifdef HAVE_LCD_BITMAP CHOICE_SETTING(0, default_codepage, LANG_DEFAULT_CODEPAGE, 0, Index: apps/tagcache.c =================================================================== --- apps/tagcache.c (revision 13475) +++ apps/tagcache.c (working copy) @@ -1777,10 +1777,10 @@ { if (strcmp(e2->str, UNTAGGED) == 0) return 0; - return -1; + return global_settings.tagcache_alt_tag_sort ? 1 : -1; } else if (strcmp(e2->str, UNTAGGED) == 0) - return 1; + return global_settings.tagcache_alt_tag_sort ? -1 : 1; return strncasecmp(e1->str, e2->str, TAG_MAXLEN); } Index: apps/tagtree.c =================================================================== --- apps/tagtree.c (revision 13475) +++ apps/tagtree.c (working copy) @@ -1094,20 +1094,23 @@ strip = 0; } - if (tag != tag_title && tag != tag_filename) + if (! global_settings.tagcache_alt_tag_sort) { - if (offset == 0) + if (tag != tag_title && tag != tag_filename) { - dptr->newtable = allsubentries; - dptr->name = str(LANG_TAGNAVI_ALL_TRACKS); - dptr++; - current_entry_count++; + if (offset == 0) + { + dptr->newtable = allsubentries; + dptr->name = str(LANG_TAGNAVI_ALL_TRACKS); + dptr++; + current_entry_count++; + } + special_entry_count++; } - special_entry_count++; + + total_count += special_entry_count; } - total_count += special_entry_count; - while (tagcache_get_next(tcs)) { if (total_count++ < offset) @@ -1197,6 +1200,23 @@ current_entry_count - special_entry_count, c->dentry_size, compare); + if (global_settings.tagcache_alt_tag_sort) + { + if (tag != tag_title && tag != tag_filename) + { + if (offset == 0) + { + dptr->newtable = allsubentries; + dptr->name = str(LANG_TAGNAVI_ALL_TRACKS); + dptr++; + current_entry_count++; + } + special_entry_count++; + } + + total_count += special_entry_count; + } + if (!init) { tagcache_search_finish(tcs);