diff options
-rw-r--r-- | apps/tagtree.c | 45 | ||||
-rw-r--r-- | apps/tagtree.h | 4 | ||||
-rw-r--r-- | apps/tree.c | 10 |
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) | |||
710 | if (!tagcache_search(&tcs, tag_filename)) | 710 | if (!tagcache_search(&tcs, tag_filename)) |
711 | return -1; | 711 | return -1; |
712 | 712 | ||
713 | tagcache_search_add_filter(&tcs, tag_title, entry->extraseek); | 713 | if (!tagcache_retrieve(&tcs, entry->extraseek, buf, buflen)) |
714 | |||
715 | if (!tagcache_get_next(&tcs)) | ||
716 | { | 714 | { |
717 | tagcache_search_finish(&tcs); | 715 | tagcache_search_finish(&tcs); |
718 | return -2; | 716 | return -2; |
719 | } | 717 | } |
720 | 718 | ||
721 | strncpy(buf, tcs.result, buflen-1); | ||
722 | tagcache_search_finish(&tcs); | 719 | tagcache_search_finish(&tcs); |
723 | 720 | ||
724 | return 0; | 721 | return 0; |
@@ -789,34 +786,52 @@ struct tagentry* tagtree_get_entry(struct tree_context *c, int id) | |||
789 | return &entry[realid]; | 786 | return &entry[realid]; |
790 | } | 787 | } |
791 | 788 | ||
792 | #ifdef HAVE_LCD_BITMAP | 789 | int tagtree_get_attr(struct tree_context* c) |
793 | const char* tagtree_get_icon(struct tree_context* c) | ||
794 | #else | ||
795 | int tagtree_get_icon(struct tree_context* c) | ||
796 | #endif | ||
797 | { | 790 | { |
798 | int icon; | 791 | int attr = -1; |
799 | |||
800 | switch (c->currtable) | 792 | switch (c->currtable) |
801 | { | 793 | { |
802 | case navibrowse: | 794 | case navibrowse: |
803 | if (csi->tagorder[c->currextra] == tag_title) | 795 | if (csi->tagorder[c->currextra] == tag_title) |
804 | icon = Icon_Audio; | 796 | attr = TREE_ATTR_MPA; |
805 | else | 797 | else |
806 | icon = Icon_Folder; | 798 | attr = ATTR_DIRECTORY; |
807 | break; | 799 | break; |
808 | 800 | ||
809 | case allsubentries: | 801 | case allsubentries: |
810 | icon = Icon_Audio; | 802 | attr = TREE_ATTR_MPA; |
811 | break; | 803 | break; |
812 | 804 | ||
813 | default: | 805 | default: |
806 | attr = ATTR_DIRECTORY; | ||
807 | break; | ||
808 | } | ||
809 | |||
810 | return attr; | ||
811 | } | ||
812 | |||
813 | #ifdef HAVE_LCD_BITMAP | ||
814 | const unsigned char* tagtree_get_icon(struct tree_context* c) | ||
815 | #else | ||
816 | int tagtree_get_icon(struct tree_context* c) | ||
817 | #endif | ||
818 | { | ||
819 | int icon; | ||
820 | |||
821 | switch (tagtree_get_attr(c)) | ||
822 | { | ||
823 | case TREE_ATTR_MPA: | ||
824 | icon = Icon_Audio; | ||
825 | break; | ||
826 | |||
827 | case ATTR_DIRECTORY: | ||
828 | default: | ||
814 | icon = Icon_Folder; | 829 | icon = Icon_Folder; |
815 | break; | 830 | break; |
816 | } | 831 | } |
817 | 832 | ||
818 | #ifdef HAVE_LCD_BITMAP | 833 | #ifdef HAVE_LCD_BITMAP |
819 | return (char *)bitmap_icons_6x8[icon]; | 834 | return bitmap_icons_6x8[icon]; |
820 | #else | 835 | #else |
821 | return icon; | 836 | return icon; |
822 | #endif | 837 | #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); | |||
35 | void tagtree_exit(struct tree_context* c); | 35 | void tagtree_exit(struct tree_context* c); |
36 | int tagtree_load(struct tree_context* c); | 36 | int tagtree_load(struct tree_context* c); |
37 | struct tagentry* tagtree_get_entry(struct tree_context *c, int id); | 37 | struct tagentry* tagtree_get_entry(struct tree_context *c, int id); |
38 | int tagtree_get_attr(struct tree_context* c); | ||
38 | #ifdef HAVE_LCD_BITMAP | 39 | #ifdef HAVE_LCD_BITMAP |
39 | const char* tagtree_get_icon(struct tree_context* c); | 40 | const unsigned char* tagtree_get_icon(struct tree_context* c); |
40 | #else | 41 | #else |
41 | int tagtree_get_icon(struct tree_context* c); | 42 | int tagtree_get_icon(struct tree_context* c); |
42 | #endif | 43 | #endif |
43 | int tagtree_get_filename(struct tree_context* c, char *buf, int buflen); | 44 | int tagtree_get_filename(struct tree_context* c, char *buf, int buflen); |
44 | 45 | ||
45 | #endif | 46 | #endif |
46 | |||
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) | |||
766 | else { | 766 | else { |
767 | if (id3db) | 767 | if (id3db) |
768 | { | 768 | { |
769 | switch (tc.currtable) | 769 | if (tagtree_get_attr(&tc) == TREE_ATTR_MPA) |
770 | { | 770 | { |
771 | case navibrowse: | 771 | attr = TREE_ATTR_MPA; |
772 | if (tc.currextra != tag_title) | 772 | tagtree_get_filename(&tc, buf, sizeof(buf)); |
773 | break; | ||
774 | attr=TREE_ATTR_MPA; | ||
775 | tagtree_get_filename(&tc, buf, sizeof(buf)); | ||
776 | break; | ||
777 | } | 773 | } |
778 | } | 774 | } |
779 | else | 775 | else |