summaryrefslogtreecommitdiff
path: root/apps/tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/tree.c')
-rw-r--r--apps/tree.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/apps/tree.c b/apps/tree.c
index b11d28f1f8..5efacd5993 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -57,10 +57,11 @@
57#include "filetypes.h" 57#include "filetypes.h"
58#include "misc.h" 58#include "misc.h"
59#include "filetree.h" 59#include "filetree.h"
60#include "dbtree.h" 60#include "tagtree.h"
61#include "recorder/recording.h" 61#include "recorder/recording.h"
62#include "rtc.h" 62#include "rtc.h"
63#include "dircache.h" 63#include "dircache.h"
64#include "tagcache.h"
64#include "yesno.h" 65#include "yesno.h"
65 66
66/* gui api */ 67/* gui api */
@@ -164,7 +165,8 @@ char * tree_get_filename(int selected_item, void * data, char *buffer)
164 bool id3db = *(local_tc->dirfilter) == SHOW_ID3DB; 165 bool id3db = *(local_tc->dirfilter) == SHOW_ID3DB;
165 166
166 if (id3db) { 167 if (id3db) {
167 name = ((char**)local_tc->dircache)[selected_item * local_tc->dentry_size]; 168 char **buf = local_tc->dircache;
169 name = buf[selected_item * (local_tc->dentry_size/sizeof(int))];
168 } 170 }
169 else { 171 else {
170 struct entry* dc = local_tc->dircache; 172 struct entry* dc = local_tc->dircache;
@@ -189,7 +191,7 @@ void tree_get_fileicon(int selected_item, void * data, ICON * icon)
189 struct tree_context * local_tc=(struct tree_context *)data; 191 struct tree_context * local_tc=(struct tree_context *)data;
190 bool id3db = *(local_tc->dirfilter) == SHOW_ID3DB; 192 bool id3db = *(local_tc->dirfilter) == SHOW_ID3DB;
191 if (id3db) { 193 if (id3db) {
192 *icon = (ICON)db_get_icon(&tc); 194 *icon = (ICON)tagtree_get_icon(&tc);
193 } 195 }
194 else { 196 else {
195 struct entry* dc = local_tc->dircache; 197 struct entry* dc = local_tc->dircache;
@@ -267,6 +269,7 @@ struct tree_context* tree_get_context(void)
267int tree_get_file_position(char * filename) 269int tree_get_file_position(char * filename)
268{ 270{
269 int i; 271 int i;
272
270 /* use lastfile to determine the selected item (default=0) */ 273 /* use lastfile to determine the selected item (default=0) */
271 for (i=0; i < tc.filesindir; i++) 274 for (i=0; i < tc.filesindir; i++)
272 { 275 {
@@ -292,7 +295,7 @@ static int update_dir(void)
292 tc.currextra != lastextra || 295 tc.currextra != lastextra ||
293 tc.firstpos != lastfirstpos) 296 tc.firstpos != lastfirstpos)
294 { 297 {
295 if (db_load(&tc) < 0) 298 if (tagtree_load(&tc) < 0)
296 return -1; 299 return -1;
297 300
298 lasttable = tc.currtable; 301 lasttable = tc.currtable;
@@ -494,7 +497,7 @@ static bool check_changed_id3mode(bool currmode)
494 currmode = global_settings.dirfilter == SHOW_ID3DB; 497 currmode = global_settings.dirfilter == SHOW_ID3DB;
495 if (currmode) { 498 if (currmode) {
496 curr_context=CONTEXT_ID3DB; 499 curr_context=CONTEXT_ID3DB;
497 db_load(&tc); 500 tagtree_load(&tc);
498 } 501 }
499 else 502 else
500 { 503 {
@@ -600,7 +603,7 @@ static bool dirbrowse(void)
600 if ( numentries == 0 ) 603 if ( numentries == 0 )
601 break; 604 break;
602 605
603 switch (id3db?db_enter(&tc):ft_enter(&tc)) 606 switch (id3db?tagtree_enter(&tc):ft_enter(&tc))
604 { 607 {
605 case 1: reload_dir = true; break; 608 case 1: reload_dir = true; break;
606 case 2: start_wps = true; break; 609 case 2: start_wps = true; break;
@@ -624,7 +627,7 @@ static bool dirbrowse(void)
624 break; 627 break;
625 628
626 if (id3db) 629 if (id3db)
627 db_exit(&tc); 630 tagtree_exit(&tc);
628 else 631 else
629 if (ft_exit(&tc) == 3) 632 if (ft_exit(&tc) == 3)
630 exit_func = true; 633 exit_func = true;
@@ -732,6 +735,7 @@ static bool dirbrowse(void)
732 restore = true; 735 restore = true;
733 736
734 id3db = check_changed_id3mode(id3db); 737 id3db = check_changed_id3mode(id3db);
738 reload_dir = true;
735 break; 739 break;
736 } 740 }
737 741
@@ -772,7 +776,7 @@ static bool dirbrowse(void)
772 case songs4artist: 776 case songs4artist:
773 case searchsongs: 777 case searchsongs:
774 attr=TREE_ATTR_MPA; 778 attr=TREE_ATTR_MPA;
775 db_get_filename(&tc, buf, sizeof(buf)); 779 tagtree_get_filename(&tc, buf, sizeof(buf));
776 break; 780 break;
777 } 781 }
778 } 782 }
@@ -906,6 +910,7 @@ static bool dirbrowse(void)
906 lastextra = -1; 910 lastextra = -1;
907 reload_root = false; 911 reload_root = false;
908 } 912 }
913
909 if (! reload_dir ) 914 if (! reload_dir )
910 { 915 {
911 gui_synclist_select_item(&tree_lists, 0); 916 gui_synclist_select_item(&tree_lists, 0);
@@ -935,6 +940,7 @@ static bool dirbrowse(void)
935 need_update = true; 940 need_update = true;
936 reload_dir = false; 941 reload_dir = false;
937 } 942 }
943
938 if(need_update) { 944 if(need_update) {
939 tc.selected_item = gui_synclist_get_sel_pos(&tree_lists); 945 tc.selected_item = gui_synclist_get_sel_pos(&tree_lists);
940 need_update=false; 946 need_update=false;
@@ -1177,8 +1183,6 @@ void tree_init(void)
1177 memset(&tc, 0, sizeof(tc)); 1183 memset(&tc, 0, sizeof(tc));
1178 tc.dirfilter = &global_settings.dirfilter; 1184 tc.dirfilter = &global_settings.dirfilter;
1179 1185
1180 tagdb_init();
1181
1182 tc.name_buffer_size = AVERAGE_FILENAME_LENGTH * max_files; 1186 tc.name_buffer_size = AVERAGE_FILENAME_LENGTH * max_files;
1183 tc.name_buffer = buffer_alloc(tc.name_buffer_size); 1187 tc.name_buffer = buffer_alloc(tc.name_buffer_size);
1184 1188
@@ -1331,9 +1335,9 @@ void ft_play_filename(char *dir, char *file)
1331/* These two functions are called by the USB and shutdown handlers */ 1335/* These two functions are called by the USB and shutdown handlers */
1332void tree_flush(void) 1336void tree_flush(void)
1333{ 1337{
1334 rundb_shutdown(); 1338 tagcache_stop_scan();
1335 tagdb_shutdown();
1336 playlist_shutdown(); 1339 playlist_shutdown();
1340
1337#ifdef HAVE_DIRCACHE 1341#ifdef HAVE_DIRCACHE
1338 if (global_settings.dircache) 1342 if (global_settings.dircache)
1339 { 1343 {
@@ -1351,8 +1355,6 @@ void tree_flush(void)
1351 1355
1352void tree_restore(void) 1356void tree_restore(void)
1353{ 1357{
1354 tagdb_init();
1355 rundb_init();
1356#ifdef HAVE_DIRCACHE 1358#ifdef HAVE_DIRCACHE
1357 if (global_settings.dircache) 1359 if (global_settings.dircache)
1358 { 1360 {
@@ -1376,5 +1378,6 @@ void tree_restore(void)
1376 gui_textarea_clear(&screens[i]); 1378 gui_textarea_clear(&screens[i]);
1377 } 1379 }
1378 } 1380 }
1381 tagcache_start_scan();
1379#endif 1382#endif
1380} 1383}