mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2025-01-18 23:15:38 +00:00
Added a per-system game counter to the multi-scraper in addition to the total game count
This commit is contained in:
parent
bbc5f0be9b
commit
67b84434db
|
@ -103,7 +103,7 @@ GuiScraperMenu::GuiScraperMenu(std::string title)
|
||||||
// Add systems (all systems with an existing platform ID are listed).
|
// Add systems (all systems with an existing platform ID are listed).
|
||||||
mSystems = std::make_shared<OptionListComponent<SystemData*>>(getHelpStyle(),
|
mSystems = std::make_shared<OptionListComponent<SystemData*>>(getHelpStyle(),
|
||||||
"SCRAPE THESE SYSTEMS", true);
|
"SCRAPE THESE SYSTEMS", true);
|
||||||
for (unsigned int i = 0; i < SystemData::sSystemVector.size(); ++i) {
|
for (unsigned int i {0}; i < SystemData::sSystemVector.size(); ++i) {
|
||||||
if (!SystemData::sSystemVector[i]->hasPlatformId(PlatformIds::PLATFORM_IGNORE)) {
|
if (!SystemData::sSystemVector[i]->hasPlatformId(PlatformIds::PLATFORM_IGNORE)) {
|
||||||
mSystems->add(SystemData::sSystemVector[i]->getFullName(), SystemData::sSystemVector[i],
|
mSystems->add(SystemData::sSystemVector[i]->getFullName(), SystemData::sSystemVector[i],
|
||||||
!SystemData::sSystemVector[i]->getPlatformIds().empty());
|
!SystemData::sSystemVector[i]->getPlatformIds().empty());
|
||||||
|
@ -1260,10 +1260,9 @@ void GuiScraperMenu::start()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::queue<ScraperSearchParams> searches =
|
auto searches = getSearches(mSystems->getSelectedObjects(), mFilters->getSelected());
|
||||||
getSearches(mSystems->getSelectedObjects(), mFilters->getSelected());
|
|
||||||
|
|
||||||
if (searches.empty()) {
|
if (searches.first.empty()) {
|
||||||
mWindow->pushGui(
|
mWindow->pushGui(
|
||||||
new GuiMsgBox(getHelpStyle(), "ALL GAMES WERE FILTERED, NOTHING TO SCRAPE"));
|
new GuiMsgBox(getHelpStyle(), "ALL GAMES WERE FILTERED, NOTHING TO SCRAPE"));
|
||||||
}
|
}
|
||||||
|
@ -1276,22 +1275,25 @@ void GuiScraperMenu::start()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::queue<ScraperSearchParams> GuiScraperMenu::getSearches(std::vector<SystemData*> systems,
|
std::pair<std::queue<ScraperSearchParams>, std::map<SystemData*, int>> GuiScraperMenu::getSearches(
|
||||||
GameFilterFunc selector)
|
std::vector<SystemData*> systems, GameFilterFunc selector)
|
||||||
{
|
{
|
||||||
std::queue<ScraperSearchParams> queue;
|
std::pair<std::queue<ScraperSearchParams>, std::map<SystemData*, int>> queue;
|
||||||
|
|
||||||
for (auto sys = systems.cbegin(); sys != systems.cend(); ++sys) {
|
for (auto sys = systems.cbegin(); sys != systems.cend(); ++sys) {
|
||||||
std::vector<FileData*> games {(*sys)->getRootFolder()->getScrapeFilesRecursive(
|
std::vector<FileData*> games {(*sys)->getRootFolder()->getScrapeFilesRecursive(
|
||||||
Settings::getInstance()->getBool("ScraperIncludeFolders"),
|
Settings::getInstance()->getBool("ScraperIncludeFolders"),
|
||||||
Settings::getInstance()->getBool("ScraperExcludeRecursively"),
|
Settings::getInstance()->getBool("ScraperExcludeRecursively"),
|
||||||
Settings::getInstance()->getBool("ScraperRespectExclusions"))};
|
Settings::getInstance()->getBool("ScraperRespectExclusions"))};
|
||||||
|
|
||||||
for (auto game = games.cbegin(); game != games.cend(); ++game) {
|
for (auto game = games.cbegin(); game != games.cend(); ++game) {
|
||||||
if (selector((*sys), (*game))) {
|
if (selector((*sys), (*game))) {
|
||||||
ScraperSearchParams search;
|
ScraperSearchParams search;
|
||||||
search.game = *game;
|
search.game = *game;
|
||||||
search.system = *sys;
|
search.system = *sys;
|
||||||
|
|
||||||
queue.push(search);
|
++queue.second[*sys];
|
||||||
|
queue.first.push(search);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,8 +48,8 @@ private:
|
||||||
void openOfflineGenerator(GuiSettings* settings);
|
void openOfflineGenerator(GuiSettings* settings);
|
||||||
void openOtherOptions();
|
void openOtherOptions();
|
||||||
|
|
||||||
std::queue<ScraperSearchParams> getSearches(std::vector<SystemData*> systems,
|
std::pair<std::queue<ScraperSearchParams>, std::map<SystemData*, int>> getSearches(
|
||||||
GameFilterFunc selector);
|
std::vector<SystemData*> systems, GameFilterFunc selector);
|
||||||
|
|
||||||
std::shared_ptr<OptionListComponent<std::string>> mScraper;
|
std::shared_ptr<OptionListComponent<std::string>> mScraper;
|
||||||
std::shared_ptr<OptionListComponent<GameFilterFunc>> mFilters;
|
std::shared_ptr<OptionListComponent<GameFilterFunc>> mFilters;
|
||||||
|
|
|
@ -23,12 +23,13 @@
|
||||||
#include "guis/GuiMsgBox.h"
|
#include "guis/GuiMsgBox.h"
|
||||||
#include "guis/GuiScraperSearch.h"
|
#include "guis/GuiScraperSearch.h"
|
||||||
|
|
||||||
GuiScraperMulti::GuiScraperMulti(const std::queue<ScraperSearchParams>& searches,
|
GuiScraperMulti::GuiScraperMulti(
|
||||||
bool approveResults)
|
const std::pair<std::queue<ScraperSearchParams>, std::map<SystemData*, int>>& searches,
|
||||||
|
bool approveResults)
|
||||||
: mRenderer {Renderer::getInstance()}
|
: mRenderer {Renderer::getInstance()}
|
||||||
, mBackground {":/graphics/frame.svg"}
|
, mBackground {":/graphics/frame.svg"}
|
||||||
, mGrid {glm::ivec2 {2, 6}}
|
, mGrid {glm::ivec2 {2, 6}}
|
||||||
, mSearchQueue {searches}
|
, mSearchQueue {searches.first}
|
||||||
, mApproveResults {approveResults}
|
, mApproveResults {approveResults}
|
||||||
{
|
{
|
||||||
assert(mSearchQueue.size());
|
assert(mSearchQueue.size());
|
||||||
|
@ -43,6 +44,9 @@ GuiScraperMulti::GuiScraperMulti(const std::queue<ScraperSearchParams>& searches
|
||||||
mTotalSuccessful = 0;
|
mTotalSuccessful = 0;
|
||||||
mTotalSkipped = 0;
|
mTotalSkipped = 0;
|
||||||
|
|
||||||
|
for (auto it = searches.second.begin(); it != searches.second.end(); ++it)
|
||||||
|
mQueueCountPerSystem[(*it).first] = std::make_pair(0, (*it).second);
|
||||||
|
|
||||||
// Set up grid.
|
// Set up grid.
|
||||||
mTitle = std::make_shared<TextComponent>("SCRAPING IN PROGRESS", Font::get(FONT_SIZE_LARGE),
|
mTitle = std::make_shared<TextComponent>("SCRAPING IN PROGRESS", Font::get(FONT_SIZE_LARGE),
|
||||||
mMenuColorTitle, ALIGN_CENTER);
|
mMenuColorTitle, ALIGN_CENTER);
|
||||||
|
@ -215,8 +219,17 @@ void GuiScraperMulti::doNextSearch()
|
||||||
|
|
||||||
// Update title.
|
// Update title.
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
mSystem->setText(Utils::String::toUpper(mSearchQueue.front().system->getFullName()));
|
|
||||||
|
|
||||||
|
if (mQueueCountPerSystem.size() > 1) {
|
||||||
|
const int gameCount {++mQueueCountPerSystem[mSearchQueue.front().system].first};
|
||||||
|
const int totalGameCount {mQueueCountPerSystem[mSearchQueue.front().system].second};
|
||||||
|
mSystem->setText(Utils::String::toUpper(mSearchQueue.front().system->getFullName()) +
|
||||||
|
" [GAME " + std::to_string(gameCount) + " OF " +
|
||||||
|
std::to_string(totalGameCount) + "]");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
mSystem->setText(Utils::String::toUpper(mSearchQueue.front().system->getFullName()));
|
||||||
|
}
|
||||||
std::string scrapeName;
|
std::string scrapeName;
|
||||||
|
|
||||||
if (Settings::getInstance()->getBool("ScraperSearchMetadataName")) {
|
if (Settings::getInstance()->getBool("ScraperSearchMetadataName")) {
|
||||||
|
@ -238,9 +251,9 @@ void GuiScraperMulti::doNextSearch()
|
||||||
mResultList->resetScrollIndicatorStatus();
|
mResultList->resetScrollIndicatorStatus();
|
||||||
|
|
||||||
// Extract possible subfolders from the path.
|
// Extract possible subfolders from the path.
|
||||||
std::string folderPath =
|
std::string folderPath {
|
||||||
Utils::String::replace(Utils::FileSystem::getParent(mSearchQueue.front().game->getPath()),
|
Utils::String::replace(Utils::FileSystem::getParent(mSearchQueue.front().game->getPath()),
|
||||||
mSearchQueue.front().system->getSystemEnvData()->mStartPath, "");
|
mSearchQueue.front().system->getSystemEnvData()->mStartPath, "")};
|
||||||
|
|
||||||
if (folderPath.size() >= 2) {
|
if (folderPath.size() >= 2) {
|
||||||
folderPath.erase(0, 1);
|
folderPath.erase(0, 1);
|
||||||
|
@ -265,7 +278,7 @@ void GuiScraperMulti::doNextSearch()
|
||||||
|
|
||||||
void GuiScraperMulti::acceptResult(const ScraperSearchResult& result)
|
void GuiScraperMulti::acceptResult(const ScraperSearchResult& result)
|
||||||
{
|
{
|
||||||
ScraperSearchParams& search = mSearchQueue.front();
|
ScraperSearchParams& search {mSearchQueue.front()};
|
||||||
|
|
||||||
search.system->getIndex()->removeFromIndex(search.game);
|
search.system->getIndex()->removeFromIndex(search.game);
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,9 @@ class TextComponent;
|
||||||
class GuiScraperMulti : public GuiComponent
|
class GuiScraperMulti : public GuiComponent
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GuiScraperMulti(const std::queue<ScraperSearchParams>& searches, bool approveResults);
|
GuiScraperMulti(
|
||||||
|
const std::pair<std::queue<ScraperSearchParams>, std::map<SystemData*, int>>& searches,
|
||||||
|
bool approveResults);
|
||||||
|
|
||||||
virtual ~GuiScraperMulti();
|
virtual ~GuiScraperMulti();
|
||||||
|
|
||||||
|
@ -56,6 +58,7 @@ private:
|
||||||
std::shared_ptr<ComponentList> mResultList;
|
std::shared_ptr<ComponentList> mResultList;
|
||||||
|
|
||||||
std::queue<ScraperSearchParams> mSearchQueue;
|
std::queue<ScraperSearchParams> mSearchQueue;
|
||||||
|
std::map<SystemData*, std::pair<int, int>> mQueueCountPerSystem;
|
||||||
std::vector<MetaDataDecl> mMetaDataDecl;
|
std::vector<MetaDataDecl> mMetaDataDecl;
|
||||||
unsigned int mTotalGames;
|
unsigned int mTotalGames;
|
||||||
unsigned int mCurrentGame;
|
unsigned int mCurrentGame;
|
||||||
|
|
Loading…
Reference in a new issue