summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/tagtree.c45
-rw-r--r--apps/tagtree.h4
-rw-r--r--apps/tree.c10
3 files changed, 35 insertions, 24 deletions
diff --git a/apps/tagtree.c b/apps/tagtree.c
index b3e423018e..0268dc5f64 100644
--- a/apps/tagtree.c
+++ b/apps/tagtree.c
@@ -710,15 +710,12 @@ int tagtree_get_filename(struct tree_context* c, char *buf, int buflen)
if (!tagcache_search(&tcs, tag_filename))
return -1;
- tagcache_search_add_filter(&tcs, tag_title, entry->extraseek);
-
- if (!tagcache_get_next(&tcs))
+ if (!tagcache_retrieve(&tcs, entry->extraseek, buf, buflen))
{
tagcache_search_finish(&tcs);
return -2;
}
- strncpy(buf, tcs.result, buflen-1);
tagcache_search_finish(&tcs);
return 0;
@@ -789,34 +786,52 @@ struct tagentry* tagtree_get_entry(struct tree_context *c, int id)
return &entry[realid];
}
-#ifdef HAVE_LCD_BITMAP
-const char* tagtree_get_icon(struct tree_context* c)
-#else
-int tagtree_get_icon(struct tree_context* c)
-#endif
+int tagtree_get_attr(struct tree_context* c)
{
- int icon;
-
+ int attr = -1;
switch (c->currtable)
{
case navibrowse:
if (csi->tagorder[c->currextra] == tag_title)
- icon = Icon_Audio;
+ attr = TREE_ATTR_MPA;
else
- icon = Icon_Folder;
+ attr = ATTR_DIRECTORY;
break;
case allsubentries:
- icon = Icon_Audio;
+ attr = TREE_ATTR_MPA;
break;
default:
+ attr = ATTR_DIRECTORY;
+ break;
+ }
+
+ return attr;
+}
+
+#ifdef HAVE_LCD_BITMAP
+const unsigned char* tagtree_get_icon(struct tree_context* c)
+#else
+int tagtree_get_icon(struct tree_context* c)
+#endif
+{
+ int icon;
+
+ switch (tagtree_get_attr(c))
+ {
+ case TREE_ATTR_MPA:
+ icon = Icon_Audio;
+ break;
+
+ case ATTR_DIRECTORY:
+ default:
icon = Icon_Folder;
break;
}
#ifdef HAVE_LCD_BITMAP
- return (char *)bitmap_icons_6x8[icon];
+ return bitmap_icons_6x8[icon];
#else
return icon;
#endif
diff --git a/apps/tagtree.h b/apps/tagtree.h
index c1010ec95a..81d900bbb6 100644
--- a/apps/tagtree.h
+++ b/apps/tagtree.h
@@ -35,12 +35,12 @@ int tagtree_enter(struct tree_context* c);
void tagtree_exit(struct tree_context* c);
int tagtree_load(struct tree_context* c);
struct tagentry* tagtree_get_entry(struct tree_context *c, int id);
+int tagtree_get_attr(struct tree_context* c);
#ifdef HAVE_LCD_BITMAP
-const char* tagtree_get_icon(struct tree_context* c);
+const unsigned char* tagtree_get_icon(struct tree_context* c);
#else
int tagtree_get_icon(struct tree_context* c);
#endif
int tagtree_get_filename(struct tree_context* c, char *buf, int buflen);
#endif
-
diff --git a/apps/tree.c b/apps/tree.c
index b19ffaadee..c7a6c012b7 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -766,14 +766,10 @@ static bool dirbrowse(void)
else {
if (id3db)
{
- switch (tc.currtable)
+ if (tagtree_get_attr(&tc) == TREE_ATTR_MPA)
{
- case navibrowse:
- if (tc.currextra != tag_title)
- break;
- attr=TREE_ATTR_MPA;
- tagtree_get_filename(&tc, buf, sizeof(buf));
- break;
+ attr = TREE_ATTR_MPA;
+ tagtree_get_filename(&tc, buf, sizeof(buf));
}
}
else