diff --git a/Source/RetroFE.cpp b/Source/RetroFE.cpp index e4349ee..d45ac7d 100644 --- a/Source/RetroFE.cpp +++ b/Source/RetroFE.cpp @@ -445,43 +445,43 @@ Page *RetroFE::LoadPage(std::string collectionName) Logger::Write(Logger::ZONE_INFO, "RetroFE", "Creating page for collection " + collectionName); Page *page = NULL; + + std::vector *collection = GetCollection(collectionName); + std::string layoutName = GetLayout(collectionName); + + if(PageChain.size() > 0) + { + Page *oldPage = PageChain.back(); + oldPage->FreeGraphicsMemory(); + } + + PageBuilder pb(layoutName, collectionName, Config, &FC); + page = pb.BuildPage(); + page->SetItems(collection); + page->Start(); + + if(page) + { + PageChain.push_back(page); + } + + return page; +} + +std::vector *RetroFE::GetCollection(std::string collectionName) +{ std::vector *collection = new std::vector(); // the page will deallocate this once its done MenuParser mp; mp.GetMenuItems(&CollectionDB, collectionName, *collection); CollectionDB.GetCollection(collectionName, *collection); - //todo: handle this in a more esthetically pleasing way instead of crashing if(collection->size() == 0) { Logger::Write(Logger::ZONE_WARNING, "RetroFE", "No list items found for collection " + collectionName); } - else - { - std::string layoutName = GetLayout(collectionName); - if(PageChain.size() > 0) - { - Page *oldPage = PageChain.back(); - - if(oldPage) - { - oldPage->FreeGraphicsMemory(); - } - } - - PageBuilder pb(layoutName, collectionName, Config, &FC); - page = pb.BuildPage(); - page->SetItems(collection); - page->Start(); - - if(page) - { - PageChain.push_back(page); - } - } - - return page; + return collection; } std::string RetroFE::GetLayout(std::string collectionName) diff --git a/Source/RetroFE.h b/Source/RetroFE.h index 827f7af..43f5abe 100644 --- a/Source/RetroFE.h +++ b/Source/RetroFE.h @@ -9,6 +9,7 @@ #include "Video/IVideo.h" #include #include +#include class CollectionDatabase; class Configuration; @@ -48,7 +49,7 @@ private: RETROFE_STATE ProcessUserInput(); void Update(float dt, bool scrollActive); std::string GetLayout(std::string collectionName); - + std::vector *GetCollection(std::string collectionName); Configuration &Config; CollectionDatabase &CollectionDB; UserInput Input;