Add SystemData::indexAllGameFilters that loops through all added games and add's their tags to the filter indexes

This fixes the hidden filtering in Kiosk mode when not using gamelist.xml
This commit is contained in:
Tomas Jakobsson 2017-11-04 17:03:24 +01:00
parent 05a044ff40
commit 92a3286fc8
3 changed files with 17 additions and 8 deletions

View file

@ -144,14 +144,6 @@ void parseGamelist(SystemData* system)
file->metadata.set("name", defaultName);
file->metadata.resetChangedFlag();
// index if it's a game!
if(type == GAME)
{
FileFilterIndex* index = system->getIndex();
index->addToIndex(file);
}
}
}
}

View file

@ -36,6 +36,8 @@ SystemData::SystemData(const std::string& name, const std::string& fullName, Sys
parseGamelist(this);
mRootFolder->sort(FileSorts::SortTypes.at(0));
indexAllGameFilters(mRootFolder);
}
else
{
@ -145,6 +147,20 @@ void SystemData::populateFolder(FileData* folder)
}
}
void SystemData::indexAllGameFilters(const FileData* folder)
{
const std::vector<FileData*>& children = folder->getChildren();
for(std::vector<FileData*>::const_iterator it = children.begin(); it != children.end(); ++it)
{
switch((*it)->getType())
{
case GAME: { mFilterIndex->addToIndex(*it); } break;
case FOLDER: { indexAllGameFilters(*it); } break;
}
}
}
std::vector<std::string> readList(const std::string& str, const char* delims = " \t\r\n,")
{
std::vector<std::string> ret;

View file

@ -77,6 +77,7 @@ private:
std::shared_ptr<ThemeData> mTheme;
void populateFolder(FileData* folder);
void indexAllGameFilters(const FileData* folder);
void setIsGameSystemStatus();
FileFilterIndex* mFilterIndex;