From bb3c88e411aaac3c6a5e8bdc8b3690b65f81ab52 Mon Sep 17 00:00:00 2001 From: emb <> Date: Wed, 29 Jul 2015 07:58:54 -0500 Subject: [PATCH] Cleaned up sorting. --- RetroFE/Source/Collection/CollectionInfo.cpp | 5 ++++ RetroFE/Source/Collection/CollectionInfo.h | 2 +- .../Collection/CollectionInfoBuilder.cpp | 2 -- RetroFE/Source/Collection/MenuParser.cpp | 23 ++++--------------- RetroFE/Source/RetroFE.cpp | 2 +- 5 files changed, 11 insertions(+), 23 deletions(-) diff --git a/RetroFE/Source/Collection/CollectionInfo.cpp b/RetroFE/Source/Collection/CollectionInfo.cpp index 508e357..299eb48 100644 --- a/RetroFE/Source/Collection/CollectionInfo.cpp +++ b/RetroFE/Source/Collection/CollectionInfo.cpp @@ -30,6 +30,7 @@ CollectionInfo::CollectionInfo(std::string name, , metadataType(metadataType) , metadataPath_(metadataPath) , extensions_(extensions) + , menusort(true) { } @@ -85,9 +86,13 @@ bool CollectionInfo::hasSubcollections() bool CollectionInfo::itemIsLess(Item *lhs, Item *rhs) { + if(lhs->leaf && !rhs->leaf) return true; + if(!lhs->leaf && rhs->leaf) return false; + if(!lhs->collectionInfo->menusort && lhs->leaf && rhs->leaf) return false; return lhs->lowercaseFullTitle() < rhs->lowercaseFullTitle(); } + void CollectionInfo::sortItems() { std::sort(items.begin(), items.end(), itemIsLess); diff --git a/RetroFE/Source/Collection/CollectionInfo.h b/RetroFE/Source/Collection/CollectionInfo.h index a1b5812..04bc908 100644 --- a/RetroFE/Source/Collection/CollectionInfo.h +++ b/RetroFE/Source/Collection/CollectionInfo.h @@ -35,7 +35,7 @@ public: std::string metadataType; std::string launcher; std::vector items; - + bool menusort; private: std::vector subcollections_; std::string metadataPath_; diff --git a/RetroFE/Source/Collection/CollectionInfoBuilder.cpp b/RetroFE/Source/Collection/CollectionInfoBuilder.cpp index 5209b73..e5131de 100644 --- a/RetroFE/Source/Collection/CollectionInfoBuilder.cpp +++ b/RetroFE/Source/Collection/CollectionInfoBuilder.cpp @@ -354,7 +354,5 @@ bool CollectionInfoBuilder::ImportDirectory(CollectionInfo *info, std::string me metaDB_.injectMetadata(info); - info->sortItems(); - return true; } diff --git a/RetroFE/Source/Collection/MenuParser.cpp b/RetroFE/Source/Collection/MenuParser.cpp index 5e62290..f80bd5c 100644 --- a/RetroFE/Source/Collection/MenuParser.cpp +++ b/RetroFE/Source/Collection/MenuParser.cpp @@ -85,17 +85,10 @@ bool MenuParser::buildTextMenu(CollectionInfo *collection, bool sort) } } - std::sort(collection->items.begin(), collection->items.end(), VectorSort); - // todo: sorting should occur within the collection itself, not externally - if(sort) - { - // sort the menu if requested - std::sort( menuItems.begin(), menuItems.end(), VectorSort); - } - - //todo: sorting + collection->menusort = sort; collection->items.insert(collection->items.begin(), menuItems.begin(), menuItems.end()); + collection->sortItems(); return true; } @@ -147,17 +140,9 @@ bool MenuParser::buildLegacyXmlMenu(CollectionInfo *collection, bool sort) menuItems.push_back(item); } + - - std::sort( collection->items.begin(), collection->items.end(), VectorSort); - - // todo: sorting should occur within the collection itself, not externally - if(sort) - { - // sort the menu if requested - std::sort( menuItems.begin(), menuItems.end(), VectorSort); - } - + collection->menusort = sort; collection->items.insert(collection->items.begin(), menuItems.begin(), menuItems.end()); retVal = true; diff --git a/RetroFE/Source/RetroFE.cpp b/RetroFE/Source/RetroFE.cpp index 76fefb1..1b6146f 100644 --- a/RetroFE/Source/RetroFE.cpp +++ b/RetroFE/Source/RetroFE.cpp @@ -585,7 +585,7 @@ CollectionInfo *RetroFE::getCollection(std::string collectionName) } } - + collection->sortItems(); return collection; }