summaryrefslogtreecommitdiff
path: root/src/yuzu/configuration
diff options
context:
space:
mode:
authorlat9nq <22451773+lat9nq@users.noreply.github.com>2021-05-25 20:49:42 -0400
committerlat9nq <22451773+lat9nq@users.noreply.github.com>2021-06-01 17:22:04 -0400
commit4a3d57e469c5604631b5768c4fa917f199ce7854 (patch)
tree74460d14a44d52709970a9a8152f2dca93733973 /src/yuzu/configuration
parent8aeb42566968053d1a74f50f8453930cfdf2c42c (diff)
yuzu: Add settings reset button to general configuration
Builds on german77's work to reset all settings back to their defaults. This include UISettings and Settings values structs, but does not affect save profiles, input profiles, and game directories. This works from a button input in configure_general. When activated, it calls a callback to close the whole configure dialog, then GMainWindow deletes the old configuration, both on disk and in memory, and reinitalizes a new one. It also resets a portion of the UI and calls the telemetry window prompt.
Diffstat (limited to 'src/yuzu/configuration')
-rw-r--r--src/yuzu/configuration/config.cpp6
-rw-r--r--src/yuzu/configuration/config.h1
-rw-r--r--src/yuzu/configuration/configure_dialog.cpp6
-rw-r--r--src/yuzu/configuration/configure_general.cpp23
-rw-r--r--src/yuzu/configuration/configure_general.h6
-rw-r--r--src/yuzu/configuration/configure_general.ui48
6 files changed, 71 insertions, 19 deletions
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp
index 0ea508acd..eb58bfa5b 100644
--- a/src/yuzu/configuration/config.cpp
+++ b/src/yuzu/configuration/config.cpp
@@ -1632,12 +1632,6 @@ void Config::Save() {
SaveValues();
}
-void Config::ResetDefaults() {
- FS::Delete(qt_config_loc);
- FS::CreateFullPath(qt_config_loc);
- Reload();
-}
-
void Config::ReadControlPlayerValue(std::size_t player_index) {
qt_config->beginGroup(QStringLiteral("Controls"));
ReadPlayerValue(player_index);
diff --git a/src/yuzu/configuration/config.h b/src/yuzu/configuration/config.h
index cd68d7b4d..ce3355588 100644
--- a/src/yuzu/configuration/config.h
+++ b/src/yuzu/configuration/config.h
@@ -28,7 +28,6 @@ public:
void Reload();
void Save();
- void ResetDefaults();
void ReadControlPlayerValue(std::size_t player_index);
void SaveControlPlayerValue(std::size_t player_index);
diff --git a/src/yuzu/configuration/configure_dialog.cpp b/src/yuzu/configuration/configure_dialog.cpp
index 6028135c5..167323831 100644
--- a/src/yuzu/configuration/configure_dialog.cpp
+++ b/src/yuzu/configuration/configure_dialog.cpp
@@ -16,6 +16,10 @@
#include "yuzu/configuration/configure_input_player.h"
#include "yuzu/hotkeys.h"
+static void CloseDialog(ConfigureDialog *dialog) {
+ dialog->close();
+}
+
ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry,
InputCommon::InputSubsystem* input_subsystem)
: QDialog(parent), ui(new Ui::ConfigureDialog), registry(registry) {
@@ -27,6 +31,8 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry,
ui->inputTab->Initialize(input_subsystem);
+ ui->generalTab->SetResetCallback(&CloseDialog, this);
+
SetConfiguration();
PopulateSelectionList();
diff --git a/src/yuzu/configuration/configure_general.cpp b/src/yuzu/configuration/configure_general.cpp
index a107cd3e1..28aaf47be 100644
--- a/src/yuzu/configuration/configure_general.cpp
+++ b/src/yuzu/configuration/configure_general.cpp
@@ -3,14 +3,14 @@
// Refer to the license.txt file included.
#include <QCheckBox>
-#include <QSpinBox>
#include <QMessageBox>
+#include <QSpinBox>
#include "common/settings.h"
#include "core/core.h"
#include "ui_configure_general.h"
+#include "yuzu/configuration/config.h"
#include "yuzu/configuration/configuration_shared.h"
#include "yuzu/configuration/configure_general.h"
-#include "yuzu/configuration/config.h"
#include "yuzu/uisettings.h"
ConfigureGeneral::ConfigureGeneral(QWidget* parent)
@@ -46,6 +46,8 @@ void ConfigureGeneral::SetConfiguration() {
ui->toggle_frame_limit->setChecked(Settings::values.use_frame_limit.GetValue());
ui->frame_limit->setValue(Settings::values.frame_limit.GetValue());
+ ui->button_reset_defaults->setEnabled(runtime_lock);
+
if (Settings::IsConfiguringGlobal()) {
ui->frame_limit->setEnabled(Settings::values.use_frame_limit.GetValue());
} else {
@@ -54,13 +56,24 @@ void ConfigureGeneral::SetConfiguration() {
}
}
+// Called to set the callback when resetting settings to defaults
+void ConfigureGeneral::SetResetCallback(void (*callback)(ConfigureDialog*),
+ ConfigureDialog* param) {
+ ResetCallback = callback;
+ reset_callback_param = param;
+}
+
void ConfigureGeneral::ResetDefaults() {
QMessageBox::StandardButton answer = QMessageBox::question(
- this, tr("yuzu"), tr("Are you sure you want to <b>reset your settings</b>?"),
+ this, tr("yuzu"),
+ tr("This reset all settings and remove all per-game configurations. This will not delete "
+ "game directories, profiles, or input profiles. Proceed?"),
QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
if (answer == QMessageBox::No)
return;
- UISettings::values.
+ UISettings::values.reset_to_defaults = true;
+ UISettings::values.is_game_list_reload_pending.exchange(true);
+ (*ResetCallback)(reset_callback_param);
}
void ConfigureGeneral::ApplyConfiguration() {
@@ -119,6 +132,8 @@ void ConfigureGeneral::SetupPerGameUI() {
ui->toggle_background_pause->setVisible(false);
ui->toggle_hide_mouse->setVisible(false);
+ ui->button_reset_defaults->setVisible(false);
+
ConfigurationShared::SetColoredTristate(ui->toggle_frame_limit,
Settings::values.use_frame_limit, use_frame_limit);
ConfigurationShared::SetColoredTristate(ui->use_multi_core, Settings::values.use_multi_core,
diff --git a/src/yuzu/configuration/configure_general.h b/src/yuzu/configuration/configure_general.h
index 3d8a1dae0..2a7741ad9 100644
--- a/src/yuzu/configuration/configure_general.h
+++ b/src/yuzu/configuration/configure_general.h
@@ -7,6 +7,8 @@
#include <memory>
#include <QWidget>
+class ConfigureDialog;
+
namespace ConfigurationShared {
enum class CheckState;
}
@@ -24,6 +26,7 @@ public:
explicit ConfigureGeneral(QWidget* parent = nullptr);
~ConfigureGeneral() override;
+ void SetResetCallback(void (*callback)(ConfigureDialog*), ConfigureDialog *param);
void ResetDefaults();
void ApplyConfiguration();
@@ -35,6 +38,9 @@ private:
void SetupPerGameUI();
+ void (*ResetCallback)(ConfigureDialog*);
+ ConfigureDialog *reset_callback_param;
+
std::unique_ptr<Ui::ConfigureGeneral> ui;
ConfigurationShared::CheckState use_frame_limit;
diff --git a/src/yuzu/configuration/configure_general.ui b/src/yuzu/configuration/configure_general.ui
index ae8ed5ca5..bc7041090 100644
--- a/src/yuzu/configuration/configure_general.ui
+++ b/src/yuzu/configuration/configure_general.ui
@@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
- <width>300</width>
+ <width>329</width>
<height>407</height>
</rect>
</property>
@@ -91,13 +91,6 @@
</layout>
</widget>
</item>
- <item alignment="Qt::AlignRight">
- <widget class="QPushButton" name="button_reset_defaults">
- <property name="text">
- <string>Reset All Settings</string>
- </property>
- </widget>
- </item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
@@ -111,6 +104,45 @@
</property>
</spacer>
</item>
+ <item>
+ <layout class="QHBoxLayout" name="layout_reset">
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <property name="leftMargin">
+ <number>5</number>
+ </property>
+ <property name="topMargin">
+ <number>5</number>
+ </property>
+ <property name="rightMargin">
+ <number>5</number>
+ </property>
+ <property name="bottomMargin">
+ <number>5</number>
+ </property>
+ <item>
+ <widget class="QPushButton" name="button_reset_defaults">
+ <property name="text">
+ <string>Reset All Settings</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="spacer_reset">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
</layout>
</item>
</layout>