diff options
-rw-r--r-- | apps/tagnavi.config | 1 | ||||
-rw-r--r-- | apps/tagtree.c | 28 |
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]; | |||
52 | enum variables { | 52 | enum 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 | ||