mirror of
https://github.com/FunKey-Project/RetroFE.git
synced 2025-12-26 00:28:52 +01:00
Adding merged list functionality
This commit is contained in:
parent
ea8ac902a6
commit
695da5d367
@ -152,8 +152,12 @@ bool CollectionInfoBuilder::createCollectionDirectory(std::string name)
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
CollectionInfo *CollectionInfoBuilder::buildCollection(std::string name)
|
||||
{
|
||||
return buildCollection(name, "");
|
||||
}
|
||||
|
||||
CollectionInfo *CollectionInfoBuilder::buildCollection(std::string name, std::string mergedCollectionName)
|
||||
{
|
||||
std::string listItemsPathKey = "collections." + name + ".list.path";
|
||||
std::string listFilterKey = "collections." + name + ".list.filter";
|
||||
@ -169,8 +173,7 @@ CollectionInfo *CollectionInfoBuilder::buildCollection(std::string name)
|
||||
std::string extensions;
|
||||
std::string metadataType = name;
|
||||
std::string metadataPath;
|
||||
std::string mergedCollectionName;
|
||||
|
||||
|
||||
conf_.getCollectionAbsolutePath(name, listItemsPath);
|
||||
|
||||
(void)conf_.getProperty(extensionsKey, extensions);
|
||||
@ -194,7 +197,7 @@ CollectionInfo *CollectionInfoBuilder::buildCollection(std::string name)
|
||||
|
||||
(void)conf_.getProperty("collections." + collection->name + ".launcher", collection->launcher);
|
||||
|
||||
ImportDirectory(collection);
|
||||
ImportDirectory(collection, mergedCollectionName);
|
||||
|
||||
return collection;
|
||||
}
|
||||
@ -233,7 +236,7 @@ bool CollectionInfoBuilder::ImportBasicList(CollectionInfo *info, std::string fi
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CollectionInfoBuilder::ImportDirectory(CollectionInfo *info)
|
||||
bool CollectionInfoBuilder::ImportDirectory(CollectionInfo *info, std::string mergedCollectionName)
|
||||
{
|
||||
DIR *dp;
|
||||
struct dirent *dirp;
|
||||
@ -242,13 +245,23 @@ bool CollectionInfoBuilder::ImportDirectory(CollectionInfo *info)
|
||||
std::map<std::string, Item *> excludeFilter;
|
||||
std::string includeFile = Utils::combinePath(Configuration::absolutePath, "collections", info->name, "include.txt");
|
||||
std::string excludeFile = Utils::combinePath(Configuration::absolutePath, "collections", info->name, "exclude.txt");
|
||||
|
||||
std::string launcher;
|
||||
bool showMissing = false;
|
||||
|
||||
(void)conf_.getProperty("collections." + info->name + ".list.includeMissingItems", showMissing);
|
||||
if(mergedCollectionName != "")
|
||||
{
|
||||
includeFile = Utils::combinePath(Configuration::absolutePath, "collections", mergedCollectionName, info->name + ".merge");
|
||||
(void)conf_.getProperty("collections." + mergedCollectionName + ".list.includeMissingItems", showMissing);
|
||||
ImportBasicList(info, includeFile, includeFilter);
|
||||
}
|
||||
else
|
||||
{
|
||||
(void)conf_.getProperty("collections." + info->name + ".list.includeMissingItems", showMissing);
|
||||
ImportBasicList(info, includeFile, includeFilter);
|
||||
ImportBasicList(info, excludeFile, excludeFilter);
|
||||
}
|
||||
|
||||
ImportBasicList(info, includeFile, includeFilter);
|
||||
ImportBasicList(info, excludeFile, excludeFilter);
|
||||
|
||||
std::vector<std::string> extensions;
|
||||
std::vector<std::string>::iterator extensionsIt;
|
||||
|
||||
@ -30,11 +30,12 @@ public:
|
||||
CollectionInfoBuilder(Configuration &c, MetadataDatabase &mdb);
|
||||
virtual ~CollectionInfoBuilder();
|
||||
CollectionInfo *buildCollection(std::string collectionName);
|
||||
CollectionInfo *buildCollection(std::string collectionName, std::string mergedCollectionName);
|
||||
static bool createCollectionDirectory(std::string collectionName);
|
||||
|
||||
private:
|
||||
Configuration &conf_;
|
||||
MetadataDatabase &metaDB_;
|
||||
bool ImportBasicList(CollectionInfo *info, std::string file, std::map<std::string, Item *> &list);
|
||||
bool ImportDirectory(CollectionInfo *info);
|
||||
bool ImportDirectory(CollectionInfo *info, std::string mergedCollectionName);
|
||||
};
|
||||
|
||||
@ -100,10 +100,11 @@ bool MenuParser::buildMenuItems(CollectionInfo *collection, bool sort, Collectio
|
||||
}
|
||||
else
|
||||
{
|
||||
std::string collectionName = collectionAttribute->value();
|
||||
Logger::write(Logger::ZONE_INFO, "Menu", "Loading collection into menu: " + collectionName);
|
||||
std::string subcollectionName = collectionAttribute->value();
|
||||
Logger::write(Logger::ZONE_INFO, "Menu", "Loading collection into menu: " + collection->name);
|
||||
|
||||
CollectionInfo *subcollection = builder.buildCollection(collectionName);
|
||||
|
||||
CollectionInfo *subcollection = builder.buildCollection(subcollectionName, collection->name);
|
||||
collection->addSubcollection(subcollection);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user