Checks if game has metadata

Adds a function to metadata "isDefault()" which will return true if all
metadata is still set to default values and false if any values are not
set to default

When saving, a game that has no metadata would also not be saved in the
gamelist xml. so now it will just ignore looking for that game instead
of looping through every node until it reaches the end of the tree.
This commit is contained in:
Jacob Karleskint 2016-09-03 15:45:52 -05:00
parent cdd819e041
commit 0213bef499
3 changed files with 17 additions and 0 deletions

View file

@ -215,6 +215,12 @@ void updateGamelist(SystemData* system)
{
const char* tag = ((*fit)->getType() == GAME) ? "game" : "folder";
// check if current file has metadata, if no, skip it as it wont be in the gamelist anyway.
if ((*fit)->metadata.isDefault()) {
++fit;
continue;
}
// check if the file already exists in the XML
// if it does, remove it before adding
for(pugi::xml_node fileNode = root.child(tag); fileNode; fileNode = fileNode.next_sibling(tag))

View file

@ -133,3 +133,12 @@ boost::posix_time::ptime MetaDataList::getTime(const std::string& key) const
{
return string_to_ptime(get(key), "%Y%m%dT%H%M%S%F%q");
}
bool MetaDataList::isDefault()
{
for (int i = 1; i < mMap.size(); i++) {
if (mMap.at(gameDecls[i].key) != gameDecls[i].defaultValue) return false;
}
return true;
}

View file

@ -56,6 +56,8 @@ public:
float getFloat(const std::string& key) const;
boost::posix_time::ptime getTime(const std::string& key) const;
bool isDefault();
inline MetaDataListType getType() const { return mType; }
inline const std::vector<MetaDataDecl>& getMDD() const { return getMDDByType(getType()); }