summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorMiika Pekkarinen <miipekk@ihme.org>2006-09-26 18:59:16 +0000
committerMiika Pekkarinen <miipekk@ihme.org>2006-09-26 18:59:16 +0000
commit8d145f6d0d46804c411363bf9a948e3791cb9199 (patch)
tree50ca7fbb14edfd7fb4cf6359ec5c01d4ad4cd959 /apps
parent2dbe428abc87b9e2ffc005f3cd181bf3db581b66 (diff)
downloadrockbox-8d145f6d0d46804c411363bf9a948e3791cb9199.tar.gz
rockbox-8d145f6d0d46804c411363bf9a948e3791cb9199.zip
New option "strip" to make it possible hide data used for sorting.
Example with "last played tracks". git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11066 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/tagnavi.config1
-rw-r--r--apps/tagtree.c28
2 files changed, 28 insertions, 1 deletions
diff --git a/apps/tagnavi.config b/apps/tagnavi.config
index 4d8a4b5847..fdf66828af 100644
--- a/apps/tagnavi.config
+++ b/apps/tagnavi.config
@@ -36,6 +36,7 @@
36"Year" -> year ? year > "1000" & year < "2008" -> artist -> album -> title = "%02d. %s" tracknum title 36"Year" -> year ? year > "1000" & year < "2008" -> artist -> album -> title = "%02d. %s" tracknum title
37"Search..." ==> "search" 37"Search..." ==> "search"
38"Most played tracks" -> title = "(%3d) %s" playcount title %sort = "inverse" %limit = "100" ? playcount > "0" 38"Most played tracks" -> title = "(%3d) %s" playcount title %sort = "inverse" %limit = "100" ? playcount > "0"
39"Last played tracks" -> title = "%06d%s" lastplayed title %sort = "inverse" %limit = "99" %strip = "6" ? playcount > "0"
39"Never played tracks" -> artist ? playcount == "0" -> album -> title = "%02d. %s" tracknum title 40"Never played tracks" -> artist ? playcount == "0" -> album -> title = "%02d. %s" tracknum title
40"Best tracks" -> artist ? playcount > "1" & autoscore > "85" -> album -> title = "%02d. %s (%3d)" tracknum title autoscore 41"Best tracks" -> artist ? playcount > "1" & autoscore > "85" -> album -> title = "%02d. %s (%3d)" tracknum title autoscore
41"List played tracks" -> title = "(%3d/%d) %s" autoscore playcount title ? playcount > "0" 42"List played tracks" -> title = "(%3d/%d) %s" autoscore playcount title ? playcount > "0"
diff --git a/apps/tagtree.c b/apps/tagtree.c
index dda72057f9..377cc27ec0 100644
--- a/apps/tagtree.c
+++ b/apps/tagtree.c
@@ -52,6 +52,7 @@ static char searchstring[32];
52enum variables { 52enum variables {
53 var_sorttype = 100, 53 var_sorttype = 100,
54 var_limit, 54 var_limit,
55 var_strip,
55 var_menu_start, 56 var_menu_start,
56 var_include, 57 var_include,
57 var_rootmenu, 58 var_rootmenu,
@@ -87,6 +88,7 @@ struct display_format {
87 int tag_count; 88 int tag_count;
88 89
89 int limit; 90 int limit;
91 int strip;
90 bool sort_inverse; 92 bool sort_inverse;
91}; 93};
92 94
@@ -194,6 +196,7 @@ static int get_tag(int *tag)
194 MATCH(tag, buf, "autoscore", tag_virt_autoscore); 196 MATCH(tag, buf, "autoscore", tag_virt_autoscore);
195 MATCH(tag, buf, "%sort", var_sorttype); 197 MATCH(tag, buf, "%sort", var_sorttype);
196 MATCH(tag, buf, "%limit", var_limit); 198 MATCH(tag, buf, "%limit", var_limit);
199 MATCH(tag, buf, "%strip", var_strip);
197 MATCH(tag, buf, "%menu_start", var_menu_start); 200 MATCH(tag, buf, "%menu_start", var_menu_start);
198 MATCH(tag, buf, "%include", var_include); 201 MATCH(tag, buf, "%include", var_include);
199 MATCH(tag, buf, "%root_menu", var_rootmenu); 202 MATCH(tag, buf, "%root_menu", var_rootmenu);
@@ -338,6 +341,12 @@ static int get_format_str(struct display_format *fmt)
338 fmt->limit = atoi(buf); 341 fmt->limit = atoi(buf);
339 break; 342 break;
340 343
344 case var_strip:
345 if (!read_variable(buf, sizeof buf))
346 return -14;
347 fmt->strip = atoi(buf);
348 break;
349
341 default: 350 default:
342 fmt->tag_count++; 351 fmt->tag_count++;
343 } 352 }
@@ -786,7 +795,8 @@ int retrieve_entries(struct tree_context *c, struct tagcache_search *tcs,
786 int level = c->currextra; 795 int level = c->currextra;
787 int tag; 796 int tag;
788 bool sort = false; 797 bool sort = false;
789 int sort_limit = 0; 798 int sort_limit;
799 int strip;
790 800
791 if (init 801 if (init
792#ifdef HAVE_TC_RAMCACHE 802#ifdef HAVE_TC_RAMCACHE
@@ -852,11 +862,13 @@ int retrieve_entries(struct tree_context *c, struct tagcache_search *tcs,
852 { 862 {
853 sort_inverse = fmt->sort_inverse; 863 sort_inverse = fmt->sort_inverse;
854 sort_limit = fmt->limit; 864 sort_limit = fmt->limit;
865 strip = fmt->strip;
855 } 866 }
856 else 867 else
857 { 868 {
858 sort_inverse = false; 869 sort_inverse = false;
859 sort_limit = 0; 870 sort_limit = 0;
871 strip = 0;
860 } 872 }
861 873
862 if (tag != tag_title && tag != tag_filename) 874 if (tag != tag_title && tag != tag_filename)
@@ -1029,6 +1041,20 @@ int retrieve_entries(struct tree_context *c, struct tagcache_search *tcs,
1029 if (sort_limit) 1041 if (sort_limit)
1030 total_count = MIN(total_count, sort_limit); 1042 total_count = MIN(total_count, sort_limit);
1031 1043
1044 if (strip)
1045 {
1046 dptr = c->dircache;
1047 for (i = 0; i < total_count; i++, dptr++)
1048 {
1049 int len = strlen(dptr->name);
1050
1051 if (len < strip)
1052 continue;
1053
1054 dptr->name = &dptr->name[strip];
1055 }
1056 }
1057
1032 return total_count; 1058 return total_count;
1033} 1059}
1034 1060