summaryrefslogtreecommitdiffstats
path: root/src/yuzu/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/yuzu/main.cpp')
-rw-r--r--src/yuzu/main.cpp43
1 files changed, 39 insertions, 4 deletions
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index 838bb6926..e5a2fdf8c 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -2587,14 +2587,49 @@ void GMainWindow::OnConfigure() {
&GMainWindow::OnLanguageChanged);
const auto result = configure_dialog.exec();
- if (result != QDialog::Accepted && !UISettings::values.configuration_applied) {
+ if (result != QDialog::Accepted && !UISettings::values.configuration_applied &&
+ !UISettings::values.reset_to_defaults) {
+ // Runs if the user hit Cancel or closed the window, and did not ever press the Apply button
+ // or `Reset to Defaults` button
return;
} else if (result == QDialog::Accepted) {
+ // Only apply new changes if user hit Okay
+ // This is here to avoid applying changes if the user hit Apply, made some changes, then hit
+ // Cancel
configure_dialog.ApplyConfiguration();
- controller_dialog->refreshConfiguration();
- }
+ } else if (UISettings::values.reset_to_defaults) {
+ LOG_INFO(Frontend, "Resetting all settings to defaults");
+ if (!Common::FS::RemoveFile(config->GetConfigFilePath())) {
+ LOG_WARNING(Frontend, "Failed to remove configuration file");
+ }
+ if (!Common::FS::RemoveDirContentsRecursively(
+ Common::FS::GetYuzuPath(Common::FS::YuzuPath::ConfigDir) / "custom")) {
+ LOG_WARNING(Frontend, "Failed to remove custom configuration files");
+ }
+ if (!Common::FS::RemoveDirRecursively(
+ Common::FS::GetYuzuPath(Common::FS::YuzuPath::CacheDir) / "game_list")) {
+ LOG_WARNING(Frontend, "Failed to remove game metadata cache files");
+ }
+
+ // Explicitly save the game directories, since reinitializing config does not do so.
+ QVector<UISettings::GameDir> old_game_dirs = UISettings::values.game_dirs;
+ QVector<u64> old_favorited_ids = UISettings::values.favorited_ids;
- configure_dialog.ApplyConfiguration();
+ Settings::values.disabled_addons.clear();
+
+ config = std::make_unique<Config>();
+ UISettings::values.reset_to_defaults = false;
+
+ UISettings::values.game_dirs = old_game_dirs;
+ UISettings::values.favorited_ids = old_favorited_ids;
+
+ InitializeRecentFileMenuActions();
+
+ SetDefaultUIGeometry();
+ RestoreUIState();
+
+ ShowTelemetryCallout();
+ }
controller_dialog->refreshConfiguration();
InitializeHotkeys();