Added functions to GuiSettings to reload the ROM directory and close all windows

This commit is contained in:
Leon Styhre 2023-08-13 20:36:18 +02:00
parent d7c03e52fb
commit 39982f048d
2 changed files with 33 additions and 0 deletions

View file

@ -31,10 +31,12 @@ GuiSettings::GuiSettings(std::string title)
, mNeedsSorting {false}
, mNeedsSortingCollections {false}
, mNeedsResetFilters {false}
, mNeedsRescanROMDirectory {false}
, mNeedsReloading {false}
, mNeedsGoToStart {false}
, mNeedsGoToSystem {false}
, mNeedsGoToGroupedCollections {false}
, mNeedsCloseAllWindows {false}
, mInvalidateCachedBackground {false}
{
addChild(&mMenu);
@ -61,6 +63,25 @@ void GuiSettings::save()
if (mNeedsSaving)
Settings::getInstance()->saveFile();
if (mNeedsRescanROMDirectory) {
if (CollectionSystemsManager::getInstance()->isEditing())
CollectionSystemsManager::getInstance()->exitEditMode();
mWindow->stopInfoPopup();
// Write any gamelist.xml changes before proceeding with the rescan.
if (Settings::getInstance()->getString("SaveGamelistsMode") == "on exit") {
for (auto system : SystemData::sSystemVector)
system->writeMetaData();
}
ViewController::getInstance()->rescanROMDirectory();
// Close all open windows.
while (mWindow->getGuiStackSize() > 1) {
GuiComponent* window {mWindow->peekGui()};
if (window != nullptr)
mWindow->removeGui(window);
}
return;
}
if (mNeedsCollectionsUpdate) {
CollectionSystemsManager::getInstance()->loadEnabledListFromSettings();
CollectionSystemsManager::getInstance()->updateSystemsList();
@ -155,6 +176,14 @@ void GuiSettings::save()
ViewController::getInstance()->resetCamera();
}
if (mNeedsCloseAllWindows) {
while (mWindow->getGuiStackSize() > 1) {
GuiComponent* window {mWindow->peekGui()};
if (window != nullptr)
mWindow->removeGui(window);
}
}
if (mInvalidateCachedBackground) {
// This delay reduces the likelyhood that the SVG rasterizer which is running in a
// separate thread is not done until the cached background is invalidated. Without

View file

@ -49,6 +49,7 @@ public:
void setNeedsSorting() { mNeedsSorting = true; }
void setNeedsSortingCollections() { mNeedsSortingCollections = true; }
void setNeedsResetFilters() { mNeedsResetFilters = true; }
void setNeedsRescanROMDirectory() { mNeedsRescanROMDirectory = true; }
void setNeedsReloading() { mNeedsReloading = true; }
void setNeedsGoToStart() { mNeedsGoToStart = true; }
void setNeedsGoToSystem(SystemData* goToSystem)
@ -57,6 +58,7 @@ public:
mGoToSystem = goToSystem;
};
void setNeedsGoToGroupedCollections() { mNeedsGoToGroupedCollections = true; }
void setNeedsCloseAllWindows() { mNeedsCloseAllWindows = true; }
void setInvalidateCachedBackground() { mInvalidateCachedBackground = true; }
bool input(InputConfig* config, Input input) override;
@ -74,10 +76,12 @@ private:
bool mNeedsSorting;
bool mNeedsSortingCollections;
bool mNeedsResetFilters;
bool mNeedsRescanROMDirectory;
bool mNeedsReloading;
bool mNeedsGoToStart;
bool mNeedsGoToSystem;
bool mNeedsGoToGroupedCollections;
bool mNeedsCloseAllWindows;
bool mInvalidateCachedBackground;
};