mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2025-03-06 14:27:43 +00:00
Added functions to GuiSettings to reload the ROM directory and close all windows
This commit is contained in:
parent
d7c03e52fb
commit
39982f048d
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue