diff --git a/src/citra_qt/configuration/config.cpp b/src/citra_qt/configuration/config.cpp index 91bb2d4cc..d8196206d 100644 --- a/src/citra_qt/configuration/config.cpp +++ b/src/citra_qt/configuration/config.cpp @@ -141,7 +141,8 @@ void QtConfig::ReadBasicSetting(Settings::Setting, ranged>& se const std::vector default_value = setting.GetDefault(); QStringList stringList = qt_config->value(name).toStringList(); - if (qt_config->value(name + QStringLiteral("/default"), false).toBool() || stringList.size() < 1) { + if (qt_config->value(name + QStringLiteral("/default"), false).toBool() || + stringList.size() < 1) { setting.SetValue(default_value); } else { if (stringList.size() < 1) { @@ -188,27 +189,7 @@ void QtConfig::ReadGlobalSetting(Settings::SwitchableSetting& sett const bool use_global = qt_config->value(name + QStringLiteral("/use_global"), true).toBool(); setting.SetGlobal(use_global); if (global || !use_global) { - QVariant default_value{}; - if constexpr (std::is_enum_v) { - using TypeU = std::underlying_type_t; - default_value = QVariant::fromValue(static_cast(setting.GetDefault())); - setting.SetValue(static_cast(ReadSetting(name, default_value).value())); - } else { - default_value = QVariant::fromValue(setting.GetDefault()); - setting.SetValue(ReadSetting(name, default_value).value()); - } - } -} - -template <> -void QtConfig::ReadGlobalSetting(Settings::SwitchableSetting& setting) { - QString name = QString::fromStdString(setting.GetLabel()); - const bool use_global = qt_config->value(name + QStringLiteral("/use_global"), true).toBool(); - setting.SetGlobal(use_global); - if (global || !use_global) { - const QString default_value = QString::fromStdString(setting.GetDefault()); - setting.SetValue( - ReadSetting(name, QVariant::fromValue(default_value)).toString().toStdString()); + ReadBasicSetting(setting); } } @@ -217,7 +198,8 @@ template <> void QtConfig::WriteBasicSetting(const Settings::Setting& setting) { const QString name = QString::fromStdString(setting.GetLabel()); const std::string& value = setting.GetValue(); - qt_config->setValue(name + QStringLiteral("/default"), value == setting.GetDefault()); + if (global) + qt_config->setValue(name + QStringLiteral("/default"), value == setting.GetDefault()); qt_config->setValue(name, QString::fromStdString(value)); } @@ -226,7 +208,8 @@ void QtConfig::WriteBasicSetting(const Settings::Setting, rang const QString name = QString::fromStdString(setting.GetLabel()); const std::vector& value = setting.GetValue(); - qt_config->setValue(name + QStringLiteral("/default"), value == setting.GetDefault()); + if (global) + qt_config->setValue(name + QStringLiteral("/default"), value == setting.GetDefault()); QStringList stringList; if constexpr (std::is_enum_v) { @@ -241,15 +224,14 @@ void QtConfig::WriteBasicSetting(const Settings::Setting, rang stringList.append(QString::number(item)); } } - - qt_config->setValue(name, stringList); } // Explicit u16 definition: Qt would store it as QMetaType otherwise, which is not human-readable template <> void QtConfig::WriteBasicSetting(const Settings::Setting& setting) { const QString name = QString::fromStdString(setting.GetLabel()); const u16& value = setting.GetValue(); - qt_config->setValue(name + QStringLiteral("/default"), value == setting.GetDefault()); + if (global) + qt_config->setValue(name + QStringLiteral("/default"), value == setting.GetDefault()); qt_config->setValue(name, static_cast(value)); } @@ -257,7 +239,8 @@ template void QtConfig::WriteBasicSetting(const Settings::Setting& setting) { const QString name = QString::fromStdString(setting.GetLabel()); const Type value = setting.GetValue(); - qt_config->setValue(name + QStringLiteral("/default"), value == setting.GetDefault()); + if (global) + qt_config->setValue(name + QStringLiteral("/default"), value == setting.GetDefault()); if constexpr (std::is_enum_v) { qt_config->setValue(name, static_cast>(value)); } else { @@ -273,39 +256,7 @@ void QtConfig::WriteGlobalSetting(const Settings::SwitchableSettingsetValue(name + QStringLiteral("/use_global"), setting.UsingGlobal()); } if (global || !setting.UsingGlobal()) { - qt_config->setValue(name + QStringLiteral("/default"), value == setting.GetDefault()); - if constexpr (std::is_enum_v) { - qt_config->setValue(name, static_cast>(value)); - } else { - qt_config->setValue(name, QVariant::fromValue(value)); - } - } -} - -template <> -void QtConfig::WriteGlobalSetting(const Settings::SwitchableSetting& setting) { - const QString name = QString::fromStdString(setting.GetLabel()); - const std::string& value = setting.GetValue(global); - if (!global) { - qt_config->setValue(name + QStringLiteral("/use_global"), setting.UsingGlobal()); - } - if (global || !setting.UsingGlobal()) { - qt_config->setValue(name + QStringLiteral("/default"), value == setting.GetDefault()); - qt_config->setValue(name, QString::fromStdString(value)); - } -} - -// Explicit u16 definition: Qt would store it as QMetaType otherwise, which is not human-readable -template <> -void QtConfig::WriteGlobalSetting(const Settings::SwitchableSetting& setting) { - const QString name = QString::fromStdString(setting.GetLabel()); - const u16& value = setting.GetValue(global); - if (!global) { - qt_config->setValue(name + QStringLiteral("/use_global"), setting.UsingGlobal()); - } - if (global || !setting.UsingGlobal()) { - qt_config->setValue(name + QStringLiteral("/default"), value == setting.GetDefault()); - qt_config->setValue(name, static_cast(value)); + WriteBasicSetting(setting); } } @@ -1473,7 +1424,8 @@ void QtConfig::WriteSetting(const QString& name, const QVariant& value) { void QtConfig::WriteSetting(const QString& name, const QVariant& value, const QVariant& default_value) { - qt_config->setValue(name + QStringLiteral("/default"), value == default_value); + if (global) + qt_config->setValue(name + QStringLiteral("/default"), value == default_value); qt_config->setValue(name, value); } diff --git a/src/citra_qt/configuration/config.h b/src/citra_qt/configuration/config.h index f343c17fc..3fba498ed 100644 --- a/src/citra_qt/configuration/config.h +++ b/src/citra_qt/configuration/config.h @@ -131,10 +131,9 @@ private: template void WriteBasicSetting(const Settings::Setting& setting); - template + template void WriteBasicSetting(const Settings::Setting, ranged>& setting); - ConfigType type; std::unique_ptr qt_config; std::string qt_config_loc;