diff --git a/src/yuzu/configuration/configuration_shared.h b/src/yuzu/configuration/configuration_shared.h
index b5d6ea8c8..d3e86c3cf 100644
--- a/src/yuzu/configuration/configuration_shared.h
+++ b/src/yuzu/configuration/configuration_shared.h
@@ -36,6 +36,9 @@ struct Trackers {
CheckState use_asynchronous_shaders;
CheckState use_fast_gpu_time;
CheckState force_30fps_mode;
+
+ CheckState use_rng_seed;
+ CheckState use_custom_rtc;
} extern trackers;
// Global-aware apply and set functions
diff --git a/src/yuzu/configuration/configure_system.cpp b/src/yuzu/configuration/configure_system.cpp
index 68e02738b..dffe357c7 100644
--- a/src/yuzu/configuration/configure_system.cpp
+++ b/src/yuzu/configuration/configure_system.cpp
@@ -67,21 +67,21 @@ void ConfigureSystem::SetConfiguration() {
const auto rtc_time = Settings::values.custom_rtc.GetValue().value_or(
std::chrono::seconds(QDateTime::currentSecsSinceEpoch()));
+ ui->rng_seed_checkbox->setChecked(Settings::values.rng_seed.GetValue().has_value());
+ ui->rng_seed_edit->setEnabled(Settings::values.rng_seed.GetValue().has_value() &&
+ Settings::values.rng_seed.UsingGlobal());
+ ui->rng_seed_edit->setText(rng_seed);
+
+ ui->custom_rtc_checkbox->setChecked(Settings::values.custom_rtc.GetValue().has_value());
+ ui->custom_rtc_edit->setEnabled(Settings::values.custom_rtc.GetValue().has_value() &&
+ Settings::values.rng_seed.UsingGlobal());
+ ui->custom_rtc_edit->setDateTime(QDateTime::fromSecsSinceEpoch(rtc_time.count()));
+
if (Settings::configuring_global) {
ui->combo_language->setCurrentIndex(Settings::values.language_index.GetValue());
ui->combo_region->setCurrentIndex(Settings::values.region_index.GetValue());
ui->combo_time_zone->setCurrentIndex(Settings::values.time_zone_index.GetValue());
ui->combo_sound->setCurrentIndex(Settings::values.sound_index.GetValue());
-
- ui->rng_seed_checkbox->setChecked(Settings::values.rng_seed.GetValue().has_value());
- ui->rng_seed_edit->setEnabled(Settings::values.rng_seed.GetValue().has_value() &&
- Settings::values.rng_seed.UsingGlobal());
- ui->rng_seed_edit->setText(rng_seed);
-
- ui->custom_rtc_checkbox->setChecked(Settings::values.custom_rtc.GetValue().has_value());
- ui->custom_rtc_edit->setEnabled(Settings::values.custom_rtc.GetValue().has_value() &&
- Settings::values.rng_seed.UsingGlobal());
- ui->custom_rtc_edit->setDateTime(QDateTime::fromSecsSinceEpoch(rtc_time.count()));
} else {
ConfigurationShared::SetPerGameSetting(ui->combo_language,
&Settings::values.language_index);
@@ -89,28 +89,6 @@ void ConfigureSystem::SetConfiguration() {
ConfigurationShared::SetPerGameSetting(ui->combo_time_zone,
&Settings::values.time_zone_index);
ConfigurationShared::SetPerGameSetting(ui->combo_sound, &Settings::values.sound_index);
-
- if (Settings::values.rng_seed.UsingGlobal()) {
- ui->rng_seed_checkbox->setCheckState(Qt::PartiallyChecked);
- } else {
- ui->rng_seed_checkbox->setCheckState(
- Settings::values.rng_seed.GetValue().has_value() ? Qt::Checked : Qt::Unchecked);
- ui->rng_seed_edit->setEnabled(Settings::values.rng_seed.GetValue().has_value());
- if (Settings::values.rng_seed.GetValue().has_value()) {
- ui->rng_seed_edit->setText(rng_seed);
- }
- }
-
- if (Settings::values.custom_rtc.UsingGlobal()) {
- ui->custom_rtc_checkbox->setCheckState(Qt::PartiallyChecked);
- } else {
- ui->custom_rtc_checkbox->setCheckState(
- Settings::values.custom_rtc.GetValue().has_value() ? Qt::Checked : Qt::Unchecked);
- ui->custom_rtc_edit->setEnabled(Settings::values.custom_rtc.GetValue().has_value());
- if (Settings::values.custom_rtc.GetValue().has_value()) {
- ui->custom_rtc_edit->setDateTime(QDateTime::fromSecsSinceEpoch(rtc_time.count()));
- }
- }
}
}
@@ -161,37 +139,42 @@ void ConfigureSystem::ApplyConfiguration() {
ui->combo_time_zone);
ConfigurationShared::ApplyPerGameSetting(&Settings::values.sound_index, ui->combo_sound);
- switch (ui->rng_seed_checkbox->checkState()) {
- case Qt::Checked:
+ switch (ConfigurationShared::trackers.use_rng_seed) {
+ case ConfigurationShared::CheckState::On:
+ case ConfigurationShared::CheckState::Off:
Settings::values.rng_seed.SetGlobal(false);
- Settings::values.rng_seed.SetValue(ui->rng_seed_edit->text().toULongLong(nullptr, 16));
+ if (ui->rng_seed_checkbox->isChecked()) {
+ Settings::values.rng_seed.SetValue(
+ ui->rng_seed_edit->text().toULongLong(nullptr, 16));
+ } else {
+ Settings::values.rng_seed.SetValue(std::nullopt);
+ }
break;
- case Qt::Unchecked:
- Settings::values.rng_seed.SetGlobal(false);
- Settings::values.rng_seed.SetValue(std::nullopt);
- break;
- case Qt::PartiallyChecked:
+ case ConfigurationShared::CheckState::Global:
Settings::values.rng_seed.SetGlobal(false);
Settings::values.rng_seed.SetValue(std::nullopt);
Settings::values.rng_seed.SetGlobal(true);
break;
+ case ConfigurationShared::CheckState::Count:;
}
- switch (ui->custom_rtc_checkbox->checkState()) {
- case Qt::Checked:
+ switch (ConfigurationShared::trackers.use_custom_rtc) {
+ case ConfigurationShared::CheckState::On:
+ case ConfigurationShared::CheckState::Off:
Settings::values.custom_rtc.SetGlobal(false);
- Settings::values.custom_rtc.SetValue(
- std::chrono::seconds(ui->custom_rtc_edit->dateTime().toSecsSinceEpoch()));
+ if (ui->custom_rtc_checkbox->isChecked()) {
+ Settings::values.custom_rtc.SetValue(
+ std::chrono::seconds(ui->custom_rtc_edit->dateTime().toSecsSinceEpoch()));
+ } else {
+ Settings::values.custom_rtc.SetValue(std::nullopt);
+ }
break;
- case Qt::Unchecked:
- Settings::values.custom_rtc.SetGlobal(false);
- Settings::values.custom_rtc.SetValue(std::nullopt);
- break;
- case Qt::PartiallyChecked:
+ case ConfigurationShared::CheckState::Global:
Settings::values.custom_rtc.SetGlobal(false);
Settings::values.custom_rtc.SetValue(std::nullopt);
Settings::values.custom_rtc.SetGlobal(true);
break;
+ case ConfigurationShared::CheckState::Count:;
}
}
@@ -229,10 +212,25 @@ void ConfigureSystem::SetupPerGameUI() {
return;
}
- ConfigurationShared::InsertGlobalItem(ui->combo_language);
- ConfigurationShared::InsertGlobalItem(ui->combo_region);
- ConfigurationShared::InsertGlobalItem(ui->combo_time_zone);
- ConfigurationShared::InsertGlobalItem(ui->combo_sound);
- ui->rng_seed_checkbox->setTristate(true);
- ui->custom_rtc_checkbox->setTristate(true);
+ ConfigurationShared::SetColoredComboBox(ui->combo_language, ui->label_language,
+ "label_language",
+ Settings::values.language_index.GetValue(true));
+ ConfigurationShared::SetColoredComboBox(ui->combo_region, ui->label_region, "label_region",
+ Settings::values.region_index.GetValue(true));
+ ConfigurationShared::SetColoredComboBox(ui->combo_time_zone, ui->label_timezone,
+ "label_timezone",
+ Settings::values.time_zone_index.GetValue(true));
+ ConfigurationShared::SetColoredComboBox(ui->combo_sound, ui->label_sound, "label_sound",
+ Settings::values.sound_index.GetValue(true));
+
+ ConfigurationShared::SetColoredTristate(ui->rng_seed_checkbox, "rng_seed_checkbox",
+ Settings::values.rng_seed.UsingGlobal(),
+ Settings::values.rng_seed.GetValue().has_value(),
+ Settings::values.rng_seed.GetValue(true).has_value(),
+ ConfigurationShared::trackers.use_rng_seed);
+ ConfigurationShared::SetColoredTristate(ui->custom_rtc_checkbox, "custom_rtc_checkbox",
+ Settings::values.custom_rtc.UsingGlobal(),
+ Settings::values.custom_rtc.GetValue().has_value(),
+ Settings::values.custom_rtc.GetValue(true).has_value(),
+ ConfigurationShared::trackers.use_custom_rtc);
}
diff --git a/src/yuzu/configuration/configure_system.ui b/src/yuzu/configuration/configure_system.ui
index 9c8cca6dc..53b95658b 100644
--- a/src/yuzu/configuration/configure_system.ui
+++ b/src/yuzu/configuration/configure_system.ui
@@ -21,490 +21,494 @@
System Settings
-
- -
-
-
- Sound output mode
-
-
-
- -
-
-
- Console ID:
-
-
-
- -
-
-
- Note: this can be overridden when region setting is auto-select
-
-
-
-
- Japanese (日本語)
-
-
- -
-
- English
-
-
- -
-
- French (français)
-
-
- -
-
- German (Deutsch)
-
-
- -
-
- Italian (italiano)
-
-
- -
-
- Spanish (español)
-
-
- -
-
- Chinese
-
-
- -
-
- Korean (한국어)
-
-
- -
-
- Dutch (Nederlands)
-
-
- -
-
- Portuguese (português)
-
-
- -
-
- Russian (Русский)
-
-
- -
-
- Taiwanese
-
-
- -
-
- British English
-
-
- -
-
- Canadian French
-
-
- -
-
- Latin American Spanish
-
-
- -
-
- Simplified Chinese
-
-
- -
-
- Traditional Chinese (正體中文)
-
-
-
-
- -
-
-
- Region:
-
-
-
- -
-
-
-
-
- Japan
-
-
- -
-
- USA
-
-
- -
-
- Europe
-
-
- -
-
- Australia
-
-
- -
-
- China
-
-
- -
-
- Korea
-
-
- -
-
- Taiwan
-
-
-
-
- -
-
-
- Time Zone:
-
-
-
- -
-
-
-
-
- Auto
-
-
- -
-
- Default
-
-
- -
-
- CET
-
-
- -
-
- CST6CDT
-
-
- -
-
- Cuba
-
-
- -
-
- EET
-
-
- -
-
- Egypt
-
-
- -
-
- Eire
-
-
- -
-
- EST
-
-
- -
-
- EST5EDT
-
-
- -
-
- GB
-
-
- -
-
- GB-Eire
-
-
- -
-
- GMT
-
-
- -
-
- GMT+0
-
-
- -
-
- GMT-0
-
-
- -
-
- GMT0
-
-
- -
-
- Greenwich
-
-
- -
-
- Hongkong
-
-
- -
-
- HST
-
-
- -
-
- Iceland
-
-
- -
-
- Iran
-
-
- -
-
- Israel
-
-
- -
-
- Jamaica
-
-
- -
-
- Japan
-
-
- -
-
- Kwajalein
-
-
- -
-
- Libya
-
-
- -
-
- MET
-
-
- -
-
- MST
-
-
- -
-
- MST7MDT
-
-
- -
-
- Navajo
-
-
- -
-
- NZ
-
-
- -
-
- NZ-CHAT
-
-
- -
-
- Poland
-
-
- -
-
- Portugal
-
-
- -
-
- PRC
-
-
- -
-
- PST8PDT
-
-
- -
-
- ROC
-
-
- -
-
- ROK
-
-
- -
-
- Singapore
-
-
- -
-
- Turkey
-
-
- -
-
- UCT
-
-
- -
-
- Universal
-
-
- -
-
- UTC
-
-
- -
-
- W-SU
-
-
- -
-
- WET
-
-
- -
-
- Zulu
-
-
-
-
- -
-
-
- RNG Seed
-
-
-
- -
-
-
-
-
- Mono
-
-
- -
-
- Stereo
-
-
- -
-
- Surround
-
-
-
-
- -
-
-
- Language
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- Qt::RightToLeft
-
-
- Regenerate
-
-
-
- -
-
-
- Custom RTC
-
-
-
- -
-
-
-
- 1970
- 1
- 1
-
-
-
- d MMM yyyy h:mm:ss AP
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- Lucida Console
-
-
-
- HHHHHHHH
-
-
- 8
-
-
+
+
-
+
+
-
+
+
+ Region:
+
+
+
+ -
+
+
-
+
+ Auto
+
+
+ -
+
+ Default
+
+
+ -
+
+ CET
+
+
+ -
+
+ CST6CDT
+
+
+ -
+
+ Cuba
+
+
+ -
+
+ EET
+
+
+ -
+
+ Egypt
+
+
+ -
+
+ Eire
+
+
+ -
+
+ EST
+
+
+ -
+
+ EST5EDT
+
+
+ -
+
+ GB
+
+
+ -
+
+ GB-Eire
+
+
+ -
+
+ GMT
+
+
+ -
+
+ GMT+0
+
+
+ -
+
+ GMT-0
+
+
+ -
+
+ GMT0
+
+
+ -
+
+ Greenwich
+
+
+ -
+
+ Hongkong
+
+
+ -
+
+ HST
+
+
+ -
+
+ Iceland
+
+
+ -
+
+ Iran
+
+
+ -
+
+ Israel
+
+
+ -
+
+ Jamaica
+
+
+ -
+
+ Japan
+
+
+ -
+
+ Kwajalein
+
+
+ -
+
+ Libya
+
+
+ -
+
+ MET
+
+
+ -
+
+ MST
+
+
+ -
+
+ MST7MDT
+
+
+ -
+
+ Navajo
+
+
+ -
+
+ NZ
+
+
+ -
+
+ NZ-CHAT
+
+
+ -
+
+ Poland
+
+
+ -
+
+ Portugal
+
+
+ -
+
+ PRC
+
+
+ -
+
+ PST8PDT
+
+
+ -
+
+ ROC
+
+
+ -
+
+ ROK
+
+
+ -
+
+ Singapore
+
+
+ -
+
+ Turkey
+
+
+ -
+
+ UCT
+
+
+ -
+
+ Universal
+
+
+ -
+
+ UTC
+
+
+ -
+
+ W-SU
+
+
+ -
+
+ WET
+
+
+ -
+
+ Zulu
+
+
+
+
+ -
+
+
-
+
+ Japan
+
+
+ -
+
+ USA
+
+
+ -
+
+ Europe
+
+
+ -
+
+ Australia
+
+
+ -
+
+ China
+
+
+ -
+
+ Korea
+
+
+ -
+
+ Taiwan
+
+
+
+
+ -
+
+
+ Time Zone:
+
+
+
+ -
+
+
+ Note: this can be overridden when region setting is auto-select
+
+
-
+
+ Japanese (日本語)
+
+
+ -
+
+ English
+
+
+ -
+
+ French (français)
+
+
+ -
+
+ German (Deutsch)
+
+
+ -
+
+ Italian (italiano)
+
+
+ -
+
+ Spanish (español)
+
+
+ -
+
+ Chinese
+
+
+ -
+
+ Korean (한국어)
+
+
+ -
+
+ Dutch (Nederlands)
+
+
+ -
+
+ Portuguese (português)
+
+
+ -
+
+ Russian (Русский)
+
+
+ -
+
+ Taiwanese
+
+
+ -
+
+ British English
+
+
+ -
+
+ Canadian French
+
+
+ -
+
+ Latin American Spanish
+
+
+ -
+
+ Simplified Chinese
+
+
+ -
+
+ Traditional Chinese (正體中文)
+
+
+
+
+ -
+
+
+ Custom RTC
+
+
+
+ -
+
+
+ Language
+
+
+
+ -
+
+
+ RNG Seed
+
+
+
+ -
+
+
-
+
+ Mono
+
+
+ -
+
+ Stereo
+
+
+ -
+
+ Surround
+
+
+
+
+ -
+
+
+ Console ID:
+
+
+
+ -
+
+
+ Sound output mode
+
+
+
+ -
+
+
+
+ 1970
+ 1
+ 1
+
+
+
+ d MMM yyyy h:mm:ss AP
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ Lucida Console
+
+
+
+ HHHHHHHH
+
+
+ 8
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Qt::RightToLeft
+
+
+ Regenerate
+
+
+
+