void SongList::AddDirectory(Directory Dir, bool VSRGActive, bool DotcurActive) { SongList* NewList = new SongList(this); ListEntry NewEntry; NewEntry.EntryName = Dir.path().substr(Dir.path().find_last_of('/')+1); NewEntry.Kind = ListEntry::Directory; NewEntry.Data = NewList; std::vector<VSRG::Song*> Songs7K; std::vector<dotcur::Song*> SongsDC; std::vector<String> Listing; Dir.ListDirectory(Listing, Directory::FS_DIR); for (std::vector<String>::iterator i = Listing.begin(); i != Listing.end(); i++) { if (VSRGActive) LoadSong7KFromDir(Dir / *i, Songs7K); if (DotcurActive) LoadSongDCFromDir(Dir / *i, SongsDC); if (!SongsDC.size() && !Songs7K.size()) NewList->AddDirectory(Dir / *i, VSRGActive, DotcurActive); if (Songs7K.size()) { for (std::vector<VSRG::Song*>::iterator j = Songs7K.begin(); j != Songs7K.end(); j++) { NewList->AddSong(*j); } Songs7K.clear(); } if (SongsDC.size()) { for (std::vector<dotcur::Song*>::iterator j = SongsDC.begin(); j != SongsDC.end(); j++) { NewList->AddSong(*j); } SongsDC.clear(); } } if (NewList->GetNumEntries()) mChildren.push_back(NewEntry); else delete NewList; }
void SongList::AddVirtualDirectory(String NewEntryName, Game::Song* List, int Count) { SongList* NewList = new SongList(this); ListEntry NewEntry; NewEntry.EntryName = NewEntryName; NewEntry.Kind = ListEntry::Directory; NewEntry.Data = NewList; for (int i = 0; i < Count; i++) NewList->AddSong(&List[Count]); mChildren.push_back(NewEntry); }