diff --git a/RetroFE/Source/Collection/CollectionInfo.cpp b/RetroFE/Source/Collection/CollectionInfo.cpp index 7aa028f..7f62400 100644 --- a/RetroFE/Source/Collection/CollectionInfo.cpp +++ b/RetroFE/Source/Collection/CollectionInfo.cpp @@ -185,17 +185,19 @@ bool CollectionInfo::itemIsLess(Item *lhs, Item *rhs) void CollectionInfo::sortItems() { - for(Playlists_T::iterator it = playlists.begin(); it != playlists.end(); it++) - { - std::sort(it->second->begin(), it->second->end(), itemIsLess); - } + std::sort( items.begin(), items.end(), itemIsLess ); +// for(Playlists_T::iterator it = playlists.begin(); it != playlists.end(); it++) +// { +// std::sort(it->second->begin(), it->second->end(), itemIsLess); +// } } void CollectionInfo::sortPlaylists() { - std::vector *allItems = playlists["all"]; +// std::vector *allItems = playlists["all"]; + std::vector *allItems = &items; std::vector toSortItems; for ( Playlists_T::iterator itP = playlists.begin( ); itP != playlists.end( ); itP++ ) diff --git a/RetroFE/Source/Collection/CollectionInfoBuilder.cpp b/RetroFE/Source/Collection/CollectionInfoBuilder.cpp index 2710310..16f5115 100644 --- a/RetroFE/Source/Collection/CollectionInfoBuilder.cpp +++ b/RetroFE/Source/Collection/CollectionInfoBuilder.cpp @@ -280,8 +280,10 @@ bool CollectionInfoBuilder::ImportDirectory(CollectionInfo *info, std::string me std::vector includeFilterUnsorted; std::map includeFilter; std::map 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::map excludeAllFilter; + 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 excludeAllFile = Utils::combinePath(Configuration::absolutePath, "collections", info->name, "exclude_all.txt"); std::string launcher; bool showMissing = false; @@ -313,6 +315,7 @@ bool CollectionInfoBuilder::ImportDirectory(CollectionInfo *info, std::string me ImportBasicList(info, includeFile, includeFilter); ImportBasicList(info, excludeFile, excludeFilter); } + ImportBasicList(info, excludeAllFile, excludeAllFilter); if (showMissing) { @@ -363,7 +366,46 @@ bool CollectionInfoBuilder::ImportDirectory(CollectionInfo *info, std::string me excludeFilter.erase(it); } - info->playlists["all"] = &info->items; + if ( excludeAllFilter.size() > 0) + { + info->playlists["all"] = new std::vector(); + for(std::vector::iterator it = info->items.begin(); it != info->items.end(); it++) + { + bool found = false; + for(std::map::iterator itex = excludeAllFilter.begin(); itex != excludeAllFilter.end(); itex++) + { + std::string collectionName = info->name; + std::string itemName = itex->first; + if (itemName.at(0) == '_') // name consists of _: + { + itemName.erase(0, 1); // Remove _ + size_t position = itemName.find(":"); + if (position != std::string::npos ) + { + collectionName = itemName.substr(0, position); + itemName = itemName.erase(0, position+1); + } + } + if ( (*it)->name == itemName && (*it)->collectionInfo->name == collectionName) + { + found = true; + } + } + if ( !found ) + { + info->playlists["all"]->push_back((*it)); + } + } + while(excludeAllFilter.size() > 0) + { + std::map::iterator it = excludeAllFilter.begin(); + excludeAllFilter.erase(it); + } + } + else + { + info->playlists["all"] = &info->items; + } return true; } diff --git a/RetroFE/Source/Collection/MenuParser.cpp b/RetroFE/Source/Collection/MenuParser.cpp index 27a1010..5259680 100644 --- a/RetroFE/Source/Collection/MenuParser.cpp +++ b/RetroFE/Source/Collection/MenuParser.cpp @@ -69,7 +69,7 @@ bool MenuParser::buildTextMenu(CollectionInfo *collection, bool sort) std::string path = Utils::combinePath(Configuration::absolutePath, "collections", collection->name, "menu"); dp = opendir(path.c_str()); - while((dirp = readdir(dp)) != NULL) + while(dp && (dirp = readdir(dp)) != NULL) { std::string file = dirp->d_name; diff --git a/RetroFE/Source/Version.cpp b/RetroFE/Source/Version.cpp index f008af1..9090da6 100644 --- a/RetroFE/Source/Version.cpp +++ b/RetroFE/Source/Version.cpp @@ -21,7 +21,7 @@ std::string retrofe_version_major = "0"; std::string retrofe_version_minor = "8"; -std::string retrofe_version_build = "20"; +std::string retrofe_version_build = "21"; std::string Version::getString( )