diff options
| author | 2020-07-24 19:19:27 -0700 | |
|---|---|---|
| committer | 2020-07-24 19:19:27 -0700 | |
| commit | 2ed8f3f549f5832edcc4de7af96d3755e683a060 (patch) | |
| tree | 3918ceb9e822e2765528cadc5ef1493c437088b7 | |
| parent | Merge pull request #4388 from lioncash/written (diff) | |
| parent | configure_graphics_advnaced: clang-format mk ii (diff) | |
| download | yuzu-2ed8f3f549f5832edcc4de7af96d3755e683a060.tar.gz yuzu-2ed8f3f549f5832edcc4de7af96d3755e683a060.tar.xz yuzu-2ed8f3f549f5832edcc4de7af96d3755e683a060.zip | |
Merge pull request #4334 from lat9nq/clear-per-game-settings
configure_per_game: Clearer per-game settings
Diffstat (limited to '')
| -rw-r--r-- | src/yuzu/configuration/configuration_shared.cpp | 74 | ||||
| -rw-r--r-- | src/yuzu/configuration/configuration_shared.h | 20 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_audio.cpp | 23 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_audio.h | 6 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_audio.ui | 151 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_general.cpp | 37 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_general.h | 7 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.cpp | 54 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.h | 7 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.ui | 282 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.cpp | 66 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.h | 10 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.ui | 154 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_system.cpp | 115 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_system.h | 7 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_system.ui | 972 |
16 files changed, 1116 insertions, 869 deletions
diff --git a/src/yuzu/configuration/configuration_shared.cpp b/src/yuzu/configuration/configuration_shared.cpp index bb47c3933..f9becab6e 100644 --- a/src/yuzu/configuration/configuration_shared.cpp +++ b/src/yuzu/configuration/configuration_shared.cpp | |||
| @@ -4,17 +4,20 @@ | |||
| 4 | 4 | ||
| 5 | #include <QCheckBox> | 5 | #include <QCheckBox> |
| 6 | #include <QComboBox> | 6 | #include <QComboBox> |
| 7 | #include <QObject> | ||
| 8 | #include <QString> | ||
| 7 | #include "core/settings.h" | 9 | #include "core/settings.h" |
| 8 | #include "yuzu/configuration/configuration_shared.h" | 10 | #include "yuzu/configuration/configuration_shared.h" |
| 9 | #include "yuzu/configuration/configure_per_game.h" | 11 | #include "yuzu/configuration/configure_per_game.h" |
| 10 | 12 | ||
| 11 | void ConfigurationShared::ApplyPerGameSetting(Settings::Setting<bool>* setting, | 13 | void ConfigurationShared::ApplyPerGameSetting(Settings::Setting<bool>* setting, |
| 12 | const QCheckBox* checkbox) { | 14 | const QCheckBox* checkbox, |
| 13 | if (checkbox->checkState() == Qt::PartiallyChecked) { | 15 | const CheckState& tracker) { |
| 16 | if (tracker == CheckState::Global) { | ||
| 14 | setting->SetGlobal(true); | 17 | setting->SetGlobal(true); |
| 15 | } else { | 18 | } else { |
| 16 | setting->SetGlobal(false); | 19 | setting->SetGlobal(false); |
| 17 | setting->SetValue(checkbox->checkState() == Qt::Checked); | 20 | setting->SetValue(checkbox->checkState()); |
| 18 | } | 21 | } |
| 19 | } | 22 | } |
| 20 | 23 | ||
| @@ -69,8 +72,69 @@ void ConfigurationShared::SetPerGameSetting( | |||
| 69 | ConfigurationShared::USE_GLOBAL_OFFSET); | 72 | ConfigurationShared::USE_GLOBAL_OFFSET); |
| 70 | } | 73 | } |
| 71 | 74 | ||
| 72 | void ConfigurationShared::InsertGlobalItem(QComboBox* combobox) { | 75 | void ConfigurationShared::SetHighlight(QWidget* widget, const std::string& name, bool highlighted) { |
| 73 | const QString use_global_text = ConfigurePerGame::tr("Use global configuration"); | 76 | if (highlighted) { |
| 77 | widget->setStyleSheet(QStringLiteral("QWidget#%1 { background-color:rgba(0,203,255,0.5) }") | ||
| 78 | .arg(QString::fromStdString(name))); | ||
| 79 | } else { | ||
| 80 | widget->setStyleSheet(QStringLiteral("QWidget#%1 { background-color:rgba(0,0,0,0) }") | ||
| 81 | .arg(QString::fromStdString(name))); | ||
| 82 | } | ||
| 83 | widget->show(); | ||
| 84 | } | ||
| 85 | |||
| 86 | void ConfigurationShared::SetColoredTristate(QCheckBox* checkbox, const std::string& name, | ||
| 87 | const Settings::Setting<bool>& setting, | ||
| 88 | CheckState& tracker) { | ||
| 89 | if (setting.UsingGlobal()) { | ||
| 90 | tracker = CheckState::Global; | ||
| 91 | } else { | ||
| 92 | tracker = (setting.GetValue() == setting.GetValue(true)) ? CheckState::On : CheckState::Off; | ||
| 93 | } | ||
| 94 | SetHighlight(checkbox, name, tracker != CheckState::Global); | ||
| 95 | QObject::connect(checkbox, &QCheckBox::clicked, checkbox, | ||
| 96 | [checkbox, name, setting, &tracker]() { | ||
| 97 | tracker = static_cast<CheckState>((static_cast<int>(tracker) + 1) % | ||
| 98 | static_cast<int>(CheckState::Count)); | ||
| 99 | if (tracker == CheckState::Global) { | ||
| 100 | checkbox->setChecked(setting.GetValue(true)); | ||
| 101 | } | ||
| 102 | SetHighlight(checkbox, name, tracker != CheckState::Global); | ||
| 103 | }); | ||
| 104 | } | ||
| 105 | |||
| 106 | void ConfigurationShared::SetColoredTristate(QCheckBox* checkbox, const std::string& name, | ||
| 107 | bool global, bool state, bool global_state, | ||
| 108 | CheckState& tracker) { | ||
| 109 | if (global) { | ||
| 110 | tracker = CheckState::Global; | ||
| 111 | } else { | ||
| 112 | tracker = (state == global_state) ? CheckState::On : CheckState::Off; | ||
| 113 | } | ||
| 114 | SetHighlight(checkbox, name, tracker != CheckState::Global); | ||
| 115 | QObject::connect(checkbox, &QCheckBox::clicked, checkbox, | ||
| 116 | [checkbox, name, global_state, &tracker]() { | ||
| 117 | tracker = static_cast<CheckState>((static_cast<int>(tracker) + 1) % | ||
| 118 | static_cast<int>(CheckState::Count)); | ||
| 119 | if (tracker == CheckState::Global) { | ||
| 120 | checkbox->setChecked(global_state); | ||
| 121 | } | ||
| 122 | SetHighlight(checkbox, name, tracker != CheckState::Global); | ||
| 123 | }); | ||
| 124 | } | ||
| 125 | |||
| 126 | void ConfigurationShared::SetColoredComboBox(QComboBox* combobox, QWidget* target, | ||
| 127 | const std::string& target_name, int global) { | ||
| 128 | InsertGlobalItem(combobox, global); | ||
| 129 | QObject::connect(combobox, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), target, | ||
| 130 | [target, target_name](int index) { | ||
| 131 | ConfigurationShared::SetHighlight(target, target_name, index != 0); | ||
| 132 | }); | ||
| 133 | } | ||
| 134 | |||
| 135 | void ConfigurationShared::InsertGlobalItem(QComboBox* combobox, int global_index) { | ||
| 136 | const QString use_global_text = | ||
| 137 | ConfigurePerGame::tr("Use global configuration (%1)").arg(combobox->itemText(global_index)); | ||
| 74 | combobox->insertItem(ConfigurationShared::USE_GLOBAL_INDEX, use_global_text); | 138 | combobox->insertItem(ConfigurationShared::USE_GLOBAL_INDEX, use_global_text); |
| 75 | combobox->insertSeparator(ConfigurationShared::USE_GLOBAL_SEPARATOR_INDEX); | 139 | combobox->insertSeparator(ConfigurationShared::USE_GLOBAL_SEPARATOR_INDEX); |
| 76 | } | 140 | } |
diff --git a/src/yuzu/configuration/configuration_shared.h b/src/yuzu/configuration/configuration_shared.h index b11b1b950..003148c68 100644 --- a/src/yuzu/configuration/configuration_shared.h +++ b/src/yuzu/configuration/configuration_shared.h | |||
| @@ -15,9 +15,17 @@ constexpr int USE_GLOBAL_INDEX = 0; | |||
| 15 | constexpr int USE_GLOBAL_SEPARATOR_INDEX = 1; | 15 | constexpr int USE_GLOBAL_SEPARATOR_INDEX = 1; |
| 16 | constexpr int USE_GLOBAL_OFFSET = 2; | 16 | constexpr int USE_GLOBAL_OFFSET = 2; |
| 17 | 17 | ||
| 18 | enum class CheckState { | ||
| 19 | Off, | ||
| 20 | On, | ||
| 21 | Global, | ||
| 22 | Count, | ||
| 23 | }; | ||
| 24 | |||
| 18 | // Global-aware apply and set functions | 25 | // Global-aware apply and set functions |
| 19 | 26 | ||
| 20 | void ApplyPerGameSetting(Settings::Setting<bool>* setting, const QCheckBox* checkbox); | 27 | void ApplyPerGameSetting(Settings::Setting<bool>* setting, const QCheckBox* checkbox, |
| 28 | const CheckState& tracker); | ||
| 21 | void ApplyPerGameSetting(Settings::Setting<int>* setting, const QComboBox* combobox); | 29 | void ApplyPerGameSetting(Settings::Setting<int>* setting, const QComboBox* combobox); |
| 22 | void ApplyPerGameSetting(Settings::Setting<Settings::RendererBackend>* setting, | 30 | void ApplyPerGameSetting(Settings::Setting<Settings::RendererBackend>* setting, |
| 23 | const QComboBox* combobox); | 31 | const QComboBox* combobox); |
| @@ -31,6 +39,14 @@ void SetPerGameSetting(QComboBox* combobox, | |||
| 31 | void SetPerGameSetting(QComboBox* combobox, | 39 | void SetPerGameSetting(QComboBox* combobox, |
| 32 | const Settings::Setting<Settings::GPUAccuracy>* setting); | 40 | const Settings::Setting<Settings::GPUAccuracy>* setting); |
| 33 | 41 | ||
| 34 | void InsertGlobalItem(QComboBox* combobox); | 42 | void SetHighlight(QWidget* widget, const std::string& name, bool highlighted); |
| 43 | void SetColoredTristate(QCheckBox* checkbox, const std::string& name, | ||
| 44 | const Settings::Setting<bool>& setting, CheckState& tracker); | ||
| 45 | void SetColoredTristate(QCheckBox* checkbox, const std::string& name, bool global, bool state, | ||
| 46 | bool global_state, CheckState& tracker); | ||
| 47 | void SetColoredComboBox(QComboBox* combobox, QWidget* target, const std::string& target_name, | ||
| 48 | int global); | ||
| 49 | |||
| 50 | void InsertGlobalItem(QComboBox* combobox, int global_index); | ||
| 35 | 51 | ||
| 36 | } // namespace ConfigurationShared | 52 | } // namespace ConfigurationShared |
diff --git a/src/yuzu/configuration/configure_audio.cpp b/src/yuzu/configuration/configure_audio.cpp index cc021beec..fea632531 100644 --- a/src/yuzu/configuration/configure_audio.cpp +++ b/src/yuzu/configuration/configure_audio.cpp | |||
| @@ -49,12 +49,9 @@ void ConfigureAudio::SetConfiguration() { | |||
| 49 | 49 | ||
| 50 | ui->volume_slider->setValue(Settings::values.volume.GetValue() * ui->volume_slider->maximum()); | 50 | ui->volume_slider->setValue(Settings::values.volume.GetValue() * ui->volume_slider->maximum()); |
| 51 | 51 | ||
| 52 | if (Settings::configuring_global) { | 52 | ui->toggle_audio_stretching->setChecked(Settings::values.enable_audio_stretching.GetValue()); |
| 53 | ui->toggle_audio_stretching->setChecked( | 53 | |
| 54 | Settings::values.enable_audio_stretching.GetValue()); | 54 | if (!Settings::configuring_global) { |
| 55 | } else { | ||
| 56 | ConfigurationShared::SetPerGameSetting(ui->toggle_audio_stretching, | ||
| 57 | &Settings::values.enable_audio_stretching); | ||
| 58 | if (Settings::values.volume.UsingGlobal()) { | 55 | if (Settings::values.volume.UsingGlobal()) { |
| 59 | ui->volume_combo_box->setCurrentIndex(0); | 56 | ui->volume_combo_box->setCurrentIndex(0); |
| 60 | ui->volume_slider->setEnabled(false); | 57 | ui->volume_slider->setEnabled(false); |
| @@ -62,6 +59,8 @@ void ConfigureAudio::SetConfiguration() { | |||
| 62 | ui->volume_combo_box->setCurrentIndex(1); | 59 | ui->volume_combo_box->setCurrentIndex(1); |
| 63 | ui->volume_slider->setEnabled(true); | 60 | ui->volume_slider->setEnabled(true); |
| 64 | } | 61 | } |
| 62 | ConfigurationShared::SetHighlight(ui->volume_layout, "volume_layout", | ||
| 63 | !Settings::values.volume.UsingGlobal()); | ||
| 65 | } | 64 | } |
| 66 | SetVolumeIndicatorText(ui->volume_slider->sliderPosition()); | 65 | SetVolumeIndicatorText(ui->volume_slider->sliderPosition()); |
| 67 | } | 66 | } |
| @@ -120,7 +119,8 @@ void ConfigureAudio::ApplyConfiguration() { | |||
| 120 | } | 119 | } |
| 121 | } else { | 120 | } else { |
| 122 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.enable_audio_stretching, | 121 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.enable_audio_stretching, |
| 123 | ui->toggle_audio_stretching); | 122 | ui->toggle_audio_stretching, |
| 123 | enable_audio_stretching); | ||
| 124 | if (ui->volume_combo_box->currentIndex() == 0) { | 124 | if (ui->volume_combo_box->currentIndex() == 0) { |
| 125 | Settings::values.volume.SetGlobal(true); | 125 | Settings::values.volume.SetGlobal(true); |
| 126 | } else { | 126 | } else { |
| @@ -173,9 +173,14 @@ void ConfigureAudio::SetupPerGameUI() { | |||
| 173 | return; | 173 | return; |
| 174 | } | 174 | } |
| 175 | 175 | ||
| 176 | ui->toggle_audio_stretching->setTristate(true); | 176 | ConfigurationShared::SetColoredTristate(ui->toggle_audio_stretching, "toggle_audio_stretching", |
| 177 | Settings::values.enable_audio_stretching, | ||
| 178 | enable_audio_stretching); | ||
| 177 | connect(ui->volume_combo_box, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), | 179 | connect(ui->volume_combo_box, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), |
| 178 | this, [this](int index) { ui->volume_slider->setEnabled(index == 1); }); | 180 | this, [this](int index) { |
| 181 | ui->volume_slider->setEnabled(index == 1); | ||
| 182 | ConfigurationShared::SetHighlight(ui->volume_layout, "volume_layout", index == 1); | ||
| 183 | }); | ||
| 179 | 184 | ||
| 180 | ui->output_sink_combo_box->setVisible(false); | 185 | ui->output_sink_combo_box->setVisible(false); |
| 181 | ui->output_sink_label->setVisible(false); | 186 | ui->output_sink_label->setVisible(false); |
diff --git a/src/yuzu/configuration/configure_audio.h b/src/yuzu/configuration/configure_audio.h index d84f4a682..9dbd3d93e 100644 --- a/src/yuzu/configuration/configure_audio.h +++ b/src/yuzu/configuration/configure_audio.h | |||
| @@ -7,6 +7,10 @@ | |||
| 7 | #include <memory> | 7 | #include <memory> |
| 8 | #include <QWidget> | 8 | #include <QWidget> |
| 9 | 9 | ||
| 10 | namespace ConfigurationShared { | ||
| 11 | enum class CheckState; | ||
| 12 | } | ||
| 13 | |||
| 10 | namespace Ui { | 14 | namespace Ui { |
| 11 | class ConfigureAudio; | 15 | class ConfigureAudio; |
| 12 | } | 16 | } |
| @@ -37,4 +41,6 @@ private: | |||
| 37 | void SetupPerGameUI(); | 41 | void SetupPerGameUI(); |
| 38 | 42 | ||
| 39 | std::unique_ptr<Ui::ConfigureAudio> ui; | 43 | std::unique_ptr<Ui::ConfigureAudio> ui; |
| 44 | |||
| 45 | ConfigurationShared::CheckState enable_audio_stretching; | ||
| 40 | }; | 46 | }; |
diff --git a/src/yuzu/configuration/configure_audio.ui b/src/yuzu/configuration/configure_audio.ui index 862ccb988..9bd0cca96 100644 --- a/src/yuzu/configuration/configure_audio.ui +++ b/src/yuzu/configuration/configure_audio.ui | |||
| @@ -56,80 +56,91 @@ | |||
| 56 | </layout> | 56 | </layout> |
| 57 | </item> | 57 | </item> |
| 58 | <item> | 58 | <item> |
| 59 | <layout class="QHBoxLayout" name="horizontalLayout_2"> | 59 | <widget class="QWidget" name="volume_layout" native="true"> |
| 60 | <property name="topMargin"> | 60 | <layout class="QHBoxLayout" name="horizontalLayout_2"> |
| 61 | <number>0</number> | 61 | <property name="leftMargin"> |
| 62 | </property> | 62 | <number>0</number> |
| 63 | <item> | 63 | </property> |
| 64 | <widget class="QComboBox" name="volume_combo_box"> | 64 | <property name="topMargin"> |
| 65 | <item> | 65 | <number>0</number> |
| 66 | </property> | ||
| 67 | <property name="rightMargin"> | ||
| 68 | <number>0</number> | ||
| 69 | </property> | ||
| 70 | <property name="bottomMargin"> | ||
| 71 | <number>0</number> | ||
| 72 | </property> | ||
| 73 | <item> | ||
| 74 | <widget class="QComboBox" name="volume_combo_box"> | ||
| 75 | <item> | ||
| 76 | <property name="text"> | ||
| 77 | <string>Use global volume</string> | ||
| 78 | </property> | ||
| 79 | </item> | ||
| 80 | <item> | ||
| 81 | <property name="text"> | ||
| 82 | <string>Set volume:</string> | ||
| 83 | </property> | ||
| 84 | </item> | ||
| 85 | </widget> | ||
| 86 | </item> | ||
| 87 | <item> | ||
| 88 | <widget class="QLabel" name="volume_label"> | ||
| 66 | <property name="text"> | 89 | <property name="text"> |
| 67 | <string>Use global volume</string> | 90 | <string>Volume:</string> |
| 91 | </property> | ||
| 92 | </widget> | ||
| 93 | </item> | ||
| 94 | <item> | ||
| 95 | <spacer name="horizontalSpacer"> | ||
| 96 | <property name="orientation"> | ||
| 97 | <enum>Qt::Horizontal</enum> | ||
| 98 | </property> | ||
| 99 | <property name="sizeHint" stdset="0"> | ||
| 100 | <size> | ||
| 101 | <width>30</width> | ||
| 102 | <height>20</height> | ||
| 103 | </size> | ||
| 104 | </property> | ||
| 105 | </spacer> | ||
| 106 | </item> | ||
| 107 | <item> | ||
| 108 | <widget class="QSlider" name="volume_slider"> | ||
| 109 | <property name="sizePolicy"> | ||
| 110 | <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> | ||
| 111 | <horstretch>0</horstretch> | ||
| 112 | <verstretch>0</verstretch> | ||
| 113 | </sizepolicy> | ||
| 114 | </property> | ||
| 115 | <property name="maximum"> | ||
| 116 | <number>100</number> | ||
| 117 | </property> | ||
| 118 | <property name="pageStep"> | ||
| 119 | <number>10</number> | ||
| 120 | </property> | ||
| 121 | <property name="orientation"> | ||
| 122 | <enum>Qt::Horizontal</enum> | ||
| 123 | </property> | ||
| 124 | </widget> | ||
| 125 | </item> | ||
| 126 | <item> | ||
| 127 | <widget class="QLabel" name="volume_indicator"> | ||
| 128 | <property name="minimumSize"> | ||
| 129 | <size> | ||
| 130 | <width>32</width> | ||
| 131 | <height>0</height> | ||
| 132 | </size> | ||
| 68 | </property> | 133 | </property> |
| 69 | </item> | ||
| 70 | <item> | ||
| 71 | <property name="text"> | 134 | <property name="text"> |
| 72 | <string>Set volume:</string> | 135 | <string>0 %</string> |
| 73 | </property> | 136 | </property> |
| 74 | </item> | 137 | <property name="alignment"> |
| 75 | </widget> | 138 | <set>Qt::AlignCenter</set> |
| 76 | </item> | 139 | </property> |
| 77 | <item> | 140 | </widget> |
| 78 | <widget class="QLabel" name="volume_label"> | 141 | </item> |
| 79 | <property name="text"> | 142 | </layout> |
| 80 | <string>Volume:</string> | 143 | </widget> |
| 81 | </property> | ||
| 82 | </widget> | ||
| 83 | </item> | ||
| 84 | <item> | ||
| 85 | <spacer name="horizontalSpacer"> | ||
| 86 | <property name="orientation"> | ||
| 87 | <enum>Qt::Horizontal</enum> | ||
| 88 | </property> | ||
| 89 | <property name="sizeHint" stdset="0"> | ||
| 90 | <size> | ||
| 91 | <width>30</width> | ||
| 92 | <height>20</height> | ||
| 93 | </size> | ||
| 94 | </property> | ||
| 95 | </spacer> | ||
| 96 | </item> | ||
| 97 | <item> | ||
| 98 | <widget class="QSlider" name="volume_slider"> | ||
| 99 | <property name="sizePolicy"> | ||
| 100 | <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> | ||
| 101 | <horstretch>0</horstretch> | ||
| 102 | <verstretch>0</verstretch> | ||
| 103 | </sizepolicy> | ||
| 104 | </property> | ||
| 105 | <property name="maximum"> | ||
| 106 | <number>100</number> | ||
| 107 | </property> | ||
| 108 | <property name="pageStep"> | ||
| 109 | <number>10</number> | ||
| 110 | </property> | ||
| 111 | <property name="orientation"> | ||
| 112 | <enum>Qt::Horizontal</enum> | ||
| 113 | </property> | ||
| 114 | </widget> | ||
| 115 | </item> | ||
| 116 | <item> | ||
| 117 | <widget class="QLabel" name="volume_indicator"> | ||
| 118 | <property name="minimumSize"> | ||
| 119 | <size> | ||
| 120 | <width>32</width> | ||
| 121 | <height>0</height> | ||
| 122 | </size> | ||
| 123 | </property> | ||
| 124 | <property name="text"> | ||
| 125 | <string>0 %</string> | ||
| 126 | </property> | ||
| 127 | <property name="alignment"> | ||
| 128 | <set>Qt::AlignCenter</set> | ||
| 129 | </property> | ||
| 130 | </widget> | ||
| 131 | </item> | ||
| 132 | </layout> | ||
| 133 | </item> | 144 | </item> |
| 134 | </layout> | 145 | </layout> |
| 135 | </widget> | 146 | </widget> |
diff --git a/src/yuzu/configuration/configure_general.cpp b/src/yuzu/configuration/configure_general.cpp index 20316c9cc..c0dbd9855 100644 --- a/src/yuzu/configuration/configure_general.cpp +++ b/src/yuzu/configuration/configure_general.cpp | |||
| @@ -19,9 +19,10 @@ ConfigureGeneral::ConfigureGeneral(QWidget* parent) | |||
| 19 | 19 | ||
| 20 | SetConfiguration(); | 20 | SetConfiguration(); |
| 21 | 21 | ||
| 22 | connect(ui->toggle_frame_limit, &QCheckBox::stateChanged, ui->frame_limit, [this]() { | 22 | if (Settings::configuring_global) { |
| 23 | ui->frame_limit->setEnabled(ui->toggle_frame_limit->checkState() == Qt::Checked); | 23 | connect(ui->toggle_frame_limit, &QCheckBox::clicked, ui->frame_limit, |
| 24 | }); | 24 | [this]() { ui->frame_limit->setEnabled(ui->toggle_frame_limit->isChecked()); }); |
| 25 | } | ||
| 25 | } | 26 | } |
| 26 | 27 | ||
| 27 | ConfigureGeneral::~ConfigureGeneral() = default; | 28 | ConfigureGeneral::~ConfigureGeneral() = default; |
| @@ -40,17 +41,12 @@ void ConfigureGeneral::SetConfiguration() { | |||
| 40 | ui->toggle_frame_limit->setChecked(Settings::values.use_frame_limit.GetValue()); | 41 | ui->toggle_frame_limit->setChecked(Settings::values.use_frame_limit.GetValue()); |
| 41 | ui->frame_limit->setValue(Settings::values.frame_limit.GetValue()); | 42 | ui->frame_limit->setValue(Settings::values.frame_limit.GetValue()); |
| 42 | 43 | ||
| 43 | if (!Settings::configuring_global) { | 44 | if (Settings::configuring_global) { |
| 44 | if (Settings::values.use_multi_core.UsingGlobal()) { | 45 | ui->frame_limit->setEnabled(Settings::values.use_frame_limit.GetValue()); |
| 45 | ui->use_multi_core->setCheckState(Qt::PartiallyChecked); | 46 | } else { |
| 46 | } | 47 | ui->frame_limit->setEnabled(Settings::values.use_frame_limit.GetValue() && |
| 47 | if (Settings::values.use_frame_limit.UsingGlobal()) { | 48 | use_frame_limit != ConfigurationShared::CheckState::Global); |
| 48 | ui->toggle_frame_limit->setCheckState(Qt::PartiallyChecked); | ||
| 49 | } | ||
| 50 | } | 49 | } |
| 51 | |||
| 52 | ui->frame_limit->setEnabled(ui->toggle_frame_limit->checkState() == Qt::Checked && | ||
| 53 | ui->toggle_frame_limit->isEnabled()); | ||
| 54 | } | 50 | } |
| 55 | 51 | ||
| 56 | void ConfigureGeneral::ApplyConfiguration() { | 52 | void ConfigureGeneral::ApplyConfiguration() { |
| @@ -71,9 +67,9 @@ void ConfigureGeneral::ApplyConfiguration() { | |||
| 71 | } | 67 | } |
| 72 | } else { | 68 | } else { |
| 73 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_multi_core, | 69 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_multi_core, |
| 74 | ui->use_multi_core); | 70 | ui->use_multi_core, use_multi_core); |
| 75 | 71 | ||
| 76 | bool global_frame_limit = ui->toggle_frame_limit->checkState() == Qt::PartiallyChecked; | 72 | bool global_frame_limit = use_frame_limit == ConfigurationShared::CheckState::Global; |
| 77 | Settings::values.use_frame_limit.SetGlobal(global_frame_limit); | 73 | Settings::values.use_frame_limit.SetGlobal(global_frame_limit); |
| 78 | Settings::values.frame_limit.SetGlobal(global_frame_limit); | 74 | Settings::values.frame_limit.SetGlobal(global_frame_limit); |
| 79 | if (!global_frame_limit) { | 75 | if (!global_frame_limit) { |
| @@ -109,6 +105,13 @@ void ConfigureGeneral::SetupPerGameUI() { | |||
| 109 | ui->toggle_background_pause->setVisible(false); | 105 | ui->toggle_background_pause->setVisible(false); |
| 110 | ui->toggle_hide_mouse->setVisible(false); | 106 | ui->toggle_hide_mouse->setVisible(false); |
| 111 | 107 | ||
| 112 | ui->toggle_frame_limit->setTristate(true); | 108 | ConfigurationShared::SetColoredTristate(ui->toggle_frame_limit, "toggle_frame_limit", |
| 113 | ui->use_multi_core->setTristate(true); | 109 | Settings::values.use_frame_limit, use_frame_limit); |
| 110 | ConfigurationShared::SetColoredTristate(ui->use_multi_core, "use_multi_core", | ||
| 111 | Settings::values.use_multi_core, use_multi_core); | ||
| 112 | |||
| 113 | connect(ui->toggle_frame_limit, &QCheckBox::clicked, ui->frame_limit, [this]() { | ||
| 114 | ui->frame_limit->setEnabled(ui->toggle_frame_limit->isChecked() && | ||
| 115 | (use_frame_limit != ConfigurationShared::CheckState::Global)); | ||
| 116 | }); | ||
| 114 | } | 117 | } |
diff --git a/src/yuzu/configuration/configure_general.h b/src/yuzu/configuration/configure_general.h index 9c785c22e..323ffbd8f 100644 --- a/src/yuzu/configuration/configure_general.h +++ b/src/yuzu/configuration/configure_general.h | |||
| @@ -7,6 +7,10 @@ | |||
| 7 | #include <memory> | 7 | #include <memory> |
| 8 | #include <QWidget> | 8 | #include <QWidget> |
| 9 | 9 | ||
| 10 | namespace ConfigurationShared { | ||
| 11 | enum class CheckState; | ||
| 12 | } | ||
| 13 | |||
| 10 | class HotkeyRegistry; | 14 | class HotkeyRegistry; |
| 11 | 15 | ||
| 12 | namespace Ui { | 16 | namespace Ui { |
| @@ -31,4 +35,7 @@ private: | |||
| 31 | void SetupPerGameUI(); | 35 | void SetupPerGameUI(); |
| 32 | 36 | ||
| 33 | std::unique_ptr<Ui::ConfigureGeneral> ui; | 37 | std::unique_ptr<Ui::ConfigureGeneral> ui; |
| 38 | |||
| 39 | ConfigurationShared::CheckState use_frame_limit; | ||
| 40 | ConfigurationShared::CheckState use_multi_core; | ||
| 34 | }; | 41 | }; |
diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index cb4706bd6..3e42531c3 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp | |||
| @@ -31,8 +31,14 @@ ConfigureGraphics::ConfigureGraphics(QWidget* parent) | |||
| 31 | 31 | ||
| 32 | SetConfiguration(); | 32 | SetConfiguration(); |
| 33 | 33 | ||
| 34 | connect(ui->api, qOverload<int>(&QComboBox::currentIndexChanged), this, | 34 | connect(ui->api, qOverload<int>(&QComboBox::currentIndexChanged), this, [this] { |
| 35 | [this] { UpdateDeviceComboBox(); }); | 35 | UpdateDeviceComboBox(); |
| 36 | if (!Settings::configuring_global) { | ||
| 37 | ConfigurationShared::SetHighlight(ui->api_layout, "api_layout", | ||
| 38 | ui->api->currentIndex() != | ||
| 39 | ConfigurationShared::USE_GLOBAL_INDEX); | ||
| 40 | } | ||
| 41 | }); | ||
| 36 | connect(ui->device, qOverload<int>(&QComboBox::activated), this, | 42 | connect(ui->device, qOverload<int>(&QComboBox::activated), this, |
| 37 | [this](int device) { UpdateDeviceSelection(device); }); | 43 | [this](int device) { UpdateDeviceSelection(device); }); |
| 38 | 44 | ||
| @@ -65,25 +71,26 @@ void ConfigureGraphics::SetConfiguration() { | |||
| 65 | ui->api->setEnabled(runtime_lock); | 71 | ui->api->setEnabled(runtime_lock); |
| 66 | ui->use_asynchronous_gpu_emulation->setEnabled(runtime_lock); | 72 | ui->use_asynchronous_gpu_emulation->setEnabled(runtime_lock); |
| 67 | ui->use_disk_shader_cache->setEnabled(runtime_lock); | 73 | ui->use_disk_shader_cache->setEnabled(runtime_lock); |
| 74 | ui->use_disk_shader_cache->setChecked(Settings::values.use_disk_shader_cache.GetValue()); | ||
| 75 | ui->use_asynchronous_gpu_emulation->setChecked( | ||
| 76 | Settings::values.use_asynchronous_gpu_emulation.GetValue()); | ||
| 68 | 77 | ||
| 69 | if (Settings::configuring_global) { | 78 | if (Settings::configuring_global) { |
| 70 | ui->api->setCurrentIndex(static_cast<int>(Settings::values.renderer_backend.GetValue())); | 79 | ui->api->setCurrentIndex(static_cast<int>(Settings::values.renderer_backend.GetValue())); |
| 71 | ui->aspect_ratio_combobox->setCurrentIndex(Settings::values.aspect_ratio.GetValue()); | 80 | ui->aspect_ratio_combobox->setCurrentIndex(Settings::values.aspect_ratio.GetValue()); |
| 72 | ui->use_disk_shader_cache->setChecked(Settings::values.use_disk_shader_cache.GetValue()); | ||
| 73 | ui->use_asynchronous_gpu_emulation->setChecked( | ||
| 74 | Settings::values.use_asynchronous_gpu_emulation.GetValue()); | ||
| 75 | } else { | 81 | } else { |
| 76 | ConfigurationShared::SetPerGameSetting(ui->use_disk_shader_cache, | ||
| 77 | &Settings::values.use_disk_shader_cache); | ||
| 78 | ConfigurationShared::SetPerGameSetting(ui->use_asynchronous_gpu_emulation, | ||
| 79 | &Settings::values.use_asynchronous_gpu_emulation); | ||
| 80 | |||
| 81 | ConfigurationShared::SetPerGameSetting(ui->api, &Settings::values.renderer_backend); | 82 | ConfigurationShared::SetPerGameSetting(ui->api, &Settings::values.renderer_backend); |
| 83 | ConfigurationShared::SetHighlight(ui->api_layout, "api_layout", | ||
| 84 | !Settings::values.renderer_backend.UsingGlobal()); | ||
| 82 | ConfigurationShared::SetPerGameSetting(ui->aspect_ratio_combobox, | 85 | ConfigurationShared::SetPerGameSetting(ui->aspect_ratio_combobox, |
| 83 | &Settings::values.aspect_ratio); | 86 | &Settings::values.aspect_ratio); |
| 84 | 87 | ||
| 85 | ui->bg_combobox->setCurrentIndex(Settings::values.bg_red.UsingGlobal() ? 0 : 1); | 88 | ui->bg_combobox->setCurrentIndex(Settings::values.bg_red.UsingGlobal() ? 0 : 1); |
| 86 | ui->bg_button->setEnabled(!Settings::values.bg_red.UsingGlobal()); | 89 | ui->bg_button->setEnabled(!Settings::values.bg_red.UsingGlobal()); |
| 90 | ConfigurationShared::SetHighlight(ui->ar_label, "ar_label", | ||
| 91 | !Settings::values.aspect_ratio.UsingGlobal()); | ||
| 92 | ConfigurationShared::SetHighlight(ui->bg_layout, "bg_layout", | ||
| 93 | !Settings::values.bg_red.UsingGlobal()); | ||
| 87 | } | 94 | } |
| 88 | 95 | ||
| 89 | UpdateBackgroundColorButton(QColor::fromRgbF(Settings::values.bg_red.GetValue(), | 96 | UpdateBackgroundColorButton(QColor::fromRgbF(Settings::values.bg_red.GetValue(), |
| @@ -135,9 +142,10 @@ void ConfigureGraphics::ApplyConfiguration() { | |||
| 135 | ui->aspect_ratio_combobox); | 142 | ui->aspect_ratio_combobox); |
| 136 | 143 | ||
| 137 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_disk_shader_cache, | 144 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_disk_shader_cache, |
| 138 | ui->use_disk_shader_cache); | 145 | ui->use_disk_shader_cache, use_disk_shader_cache); |
| 139 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_gpu_emulation, | 146 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_gpu_emulation, |
| 140 | ui->use_asynchronous_gpu_emulation); | 147 | ui->use_asynchronous_gpu_emulation, |
| 148 | use_asynchronous_gpu_emulation); | ||
| 141 | 149 | ||
| 142 | if (ui->bg_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { | 150 | if (ui->bg_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { |
| 143 | Settings::values.bg_red.SetGlobal(true); | 151 | Settings::values.bg_red.SetGlobal(true); |
| @@ -241,10 +249,20 @@ void ConfigureGraphics::SetupPerGameUI() { | |||
| 241 | } | 249 | } |
| 242 | 250 | ||
| 243 | connect(ui->bg_combobox, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, | 251 | connect(ui->bg_combobox, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, |
| 244 | [this](int index) { ui->bg_button->setEnabled(index == 1); }); | 252 | [this](int index) { |
| 245 | 253 | ui->bg_button->setEnabled(index == 1); | |
| 246 | ui->use_disk_shader_cache->setTristate(true); | 254 | ConfigurationShared::SetHighlight(ui->bg_layout, "bg_layout", index == 1); |
| 247 | ui->use_asynchronous_gpu_emulation->setTristate(true); | 255 | }); |
| 248 | ConfigurationShared::InsertGlobalItem(ui->aspect_ratio_combobox); | 256 | |
| 249 | ConfigurationShared::InsertGlobalItem(ui->api); | 257 | ConfigurationShared::SetColoredTristate(ui->use_disk_shader_cache, "use_disk_shader_cache", |
| 258 | Settings::values.use_disk_shader_cache, | ||
| 259 | use_disk_shader_cache); | ||
| 260 | ConfigurationShared::SetColoredTristate( | ||
| 261 | ui->use_asynchronous_gpu_emulation, "use_asynchronous_gpu_emulation", | ||
| 262 | Settings::values.use_asynchronous_gpu_emulation, use_asynchronous_gpu_emulation); | ||
| 263 | |||
| 264 | ConfigurationShared::SetColoredComboBox(ui->aspect_ratio_combobox, ui->ar_label, "ar_label", | ||
| 265 | Settings::values.aspect_ratio.GetValue(true)); | ||
| 266 | ConfigurationShared::InsertGlobalItem( | ||
| 267 | ui->api, static_cast<int>(Settings::values.renderer_backend.GetValue(true))); | ||
| 250 | } | 268 | } |
diff --git a/src/yuzu/configuration/configure_graphics.h b/src/yuzu/configuration/configure_graphics.h index 24f01c739..b4961f719 100644 --- a/src/yuzu/configuration/configure_graphics.h +++ b/src/yuzu/configuration/configure_graphics.h | |||
| @@ -10,6 +10,10 @@ | |||
| 10 | #include <QWidget> | 10 | #include <QWidget> |
| 11 | #include "core/settings.h" | 11 | #include "core/settings.h" |
| 12 | 12 | ||
| 13 | namespace ConfigurationShared { | ||
| 14 | enum class CheckState; | ||
| 15 | } | ||
| 16 | |||
| 13 | namespace Ui { | 17 | namespace Ui { |
| 14 | class ConfigureGraphics; | 18 | class ConfigureGraphics; |
| 15 | } | 19 | } |
| @@ -42,6 +46,9 @@ private: | |||
| 42 | std::unique_ptr<Ui::ConfigureGraphics> ui; | 46 | std::unique_ptr<Ui::ConfigureGraphics> ui; |
| 43 | QColor bg_color; | 47 | QColor bg_color; |
| 44 | 48 | ||
| 49 | ConfigurationShared::CheckState use_disk_shader_cache; | ||
| 50 | ConfigurationShared::CheckState use_asynchronous_gpu_emulation; | ||
| 51 | |||
| 45 | std::vector<QString> vulkan_devices; | 52 | std::vector<QString> vulkan_devices; |
| 46 | u32 vulkan_device{}; | 53 | u32 vulkan_device{}; |
| 47 | }; | 54 | }; |
diff --git a/src/yuzu/configuration/configure_graphics.ui b/src/yuzu/configuration/configure_graphics.ui index 62418fc14..62aa337e7 100644 --- a/src/yuzu/configuration/configure_graphics.ui +++ b/src/yuzu/configuration/configure_graphics.ui | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | <rect> | 6 | <rect> |
| 7 | <x>0</x> | 7 | <x>0</x> |
| 8 | <y>0</y> | 8 | <y>0</y> |
| 9 | <width>400</width> | 9 | <width>437</width> |
| 10 | <height>321</height> | 10 | <height>321</height> |
| 11 | </rect> | 11 | </rect> |
| 12 | </property> | 12 | </property> |
| @@ -23,43 +23,56 @@ | |||
| 23 | </property> | 23 | </property> |
| 24 | <layout class="QVBoxLayout" name="verticalLayout_3"> | 24 | <layout class="QVBoxLayout" name="verticalLayout_3"> |
| 25 | <item> | 25 | <item> |
| 26 | <layout class="QHBoxLayout" name="horizontalLayout_4"> | 26 | <widget class="QWidget" name="api_layout" native="true"> |
| 27 | <item> | 27 | <layout class="QGridLayout" name="gridLayout"> |
| 28 | <widget class="QLabel" name="label_2"> | 28 | <property name="leftMargin"> |
| 29 | <property name="text"> | 29 | <number>0</number> |
| 30 | <string>API:</string> | 30 | </property> |
| 31 | </property> | 31 | <property name="topMargin"> |
| 32 | </widget> | 32 | <number>0</number> |
| 33 | </item> | 33 | </property> |
| 34 | <item> | 34 | <property name="rightMargin"> |
| 35 | <widget class="QComboBox" name="api"> | 35 | <number>0</number> |
| 36 | <item> | 36 | </property> |
| 37 | <property name="bottomMargin"> | ||
| 38 | <number>0</number> | ||
| 39 | </property> | ||
| 40 | <property name="horizontalSpacing"> | ||
| 41 | <number>6</number> | ||
| 42 | </property> | ||
| 43 | <item row="0" column="0"> | ||
| 44 | <widget class="QLabel" name="api_label"> | ||
| 37 | <property name="text"> | 45 | <property name="text"> |
| 38 | <string notr="true">OpenGL</string> | 46 | <string>API:</string> |
| 39 | </property> | 47 | </property> |
| 40 | </item> | 48 | </widget> |
| 41 | <item> | 49 | </item> |
| 50 | <item row="0" column="1"> | ||
| 51 | <widget class="QComboBox" name="api"> | ||
| 52 | <item> | ||
| 53 | <property name="text"> | ||
| 54 | <string notr="true">OpenGL</string> | ||
| 55 | </property> | ||
| 56 | </item> | ||
| 57 | <item> | ||
| 58 | <property name="text"> | ||
| 59 | <string notr="true">Vulkan</string> | ||
| 60 | </property> | ||
| 61 | </item> | ||
| 62 | </widget> | ||
| 63 | </item> | ||
| 64 | <item row="1" column="0"> | ||
| 65 | <widget class="QLabel" name="device_label"> | ||
| 42 | <property name="text"> | 66 | <property name="text"> |
| 43 | <string notr="true">Vulkan</string> | 67 | <string>Device:</string> |
| 44 | </property> | 68 | </property> |
| 45 | </item> | 69 | </widget> |
| 46 | </widget> | 70 | </item> |
| 47 | </item> | 71 | <item row="1" column="1"> |
| 48 | </layout> | 72 | <widget class="QComboBox" name="device"/> |
| 49 | </item> | 73 | </item> |
| 50 | <item> | 74 | </layout> |
| 51 | <layout class="QHBoxLayout" name="horizontalLayout_5"> | 75 | </widget> |
| 52 | <item> | ||
| 53 | <widget class="QLabel" name="label_3"> | ||
| 54 | <property name="text"> | ||
| 55 | <string>Device:</string> | ||
| 56 | </property> | ||
| 57 | </widget> | ||
| 58 | </item> | ||
| 59 | <item> | ||
| 60 | <widget class="QComboBox" name="device"/> | ||
| 61 | </item> | ||
| 62 | </layout> | ||
| 63 | </item> | 76 | </item> |
| 64 | </layout> | 77 | </layout> |
| 65 | </widget> | 78 | </widget> |
| @@ -85,96 +98,133 @@ | |||
| 85 | </widget> | 98 | </widget> |
| 86 | </item> | 99 | </item> |
| 87 | <item> | 100 | <item> |
| 88 | <layout class="QHBoxLayout" name="horizontalLayout_6"> | 101 | <widget class="QWidget" name="aspect_ratio_layout" native="true"> |
| 89 | <item> | 102 | <layout class="QHBoxLayout" name="horizontalLayout_6"> |
| 90 | <widget class="QLabel" name="ar_label"> | 103 | <property name="leftMargin"> |
| 91 | <property name="text"> | 104 | <number>0</number> |
| 92 | <string>Aspect Ratio:</string> | 105 | </property> |
| 93 | </property> | 106 | <property name="topMargin"> |
| 94 | </widget> | 107 | <number>0</number> |
| 95 | </item> | 108 | </property> |
| 96 | <item> | 109 | <property name="rightMargin"> |
| 97 | <widget class="QComboBox" name="aspect_ratio_combobox"> | 110 | <number>0</number> |
| 98 | <item> | 111 | </property> |
| 99 | <property name="text"> | 112 | <property name="bottomMargin"> |
| 100 | <string>Default (16:9)</string> | 113 | <number>0</number> |
| 101 | </property> | 114 | </property> |
| 102 | </item> | 115 | <item> |
| 103 | <item> | 116 | <widget class="QLabel" name="ar_label"> |
| 104 | <property name="text"> | ||
| 105 | <string>Force 4:3</string> | ||
| 106 | </property> | ||
| 107 | </item> | ||
| 108 | <item> | ||
| 109 | <property name="text"> | ||
| 110 | <string>Force 21:9</string> | ||
| 111 | </property> | ||
| 112 | </item> | ||
| 113 | <item> | ||
| 114 | <property name="text"> | 117 | <property name="text"> |
| 115 | <string>Stretch to Window</string> | 118 | <string>Aspect Ratio:</string> |
| 116 | </property> | 119 | </property> |
| 117 | </item> | 120 | </widget> |
| 118 | </widget> | 121 | </item> |
| 119 | </item> | 122 | <item> |
| 120 | </layout> | 123 | <widget class="QComboBox" name="aspect_ratio_combobox"> |
| 124 | <item> | ||
| 125 | <property name="text"> | ||
| 126 | <string>Default (16:9)</string> | ||
| 127 | </property> | ||
| 128 | </item> | ||
| 129 | <item> | ||
| 130 | <property name="text"> | ||
| 131 | <string>Force 4:3</string> | ||
| 132 | </property> | ||
| 133 | </item> | ||
| 134 | <item> | ||
| 135 | <property name="text"> | ||
| 136 | <string>Force 21:9</string> | ||
| 137 | </property> | ||
| 138 | </item> | ||
| 139 | <item> | ||
| 140 | <property name="text"> | ||
| 141 | <string>Stretch to Window</string> | ||
| 142 | </property> | ||
| 143 | </item> | ||
| 144 | </widget> | ||
| 145 | </item> | ||
| 146 | </layout> | ||
| 147 | </widget> | ||
| 121 | </item> | 148 | </item> |
| 122 | <item> | 149 | <item> |
| 123 | <layout class="QHBoxLayout" name="horizontalLayout_3"> | 150 | <widget class="QWidget" name="bg_layout" native="true"> |
| 124 | <item> | 151 | <property name="sizePolicy"> |
| 125 | <widget class="QComboBox" name="bg_combobox"> | 152 | <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> |
| 126 | <property name="currentText"> | 153 | <horstretch>0</horstretch> |
| 127 | <string>Use global background color</string> | 154 | <verstretch>0</verstretch> |
| 128 | </property> | 155 | </sizepolicy> |
| 129 | <property name="currentIndex"> | 156 | </property> |
| 130 | <number>0</number> | 157 | <layout class="QHBoxLayout" name="horizontalLayout_3"> |
| 131 | </property> | 158 | <property name="spacing"> |
| 132 | <property name="maxVisibleItems"> | 159 | <number>6</number> |
| 133 | <number>10</number> | 160 | </property> |
| 134 | </property> | 161 | <property name="leftMargin"> |
| 135 | <item> | 162 | <number>0</number> |
| 136 | <property name="text"> | 163 | </property> |
| 164 | <property name="topMargin"> | ||
| 165 | <number>0</number> | ||
| 166 | </property> | ||
| 167 | <property name="rightMargin"> | ||
| 168 | <number>0</number> | ||
| 169 | </property> | ||
| 170 | <property name="bottomMargin"> | ||
| 171 | <number>0</number> | ||
| 172 | </property> | ||
| 173 | <item> | ||
| 174 | <widget class="QComboBox" name="bg_combobox"> | ||
| 175 | <property name="currentText"> | ||
| 137 | <string>Use global background color</string> | 176 | <string>Use global background color</string> |
| 138 | </property> | 177 | </property> |
| 139 | </item> | 178 | <property name="currentIndex"> |
| 140 | <item> | 179 | <number>0</number> |
| 180 | </property> | ||
| 181 | <property name="maxVisibleItems"> | ||
| 182 | <number>10</number> | ||
| 183 | </property> | ||
| 184 | <item> | ||
| 185 | <property name="text"> | ||
| 186 | <string>Use global background color</string> | ||
| 187 | </property> | ||
| 188 | </item> | ||
| 189 | <item> | ||
| 190 | <property name="text"> | ||
| 191 | <string>Set background color:</string> | ||
| 192 | </property> | ||
| 193 | </item> | ||
| 194 | </widget> | ||
| 195 | </item> | ||
| 196 | <item> | ||
| 197 | <widget class="QLabel" name="bg_label"> | ||
| 141 | <property name="text"> | 198 | <property name="text"> |
| 142 | <string>Set background color:</string> | 199 | <string>Background Color:</string> |
| 143 | </property> | 200 | </property> |
| 144 | </item> | 201 | </widget> |
| 145 | </widget> | 202 | </item> |
| 146 | </item> | 203 | <item> |
| 147 | <item> | 204 | <spacer name="horizontalSpacer"> |
| 148 | <widget class="QLabel" name="bg_label"> | 205 | <property name="orientation"> |
| 149 | <property name="text"> | 206 | <enum>Qt::Horizontal</enum> |
| 150 | <string>Background Color:</string> | 207 | </property> |
| 151 | </property> | 208 | <property name="sizeHint" stdset="0"> |
| 152 | </widget> | 209 | <size> |
| 153 | </item> | 210 | <width>40</width> |
| 154 | <item> | 211 | <height>20</height> |
| 155 | <spacer name="horizontalSpacer"> | 212 | </size> |
| 156 | <property name="orientation"> | 213 | </property> |
| 157 | <enum>Qt::Horizontal</enum> | 214 | </spacer> |
| 158 | </property> | 215 | </item> |
| 159 | <property name="sizeHint" stdset="0"> | 216 | <item> |
| 160 | <size> | 217 | <widget class="QPushButton" name="bg_button"> |
| 161 | <width>40</width> | 218 | <property name="maximumSize"> |
| 162 | <height>20</height> | 219 | <size> |
| 163 | </size> | 220 | <width>40</width> |
| 164 | </property> | 221 | <height>16777215</height> |
| 165 | </spacer> | 222 | </size> |
| 166 | </item> | 223 | </property> |
| 167 | <item> | 224 | </widget> |
| 168 | <widget class="QPushButton" name="bg_button"> | 225 | </item> |
| 169 | <property name="maximumSize"> | 226 | </layout> |
| 170 | <size> | 227 | </widget> |
| 171 | <width>40</width> | ||
| 172 | <height>16777215</height> | ||
| 173 | </size> | ||
| 174 | </property> | ||
| 175 | </widget> | ||
| 176 | </item> | ||
| 177 | </layout> | ||
| 178 | </item> | 228 | </item> |
| 179 | </layout> | 229 | </layout> |
| 180 | </widget> | 230 | </widget> |
diff --git a/src/yuzu/configuration/configure_graphics_advanced.cpp b/src/yuzu/configuration/configure_graphics_advanced.cpp index ce30188cd..8b9180811 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.cpp +++ b/src/yuzu/configuration/configure_graphics_advanced.cpp | |||
| @@ -28,32 +28,25 @@ void ConfigureGraphicsAdvanced::SetConfiguration() { | |||
| 28 | ui->force_30fps_mode->setEnabled(runtime_lock); | 28 | ui->force_30fps_mode->setEnabled(runtime_lock); |
| 29 | ui->anisotropic_filtering_combobox->setEnabled(runtime_lock); | 29 | ui->anisotropic_filtering_combobox->setEnabled(runtime_lock); |
| 30 | 30 | ||
| 31 | ui->use_vsync->setChecked(Settings::values.use_vsync.GetValue()); | ||
| 32 | ui->use_assembly_shaders->setChecked(Settings::values.use_assembly_shaders.GetValue()); | ||
| 33 | ui->use_asynchronous_shaders->setChecked(Settings::values.use_asynchronous_shaders.GetValue()); | ||
| 34 | ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time.GetValue()); | ||
| 35 | ui->force_30fps_mode->setChecked(Settings::values.force_30fps_mode.GetValue()); | ||
| 36 | |||
| 31 | if (Settings::configuring_global) { | 37 | if (Settings::configuring_global) { |
| 32 | ui->gpu_accuracy->setCurrentIndex( | 38 | ui->gpu_accuracy->setCurrentIndex( |
| 33 | static_cast<int>(Settings::values.gpu_accuracy.GetValue())); | 39 | static_cast<int>(Settings::values.gpu_accuracy.GetValue())); |
| 34 | ui->use_vsync->setChecked(Settings::values.use_vsync.GetValue()); | ||
| 35 | ui->use_assembly_shaders->setChecked(Settings::values.use_assembly_shaders.GetValue()); | ||
| 36 | ui->use_asynchronous_shaders->setChecked( | ||
| 37 | Settings::values.use_asynchronous_shaders.GetValue()); | ||
| 38 | ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time.GetValue()); | ||
| 39 | ui->force_30fps_mode->setChecked(Settings::values.force_30fps_mode.GetValue()); | ||
| 40 | ui->anisotropic_filtering_combobox->setCurrentIndex( | 40 | ui->anisotropic_filtering_combobox->setCurrentIndex( |
| 41 | Settings::values.max_anisotropy.GetValue()); | 41 | Settings::values.max_anisotropy.GetValue()); |
| 42 | } else { | 42 | } else { |
| 43 | ConfigurationShared::SetPerGameSetting(ui->gpu_accuracy, &Settings::values.gpu_accuracy); | 43 | ConfigurationShared::SetPerGameSetting(ui->gpu_accuracy, &Settings::values.gpu_accuracy); |
| 44 | ConfigurationShared::SetPerGameSetting(ui->use_vsync, &Settings::values.use_vsync); | ||
| 45 | ConfigurationShared::SetPerGameSetting(ui->use_assembly_shaders, | ||
| 46 | &Settings::values.use_assembly_shaders); | ||
| 47 | ConfigurationShared::SetPerGameSetting(ui->use_asynchronous_shaders, | ||
| 48 | &Settings::values.use_asynchronous_shaders); | ||
| 49 | ConfigurationShared::SetPerGameSetting(ui->use_asynchronous_shaders, | ||
| 50 | &Settings::values.use_asynchronous_shaders); | ||
| 51 | ConfigurationShared::SetPerGameSetting(ui->use_fast_gpu_time, | ||
| 52 | &Settings::values.use_fast_gpu_time); | ||
| 53 | ConfigurationShared::SetPerGameSetting(ui->force_30fps_mode, | ||
| 54 | &Settings::values.force_30fps_mode); | ||
| 55 | ConfigurationShared::SetPerGameSetting(ui->anisotropic_filtering_combobox, | 44 | ConfigurationShared::SetPerGameSetting(ui->anisotropic_filtering_combobox, |
| 56 | &Settings::values.max_anisotropy); | 45 | &Settings::values.max_anisotropy); |
| 46 | ConfigurationShared::SetHighlight(ui->label_gpu_accuracy, "label_gpu_accuracy", | ||
| 47 | !Settings::values.gpu_accuracy.UsingGlobal()); | ||
| 48 | ConfigurationShared::SetHighlight(ui->af_label, "af_label", | ||
| 49 | !Settings::values.max_anisotropy.UsingGlobal()); | ||
| 57 | } | 50 | } |
| 58 | } | 51 | } |
| 59 | 52 | ||
| @@ -95,17 +88,17 @@ void ConfigureGraphicsAdvanced::ApplyConfiguration() { | |||
| 95 | } else { | 88 | } else { |
| 96 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.max_anisotropy, | 89 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.max_anisotropy, |
| 97 | ui->anisotropic_filtering_combobox); | 90 | ui->anisotropic_filtering_combobox); |
| 98 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_vsync, ui->use_vsync); | 91 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_vsync, ui->use_vsync, |
| 92 | use_vsync); | ||
| 99 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_assembly_shaders, | 93 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_assembly_shaders, |
| 100 | ui->use_assembly_shaders); | 94 | ui->use_assembly_shaders, use_assembly_shaders); |
| 101 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_shaders, | ||
| 102 | ui->use_asynchronous_shaders); | ||
| 103 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_shaders, | 95 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_shaders, |
| 104 | ui->use_asynchronous_shaders); | 96 | ui->use_asynchronous_shaders, |
| 97 | use_asynchronous_shaders); | ||
| 105 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_fast_gpu_time, | 98 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_fast_gpu_time, |
| 106 | ui->use_fast_gpu_time); | 99 | ui->use_fast_gpu_time, use_fast_gpu_time); |
| 107 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.force_30fps_mode, | 100 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.force_30fps_mode, |
| 108 | ui->force_30fps_mode); | 101 | ui->force_30fps_mode, force_30fps_mode); |
| 109 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.max_anisotropy, | 102 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.max_anisotropy, |
| 110 | ui->anisotropic_filtering_combobox); | 103 | ui->anisotropic_filtering_combobox); |
| 111 | 104 | ||
| @@ -146,11 +139,22 @@ void ConfigureGraphicsAdvanced::SetupPerGameUI() { | |||
| 146 | return; | 139 | return; |
| 147 | } | 140 | } |
| 148 | 141 | ||
| 149 | ConfigurationShared::InsertGlobalItem(ui->gpu_accuracy); | 142 | ConfigurationShared::SetColoredTristate(ui->use_vsync, "use_vsync", Settings::values.use_vsync, |
| 150 | ui->use_vsync->setTristate(true); | 143 | use_vsync); |
| 151 | ui->use_assembly_shaders->setTristate(true); | 144 | ConfigurationShared::SetColoredTristate(ui->use_assembly_shaders, "use_assembly_shaders", |
| 152 | ui->use_asynchronous_shaders->setTristate(true); | 145 | Settings::values.use_assembly_shaders, |
| 153 | ui->use_fast_gpu_time->setTristate(true); | 146 | use_assembly_shaders); |
| 154 | ui->force_30fps_mode->setTristate(true); | 147 | ConfigurationShared::SetColoredTristate( |
| 155 | ConfigurationShared::InsertGlobalItem(ui->anisotropic_filtering_combobox); | 148 | ui->use_asynchronous_shaders, "use_asynchronous_shaders", |
| 149 | Settings::values.use_asynchronous_shaders, use_asynchronous_shaders); | ||
| 150 | ConfigurationShared::SetColoredTristate(ui->use_fast_gpu_time, "use_fast_gpu_time", | ||
| 151 | Settings::values.use_fast_gpu_time, use_fast_gpu_time); | ||
| 152 | ConfigurationShared::SetColoredTristate(ui->force_30fps_mode, "force_30fps_mode", | ||
| 153 | Settings::values.force_30fps_mode, force_30fps_mode); | ||
| 154 | ConfigurationShared::SetColoredComboBox( | ||
| 155 | ui->gpu_accuracy, ui->label_gpu_accuracy, "label_gpu_accuracy", | ||
| 156 | static_cast<int>(Settings::values.gpu_accuracy.GetValue(true))); | ||
| 157 | ConfigurationShared::SetColoredComboBox( | ||
| 158 | ui->anisotropic_filtering_combobox, ui->af_label, "af_label", | ||
| 159 | static_cast<int>(Settings::values.max_anisotropy.GetValue(true))); | ||
| 156 | } | 160 | } |
diff --git a/src/yuzu/configuration/configure_graphics_advanced.h b/src/yuzu/configuration/configure_graphics_advanced.h index c043588ff..3c4f6f7bb 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.h +++ b/src/yuzu/configuration/configure_graphics_advanced.h | |||
| @@ -7,6 +7,10 @@ | |||
| 7 | #include <memory> | 7 | #include <memory> |
| 8 | #include <QWidget> | 8 | #include <QWidget> |
| 9 | 9 | ||
| 10 | namespace ConfigurationShared { | ||
| 11 | enum class CheckState; | ||
| 12 | } | ||
| 13 | |||
| 10 | namespace Ui { | 14 | namespace Ui { |
| 11 | class ConfigureGraphicsAdvanced; | 15 | class ConfigureGraphicsAdvanced; |
| 12 | } | 16 | } |
| @@ -29,4 +33,10 @@ private: | |||
| 29 | void SetupPerGameUI(); | 33 | void SetupPerGameUI(); |
| 30 | 34 | ||
| 31 | std::unique_ptr<Ui::ConfigureGraphicsAdvanced> ui; | 35 | std::unique_ptr<Ui::ConfigureGraphicsAdvanced> ui; |
| 36 | |||
| 37 | ConfigurationShared::CheckState use_vsync; | ||
| 38 | ConfigurationShared::CheckState use_assembly_shaders; | ||
| 39 | ConfigurationShared::CheckState use_asynchronous_shaders; | ||
| 40 | ConfigurationShared::CheckState use_fast_gpu_time; | ||
| 41 | ConfigurationShared::CheckState force_30fps_mode; | ||
| 32 | }; | 42 | }; |
diff --git a/src/yuzu/configuration/configure_graphics_advanced.ui b/src/yuzu/configuration/configure_graphics_advanced.ui index 71e7dfe5e..6a0d29c27 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.ui +++ b/src/yuzu/configuration/configure_graphics_advanced.ui | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | <rect> | 6 | <rect> |
| 7 | <x>0</x> | 7 | <x>0</x> |
| 8 | <y>0</y> | 8 | <y>0</y> |
| 9 | <width>400</width> | 9 | <width>404</width> |
| 10 | <height>321</height> | 10 | <height>321</height> |
| 11 | </rect> | 11 | </rect> |
| 12 | </property> | 12 | </property> |
| @@ -23,34 +23,48 @@ | |||
| 23 | </property> | 23 | </property> |
| 24 | <layout class="QVBoxLayout" name="verticalLayout_3"> | 24 | <layout class="QVBoxLayout" name="verticalLayout_3"> |
| 25 | <item> | 25 | <item> |
| 26 | <layout class="QHBoxLayout" name="horizontalLayout_2"> | 26 | <widget class="QWidget" name="gpu_accuracy_layout" native="true"> |
| 27 | <item> | 27 | <layout class="QHBoxLayout" name="horizontalLayout_2"> |
| 28 | <widget class="QLabel" name="label_gpu_accuracy"> | 28 | <property name="leftMargin"> |
| 29 | <property name="text"> | 29 | <number>0</number> |
| 30 | <string>Accuracy Level:</string> | 30 | </property> |
| 31 | </property> | 31 | <property name="topMargin"> |
| 32 | </widget> | 32 | <number>0</number> |
| 33 | </item> | 33 | </property> |
| 34 | <item> | 34 | <property name="rightMargin"> |
| 35 | <widget class="QComboBox" name="gpu_accuracy"> | 35 | <number>0</number> |
| 36 | <item> | 36 | </property> |
| 37 | <property name="bottomMargin"> | ||
| 38 | <number>0</number> | ||
| 39 | </property> | ||
| 40 | <item> | ||
| 41 | <widget class="QLabel" name="label_gpu_accuracy"> | ||
| 37 | <property name="text"> | 42 | <property name="text"> |
| 38 | <string notr="true">Normal</string> | 43 | <string>Accuracy Level:</string> |
| 39 | </property> | 44 | </property> |
| 40 | </item> | 45 | </widget> |
| 41 | <item> | 46 | </item> |
| 42 | <property name="text"> | 47 | <item> |
| 43 | <string notr="true">High</string> | 48 | <widget class="QComboBox" name="gpu_accuracy"> |
| 44 | </property> | 49 | <item> |
| 45 | </item> | 50 | <property name="text"> |
| 46 | <item> | 51 | <string notr="true">Normal</string> |
| 47 | <property name="text"> | 52 | </property> |
| 48 | <string notr="true">Extreme(very slow)</string> | 53 | </item> |
| 49 | </property> | 54 | <item> |
| 50 | </item> | 55 | <property name="text"> |
| 51 | </widget> | 56 | <string notr="true">High</string> |
| 52 | </item> | 57 | </property> |
| 53 | </layout> | 58 | </item> |
| 59 | <item> | ||
| 60 | <property name="text"> | ||
| 61 | <string notr="true">Extreme(very slow)</string> | ||
| 62 | </property> | ||
| 63 | </item> | ||
| 64 | </widget> | ||
| 65 | </item> | ||
| 66 | </layout> | ||
| 67 | </widget> | ||
| 54 | </item> | 68 | </item> |
| 55 | <item> | 69 | <item> |
| 56 | <widget class="QCheckBox" name="use_vsync"> | 70 | <widget class="QCheckBox" name="use_vsync"> |
| @@ -97,44 +111,58 @@ | |||
| 97 | </widget> | 111 | </widget> |
| 98 | </item> | 112 | </item> |
| 99 | <item> | 113 | <item> |
| 100 | <layout class="QHBoxLayout" name="horizontalLayout_1"> | 114 | <widget class="QWidget" name="af_layout" native="true"> |
| 101 | <item> | 115 | <layout class="QHBoxLayout" name="horizontalLayout_1"> |
| 102 | <widget class="QLabel" name="af_label"> | 116 | <property name="leftMargin"> |
| 103 | <property name="text"> | 117 | <number>0</number> |
| 104 | <string>Anisotropic Filtering:</string> | 118 | </property> |
| 105 | </property> | 119 | <property name="topMargin"> |
| 106 | </widget> | 120 | <number>0</number> |
| 107 | </item> | 121 | </property> |
| 108 | <item> | 122 | <property name="rightMargin"> |
| 109 | <widget class="QComboBox" name="anisotropic_filtering_combobox"> | 123 | <number>0</number> |
| 110 | <item> | 124 | </property> |
| 111 | <property name="text"> | 125 | <property name="bottomMargin"> |
| 112 | <string>Default</string> | 126 | <number>0</number> |
| 113 | </property> | 127 | </property> |
| 114 | </item> | 128 | <item> |
| 115 | <item> | 129 | <widget class="QLabel" name="af_label"> |
| 116 | <property name="text"> | 130 | <property name="text"> |
| 117 | <string>2x</string> | 131 | <string>Anisotropic Filtering:</string> |
| 118 | </property> | 132 | </property> |
| 119 | </item> | 133 | </widget> |
| 120 | <item> | 134 | </item> |
| 121 | <property name="text"> | 135 | <item> |
| 122 | <string>4x</string> | 136 | <widget class="QComboBox" name="anisotropic_filtering_combobox"> |
| 123 | </property> | 137 | <item> |
| 124 | </item> | 138 | <property name="text"> |
| 125 | <item> | 139 | <string>Default</string> |
| 126 | <property name="text"> | 140 | </property> |
| 127 | <string>8x</string> | 141 | </item> |
| 128 | </property> | 142 | <item> |
| 129 | </item> | 143 | <property name="text"> |
| 130 | <item> | 144 | <string>2x</string> |
| 131 | <property name="text"> | 145 | </property> |
| 132 | <string>16x</string> | 146 | </item> |
| 133 | </property> | 147 | <item> |
| 134 | </item> | 148 | <property name="text"> |
| 135 | </widget> | 149 | <string>4x</string> |
| 136 | </item> | 150 | </property> |
| 137 | </layout> | 151 | </item> |
| 152 | <item> | ||
| 153 | <property name="text"> | ||
| 154 | <string>8x</string> | ||
| 155 | </property> | ||
| 156 | </item> | ||
| 157 | <item> | ||
| 158 | <property name="text"> | ||
| 159 | <string>16x</string> | ||
| 160 | </property> | ||
| 161 | </item> | ||
| 162 | </widget> | ||
| 163 | </item> | ||
| 164 | </layout> | ||
| 165 | </widget> | ||
| 138 | </item> | 166 | </item> |
| 139 | </layout> | 167 | </layout> |
| 140 | </widget> | 168 | </widget> |
diff --git a/src/yuzu/configuration/configure_system.cpp b/src/yuzu/configuration/configure_system.cpp index 68e02738b..0c4daf147 100644 --- a/src/yuzu/configuration/configure_system.cpp +++ b/src/yuzu/configuration/configure_system.cpp | |||
| @@ -67,21 +67,21 @@ void ConfigureSystem::SetConfiguration() { | |||
| 67 | const auto rtc_time = Settings::values.custom_rtc.GetValue().value_or( | 67 | const auto rtc_time = Settings::values.custom_rtc.GetValue().value_or( |
| 68 | std::chrono::seconds(QDateTime::currentSecsSinceEpoch())); | 68 | std::chrono::seconds(QDateTime::currentSecsSinceEpoch())); |
| 69 | 69 | ||
| 70 | ui->rng_seed_checkbox->setChecked(Settings::values.rng_seed.GetValue().has_value()); | ||
| 71 | ui->rng_seed_edit->setEnabled(Settings::values.rng_seed.GetValue().has_value() && | ||
| 72 | Settings::values.rng_seed.UsingGlobal()); | ||
| 73 | ui->rng_seed_edit->setText(rng_seed); | ||
| 74 | |||
| 75 | ui->custom_rtc_checkbox->setChecked(Settings::values.custom_rtc.GetValue().has_value()); | ||
| 76 | ui->custom_rtc_edit->setEnabled(Settings::values.custom_rtc.GetValue().has_value() && | ||
| 77 | Settings::values.rng_seed.UsingGlobal()); | ||
| 78 | ui->custom_rtc_edit->setDateTime(QDateTime::fromSecsSinceEpoch(rtc_time.count())); | ||
| 79 | |||
| 70 | if (Settings::configuring_global) { | 80 | if (Settings::configuring_global) { |
| 71 | ui->combo_language->setCurrentIndex(Settings::values.language_index.GetValue()); | 81 | ui->combo_language->setCurrentIndex(Settings::values.language_index.GetValue()); |
| 72 | ui->combo_region->setCurrentIndex(Settings::values.region_index.GetValue()); | 82 | ui->combo_region->setCurrentIndex(Settings::values.region_index.GetValue()); |
| 73 | ui->combo_time_zone->setCurrentIndex(Settings::values.time_zone_index.GetValue()); | 83 | ui->combo_time_zone->setCurrentIndex(Settings::values.time_zone_index.GetValue()); |
| 74 | ui->combo_sound->setCurrentIndex(Settings::values.sound_index.GetValue()); | 84 | ui->combo_sound->setCurrentIndex(Settings::values.sound_index.GetValue()); |
| 75 | |||
| 76 | ui->rng_seed_checkbox->setChecked(Settings::values.rng_seed.GetValue().has_value()); | ||
| 77 | ui->rng_seed_edit->setEnabled(Settings::values.rng_seed.GetValue().has_value() && | ||
| 78 | Settings::values.rng_seed.UsingGlobal()); | ||
| 79 | ui->rng_seed_edit->setText(rng_seed); | ||
| 80 | |||
| 81 | ui->custom_rtc_checkbox->setChecked(Settings::values.custom_rtc.GetValue().has_value()); | ||
| 82 | ui->custom_rtc_edit->setEnabled(Settings::values.custom_rtc.GetValue().has_value() && | ||
| 83 | Settings::values.rng_seed.UsingGlobal()); | ||
| 84 | ui->custom_rtc_edit->setDateTime(QDateTime::fromSecsSinceEpoch(rtc_time.count())); | ||
| 85 | } else { | 85 | } else { |
| 86 | ConfigurationShared::SetPerGameSetting(ui->combo_language, | 86 | ConfigurationShared::SetPerGameSetting(ui->combo_language, |
| 87 | &Settings::values.language_index); | 87 | &Settings::values.language_index); |
| @@ -90,27 +90,14 @@ void ConfigureSystem::SetConfiguration() { | |||
| 90 | &Settings::values.time_zone_index); | 90 | &Settings::values.time_zone_index); |
| 91 | ConfigurationShared::SetPerGameSetting(ui->combo_sound, &Settings::values.sound_index); | 91 | ConfigurationShared::SetPerGameSetting(ui->combo_sound, &Settings::values.sound_index); |
| 92 | 92 | ||
| 93 | if (Settings::values.rng_seed.UsingGlobal()) { | 93 | ConfigurationShared::SetHighlight(ui->label_language, "label_language", |
| 94 | ui->rng_seed_checkbox->setCheckState(Qt::PartiallyChecked); | 94 | !Settings::values.language_index.UsingGlobal()); |
| 95 | } else { | 95 | ConfigurationShared::SetHighlight(ui->label_region, "label_region", |
| 96 | ui->rng_seed_checkbox->setCheckState( | 96 | !Settings::values.region_index.UsingGlobal()); |
| 97 | Settings::values.rng_seed.GetValue().has_value() ? Qt::Checked : Qt::Unchecked); | 97 | ConfigurationShared::SetHighlight(ui->label_timezone, "label_timezone", |
| 98 | ui->rng_seed_edit->setEnabled(Settings::values.rng_seed.GetValue().has_value()); | 98 | !Settings::values.time_zone_index.UsingGlobal()); |
| 99 | if (Settings::values.rng_seed.GetValue().has_value()) { | 99 | ConfigurationShared::SetHighlight(ui->label_sound, "label_sound", |
| 100 | ui->rng_seed_edit->setText(rng_seed); | 100 | !Settings::values.sound_index.UsingGlobal()); |
| 101 | } | ||
| 102 | } | ||
| 103 | |||
| 104 | if (Settings::values.custom_rtc.UsingGlobal()) { | ||
| 105 | ui->custom_rtc_checkbox->setCheckState(Qt::PartiallyChecked); | ||
| 106 | } else { | ||
| 107 | ui->custom_rtc_checkbox->setCheckState( | ||
| 108 | Settings::values.custom_rtc.GetValue().has_value() ? Qt::Checked : Qt::Unchecked); | ||
| 109 | ui->custom_rtc_edit->setEnabled(Settings::values.custom_rtc.GetValue().has_value()); | ||
| 110 | if (Settings::values.custom_rtc.GetValue().has_value()) { | ||
| 111 | ui->custom_rtc_edit->setDateTime(QDateTime::fromSecsSinceEpoch(rtc_time.count())); | ||
| 112 | } | ||
| 113 | } | ||
| 114 | } | 101 | } |
| 115 | } | 102 | } |
| 116 | 103 | ||
| @@ -161,37 +148,44 @@ void ConfigureSystem::ApplyConfiguration() { | |||
| 161 | ui->combo_time_zone); | 148 | ui->combo_time_zone); |
| 162 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.sound_index, ui->combo_sound); | 149 | ConfigurationShared::ApplyPerGameSetting(&Settings::values.sound_index, ui->combo_sound); |
| 163 | 150 | ||
| 164 | switch (ui->rng_seed_checkbox->checkState()) { | 151 | switch (use_rng_seed) { |
| 165 | case Qt::Checked: | 152 | case ConfigurationShared::CheckState::On: |
| 166 | Settings::values.rng_seed.SetGlobal(false); | 153 | case ConfigurationShared::CheckState::Off: |
| 167 | Settings::values.rng_seed.SetValue(ui->rng_seed_edit->text().toULongLong(nullptr, 16)); | ||
| 168 | break; | ||
| 169 | case Qt::Unchecked: | ||
| 170 | Settings::values.rng_seed.SetGlobal(false); | 154 | Settings::values.rng_seed.SetGlobal(false); |
| 171 | Settings::values.rng_seed.SetValue(std::nullopt); | 155 | if (ui->rng_seed_checkbox->isChecked()) { |
| 156 | Settings::values.rng_seed.SetValue( | ||
| 157 | ui->rng_seed_edit->text().toULongLong(nullptr, 16)); | ||
| 158 | } else { | ||
| 159 | Settings::values.rng_seed.SetValue(std::nullopt); | ||
| 160 | } | ||
| 172 | break; | 161 | break; |
| 173 | case Qt::PartiallyChecked: | 162 | case ConfigurationShared::CheckState::Global: |
| 174 | Settings::values.rng_seed.SetGlobal(false); | 163 | Settings::values.rng_seed.SetGlobal(false); |
| 175 | Settings::values.rng_seed.SetValue(std::nullopt); | 164 | Settings::values.rng_seed.SetValue(std::nullopt); |
| 176 | Settings::values.rng_seed.SetGlobal(true); | 165 | Settings::values.rng_seed.SetGlobal(true); |
| 177 | break; | 166 | break; |
| 167 | case ConfigurationShared::CheckState::Count: | ||
| 168 | break; | ||
| 178 | } | 169 | } |
| 179 | 170 | ||
| 180 | switch (ui->custom_rtc_checkbox->checkState()) { | 171 | switch (use_custom_rtc) { |
| 181 | case Qt::Checked: | 172 | case ConfigurationShared::CheckState::On: |
| 182 | Settings::values.custom_rtc.SetGlobal(false); | 173 | case ConfigurationShared::CheckState::Off: |
| 183 | Settings::values.custom_rtc.SetValue( | ||
| 184 | std::chrono::seconds(ui->custom_rtc_edit->dateTime().toSecsSinceEpoch())); | ||
| 185 | break; | ||
| 186 | case Qt::Unchecked: | ||
| 187 | Settings::values.custom_rtc.SetGlobal(false); | 174 | Settings::values.custom_rtc.SetGlobal(false); |
| 188 | Settings::values.custom_rtc.SetValue(std::nullopt); | 175 | if (ui->custom_rtc_checkbox->isChecked()) { |
| 176 | Settings::values.custom_rtc.SetValue( | ||
| 177 | std::chrono::seconds(ui->custom_rtc_edit->dateTime().toSecsSinceEpoch())); | ||
| 178 | } else { | ||
| 179 | Settings::values.custom_rtc.SetValue(std::nullopt); | ||
| 180 | } | ||
| 189 | break; | 181 | break; |
| 190 | case Qt::PartiallyChecked: | 182 | case ConfigurationShared::CheckState::Global: |
| 191 | Settings::values.custom_rtc.SetGlobal(false); | 183 | Settings::values.custom_rtc.SetGlobal(false); |
| 192 | Settings::values.custom_rtc.SetValue(std::nullopt); | 184 | Settings::values.custom_rtc.SetValue(std::nullopt); |
| 193 | Settings::values.custom_rtc.SetGlobal(true); | 185 | Settings::values.custom_rtc.SetGlobal(true); |
| 194 | break; | 186 | break; |
| 187 | case ConfigurationShared::CheckState::Count: | ||
| 188 | break; | ||
| 195 | } | 189 | } |
| 196 | } | 190 | } |
| 197 | 191 | ||
| @@ -229,10 +223,23 @@ void ConfigureSystem::SetupPerGameUI() { | |||
| 229 | return; | 223 | return; |
| 230 | } | 224 | } |
| 231 | 225 | ||
| 232 | ConfigurationShared::InsertGlobalItem(ui->combo_language); | 226 | ConfigurationShared::SetColoredComboBox(ui->combo_language, ui->label_language, |
| 233 | ConfigurationShared::InsertGlobalItem(ui->combo_region); | 227 | "label_language", |
| 234 | ConfigurationShared::InsertGlobalItem(ui->combo_time_zone); | 228 | Settings::values.language_index.GetValue(true)); |
| 235 | ConfigurationShared::InsertGlobalItem(ui->combo_sound); | 229 | ConfigurationShared::SetColoredComboBox(ui->combo_region, ui->label_region, "label_region", |
| 236 | ui->rng_seed_checkbox->setTristate(true); | 230 | Settings::values.region_index.GetValue(true)); |
| 237 | ui->custom_rtc_checkbox->setTristate(true); | 231 | ConfigurationShared::SetColoredComboBox(ui->combo_time_zone, ui->label_timezone, |
| 232 | "label_timezone", | ||
| 233 | Settings::values.time_zone_index.GetValue(true)); | ||
| 234 | ConfigurationShared::SetColoredComboBox(ui->combo_sound, ui->label_sound, "label_sound", | ||
| 235 | Settings::values.sound_index.GetValue(true)); | ||
| 236 | |||
| 237 | ConfigurationShared::SetColoredTristate( | ||
| 238 | ui->rng_seed_checkbox, "rng_seed_checkbox", Settings::values.rng_seed.UsingGlobal(), | ||
| 239 | Settings::values.rng_seed.GetValue().has_value(), | ||
| 240 | Settings::values.rng_seed.GetValue(true).has_value(), use_rng_seed); | ||
| 241 | ConfigurationShared::SetColoredTristate( | ||
| 242 | ui->custom_rtc_checkbox, "custom_rtc_checkbox", Settings::values.custom_rtc.UsingGlobal(), | ||
| 243 | Settings::values.custom_rtc.GetValue().has_value(), | ||
| 244 | Settings::values.custom_rtc.GetValue(true).has_value(), use_custom_rtc); | ||
| 238 | } | 245 | } |
diff --git a/src/yuzu/configuration/configure_system.h b/src/yuzu/configuration/configure_system.h index f317ef8b5..fc5cd2945 100644 --- a/src/yuzu/configuration/configure_system.h +++ b/src/yuzu/configuration/configure_system.h | |||
| @@ -9,6 +9,10 @@ | |||
| 9 | #include <QList> | 9 | #include <QList> |
| 10 | #include <QWidget> | 10 | #include <QWidget> |
| 11 | 11 | ||
| 12 | namespace ConfigurationShared { | ||
| 13 | enum class CheckState; | ||
| 14 | } | ||
| 15 | |||
| 12 | namespace Ui { | 16 | namespace Ui { |
| 13 | class ConfigureSystem; | 17 | class ConfigureSystem; |
| 14 | } | 18 | } |
| @@ -41,4 +45,7 @@ private: | |||
| 41 | int region_index = 0; | 45 | int region_index = 0; |
| 42 | int time_zone_index = 0; | 46 | int time_zone_index = 0; |
| 43 | int sound_index = 0; | 47 | int sound_index = 0; |
| 48 | |||
| 49 | ConfigurationShared::CheckState use_rng_seed; | ||
| 50 | ConfigurationShared::CheckState use_custom_rtc; | ||
| 44 | }; | 51 | }; |
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 @@ | |||
| 21 | <property name="title"> | 21 | <property name="title"> |
| 22 | <string>System Settings</string> | 22 | <string>System Settings</string> |
| 23 | </property> | 23 | </property> |
| 24 | <layout class="QGridLayout" name="gridLayout"> | 24 | <layout class="QVBoxLayout" name="verticalLayout_2"> |
| 25 | <item row="3" column="0"> | 25 | <item> |
| 26 | <widget class="QLabel" name="label_sound"> | 26 | <layout class="QGridLayout" name="gridLayout_2"> |
| 27 | <property name="text"> | 27 | <item row="1" column="0"> |
| 28 | <string>Sound output mode</string> | 28 | <widget class="QLabel" name="label_region"> |
| 29 | </property> | 29 | <property name="text"> |
| 30 | </widget> | 30 | <string>Region:</string> |
| 31 | </item> | 31 | </property> |
| 32 | <item row="4" column="0"> | 32 | </widget> |
| 33 | <widget class="QLabel" name="label_console_id"> | 33 | </item> |
| 34 | <property name="text"> | 34 | <item row="2" column="1"> |
| 35 | <string>Console ID:</string> | 35 | <widget class="QComboBox" name="combo_time_zone"> |
| 36 | </property> | 36 | <item> |
| 37 | </widget> | 37 | <property name="text"> |
| 38 | </item> | 38 | <string>Auto</string> |
| 39 | <item row="0" column="1"> | 39 | </property> |
| 40 | <widget class="QComboBox" name="combo_language"> | 40 | </item> |
| 41 | <property name="toolTip"> | 41 | <item> |
| 42 | <string>Note: this can be overridden when region setting is auto-select</string> | 42 | <property name="text"> |
| 43 | </property> | 43 | <string>Default</string> |
| 44 | <item> | 44 | </property> |
| 45 | <property name="text"> | 45 | </item> |
| 46 | <string>Japanese (日本語)</string> | 46 | <item> |
| 47 | </property> | 47 | <property name="text"> |
| 48 | </item> | 48 | <string>CET</string> |
| 49 | <item> | 49 | </property> |
| 50 | <property name="text"> | 50 | </item> |
| 51 | <string>English</string> | 51 | <item> |
| 52 | </property> | 52 | <property name="text"> |
| 53 | </item> | 53 | <string>CST6CDT</string> |
| 54 | <item> | 54 | </property> |
| 55 | <property name="text"> | 55 | </item> |
| 56 | <string>French (français)</string> | 56 | <item> |
| 57 | </property> | 57 | <property name="text"> |
| 58 | </item> | 58 | <string>Cuba</string> |
| 59 | <item> | 59 | </property> |
| 60 | <property name="text"> | 60 | </item> |
| 61 | <string>German (Deutsch)</string> | 61 | <item> |
| 62 | </property> | 62 | <property name="text"> |
| 63 | </item> | 63 | <string>EET</string> |
| 64 | <item> | 64 | </property> |
| 65 | <property name="text"> | 65 | </item> |
| 66 | <string>Italian (italiano)</string> | 66 | <item> |
| 67 | </property> | 67 | <property name="text"> |
| 68 | </item> | 68 | <string>Egypt</string> |
| 69 | <item> | 69 | </property> |
| 70 | <property name="text"> | 70 | </item> |
| 71 | <string>Spanish (español)</string> | 71 | <item> |
| 72 | </property> | 72 | <property name="text"> |
| 73 | </item> | 73 | <string>Eire</string> |
| 74 | <item> | 74 | </property> |
| 75 | <property name="text"> | 75 | </item> |
| 76 | <string>Chinese</string> | 76 | <item> |
| 77 | </property> | 77 | <property name="text"> |
| 78 | </item> | 78 | <string>EST</string> |
| 79 | <item> | 79 | </property> |
| 80 | <property name="text"> | 80 | </item> |
| 81 | <string>Korean (한국어)</string> | 81 | <item> |
| 82 | </property> | 82 | <property name="text"> |
| 83 | </item> | 83 | <string>EST5EDT</string> |
| 84 | <item> | 84 | </property> |
| 85 | <property name="text"> | 85 | </item> |
| 86 | <string>Dutch (Nederlands)</string> | 86 | <item> |
| 87 | </property> | 87 | <property name="text"> |
| 88 | </item> | 88 | <string>GB</string> |
| 89 | <item> | 89 | </property> |
| 90 | <property name="text"> | 90 | </item> |
| 91 | <string>Portuguese (português)</string> | 91 | <item> |
| 92 | </property> | 92 | <property name="text"> |
| 93 | </item> | 93 | <string>GB-Eire</string> |
| 94 | <item> | 94 | </property> |
| 95 | <property name="text"> | 95 | </item> |
| 96 | <string>Russian (Русский)</string> | 96 | <item> |
| 97 | </property> | 97 | <property name="text"> |
| 98 | </item> | 98 | <string>GMT</string> |
| 99 | <item> | 99 | </property> |
| 100 | <property name="text"> | 100 | </item> |
| 101 | <string>Taiwanese</string> | 101 | <item> |
| 102 | </property> | 102 | <property name="text"> |
| 103 | </item> | 103 | <string>GMT+0</string> |
| 104 | <item> | 104 | </property> |
| 105 | <property name="text"> | 105 | </item> |
| 106 | <string>British English</string> | 106 | <item> |
| 107 | </property> | 107 | <property name="text"> |
| 108 | </item> | 108 | <string>GMT-0</string> |
| 109 | <item> | 109 | </property> |
| 110 | <property name="text"> | 110 | </item> |
| 111 | <string>Canadian French</string> | 111 | <item> |
| 112 | </property> | 112 | <property name="text"> |
| 113 | </item> | 113 | <string>GMT0</string> |
| 114 | <item> | 114 | </property> |
| 115 | <property name="text"> | 115 | </item> |
| 116 | <string>Latin American Spanish</string> | 116 | <item> |
| 117 | </property> | 117 | <property name="text"> |
| 118 | </item> | 118 | <string>Greenwich</string> |
| 119 | <item> | 119 | </property> |
| 120 | <property name="text"> | 120 | </item> |
| 121 | <string>Simplified Chinese</string> | 121 | <item> |
| 122 | </property> | 122 | <property name="text"> |
| 123 | </item> | 123 | <string>Hongkong</string> |
| 124 | <item> | 124 | </property> |
| 125 | <property name="text"> | 125 | </item> |
| 126 | <string>Traditional Chinese (正體中文)</string> | 126 | <item> |
| 127 | </property> | 127 | <property name="text"> |
| 128 | </item> | 128 | <string>HST</string> |
| 129 | </widget> | 129 | </property> |
| 130 | </item> | 130 | </item> |
| 131 | <item row="1" column="0"> | 131 | <item> |
| 132 | <widget class="QLabel" name="label_region"> | 132 | <property name="text"> |
| 133 | <property name="text"> | 133 | <string>Iceland</string> |
| 134 | <string>Region:</string> | 134 | </property> |
| 135 | </property> | 135 | </item> |
| 136 | </widget> | 136 | <item> |
| 137 | </item> | 137 | <property name="text"> |
| 138 | <item row="1" column="1"> | 138 | <string>Iran</string> |
| 139 | <widget class="QComboBox" name="combo_region"> | 139 | </property> |
| 140 | <item> | 140 | </item> |
| 141 | <property name="text"> | 141 | <item> |
| 142 | <string>Japan</string> | 142 | <property name="text"> |
| 143 | </property> | 143 | <string>Israel</string> |
| 144 | </item> | 144 | </property> |
| 145 | <item> | 145 | </item> |
| 146 | <property name="text"> | 146 | <item> |
| 147 | <string>USA</string> | 147 | <property name="text"> |
| 148 | </property> | 148 | <string>Jamaica</string> |
| 149 | </item> | 149 | </property> |
| 150 | <item> | 150 | </item> |
| 151 | <property name="text"> | 151 | <item> |
| 152 | <string>Europe</string> | 152 | <property name="text"> |
| 153 | </property> | 153 | <string>Japan</string> |
| 154 | </item> | 154 | </property> |
| 155 | <item> | 155 | </item> |
| 156 | <property name="text"> | 156 | <item> |
| 157 | <string>Australia</string> | 157 | <property name="text"> |
| 158 | </property> | 158 | <string>Kwajalein</string> |
| 159 | </item> | 159 | </property> |
| 160 | <item> | 160 | </item> |
| 161 | <property name="text"> | 161 | <item> |
| 162 | <string>China</string> | 162 | <property name="text"> |
| 163 | </property> | 163 | <string>Libya</string> |
| 164 | </item> | 164 | </property> |
| 165 | <item> | 165 | </item> |
| 166 | <property name="text"> | 166 | <item> |
| 167 | <string>Korea</string> | 167 | <property name="text"> |
| 168 | </property> | 168 | <string>MET</string> |
| 169 | </item> | 169 | </property> |
| 170 | <item> | 170 | </item> |
| 171 | <property name="text"> | 171 | <item> |
| 172 | <string>Taiwan</string> | 172 | <property name="text"> |
| 173 | </property> | 173 | <string>MST</string> |
| 174 | </item> | 174 | </property> |
| 175 | </widget> | 175 | </item> |
| 176 | </item> | 176 | <item> |
| 177 | <item row="2" column="0"> | 177 | <property name="text"> |
| 178 | <widget class="QLabel" name="label_timezone"> | 178 | <string>MST7MDT</string> |
| 179 | <property name="text"> | 179 | </property> |
| 180 | <string>Time Zone:</string> | 180 | </item> |
| 181 | </property> | 181 | <item> |
| 182 | </widget> | 182 | <property name="text"> |
| 183 | </item> | 183 | <string>Navajo</string> |
| 184 | <item row="2" column="1"> | 184 | </property> |
| 185 | <widget class="QComboBox" name="combo_time_zone"> | 185 | </item> |
| 186 | <item> | 186 | <item> |
| 187 | <property name="text"> | 187 | <property name="text"> |
| 188 | <string>Auto</string> | 188 | <string>NZ</string> |
| 189 | </property> | 189 | </property> |
| 190 | </item> | 190 | </item> |
| 191 | <item> | 191 | <item> |
| 192 | <property name="text"> | 192 | <property name="text"> |
| 193 | <string>Default</string> | 193 | <string>NZ-CHAT</string> |
| 194 | </property> | 194 | </property> |
| 195 | </item> | 195 | </item> |
| 196 | <item> | 196 | <item> |
| 197 | <property name="text"> | 197 | <property name="text"> |
| 198 | <string>CET</string> | 198 | <string>Poland</string> |
| 199 | </property> | 199 | </property> |
| 200 | </item> | 200 | </item> |
| 201 | <item> | 201 | <item> |
| 202 | <property name="text"> | 202 | <property name="text"> |
| 203 | <string>CST6CDT</string> | 203 | <string>Portugal</string> |
| 204 | </property> | 204 | </property> |
| 205 | </item> | 205 | </item> |
| 206 | <item> | 206 | <item> |
| 207 | <property name="text"> | 207 | <property name="text"> |
| 208 | <string>Cuba</string> | 208 | <string>PRC</string> |
| 209 | </property> | 209 | </property> |
| 210 | </item> | 210 | </item> |
| 211 | <item> | 211 | <item> |
| 212 | <property name="text"> | 212 | <property name="text"> |
| 213 | <string>EET</string> | 213 | <string>PST8PDT</string> |
| 214 | </property> | 214 | </property> |
| 215 | </item> | 215 | </item> |
| 216 | <item> | 216 | <item> |
| 217 | <property name="text"> | 217 | <property name="text"> |
| 218 | <string>Egypt</string> | 218 | <string>ROC</string> |
| 219 | </property> | 219 | </property> |
| 220 | </item> | 220 | </item> |
| 221 | <item> | 221 | <item> |
| 222 | <property name="text"> | 222 | <property name="text"> |
| 223 | <string>Eire</string> | 223 | <string>ROK</string> |
| 224 | </property> | 224 | </property> |
| 225 | </item> | 225 | </item> |
| 226 | <item> | 226 | <item> |
| 227 | <property name="text"> | 227 | <property name="text"> |
| 228 | <string>EST</string> | 228 | <string>Singapore</string> |
| 229 | </property> | 229 | </property> |
| 230 | </item> | 230 | </item> |
| 231 | <item> | 231 | <item> |
| 232 | <property name="text"> | 232 | <property name="text"> |
| 233 | <string>EST5EDT</string> | 233 | <string>Turkey</string> |
| 234 | </property> | 234 | </property> |
| 235 | </item> | 235 | </item> |
| 236 | <item> | 236 | <item> |
| 237 | <property name="text"> | 237 | <property name="text"> |
| 238 | <string>GB</string> | 238 | <string>UCT</string> |
| 239 | </property> | 239 | </property> |
| 240 | </item> | 240 | </item> |
| 241 | <item> | 241 | <item> |
| 242 | <property name="text"> | 242 | <property name="text"> |
| 243 | <string>GB-Eire</string> | 243 | <string>Universal</string> |
| 244 | </property> | 244 | </property> |
| 245 | </item> | 245 | </item> |
| 246 | <item> | 246 | <item> |
| 247 | <property name="text"> | 247 | <property name="text"> |
| 248 | <string>GMT</string> | 248 | <string>UTC</string> |
| 249 | </property> | 249 | </property> |
| 250 | </item> | 250 | </item> |
| 251 | <item> | 251 | <item> |
| 252 | <property name="text"> | 252 | <property name="text"> |
| 253 | <string>GMT+0</string> | 253 | <string>W-SU</string> |
| 254 | </property> | 254 | </property> |
| 255 | </item> | 255 | </item> |
| 256 | <item> | 256 | <item> |
| 257 | <property name="text"> | 257 | <property name="text"> |
| 258 | <string>GMT-0</string> | 258 | <string>WET</string> |
| 259 | </property> | 259 | </property> |
| 260 | </item> | 260 | </item> |
| 261 | <item> | 261 | <item> |
| 262 | <property name="text"> | 262 | <property name="text"> |
| 263 | <string>GMT0</string> | 263 | <string>Zulu</string> |
| 264 | </property> | 264 | </property> |
| 265 | </item> | 265 | </item> |
| 266 | <item> | 266 | </widget> |
| 267 | <property name="text"> | 267 | </item> |
| 268 | <string>Greenwich</string> | 268 | <item row="1" column="1"> |
| 269 | </property> | 269 | <widget class="QComboBox" name="combo_region"> |
| 270 | </item> | 270 | <item> |
| 271 | <item> | 271 | <property name="text"> |
| 272 | <property name="text"> | 272 | <string>Japan</string> |
| 273 | <string>Hongkong</string> | 273 | </property> |
| 274 | </property> | 274 | </item> |
| 275 | </item> | 275 | <item> |
| 276 | <item> | 276 | <property name="text"> |
| 277 | <property name="text"> | 277 | <string>USA</string> |
| 278 | <string>HST</string> | 278 | </property> |
| 279 | </property> | 279 | </item> |
| 280 | </item> | 280 | <item> |
| 281 | <item> | 281 | <property name="text"> |
| 282 | <property name="text"> | 282 | <string>Europe</string> |
| 283 | <string>Iceland</string> | 283 | </property> |
| 284 | </property> | 284 | </item> |
| 285 | </item> | 285 | <item> |
| 286 | <item> | 286 | <property name="text"> |
| 287 | <property name="text"> | 287 | <string>Australia</string> |
| 288 | <string>Iran</string> | 288 | </property> |
| 289 | </property> | 289 | </item> |
| 290 | </item> | 290 | <item> |
| 291 | <item> | 291 | <property name="text"> |
| 292 | <property name="text"> | 292 | <string>China</string> |
| 293 | <string>Israel</string> | 293 | </property> |
| 294 | </property> | 294 | </item> |
| 295 | </item> | 295 | <item> |
| 296 | <item> | 296 | <property name="text"> |
| 297 | <property name="text"> | 297 | <string>Korea</string> |
| 298 | <string>Jamaica</string> | 298 | </property> |
| 299 | </property> | 299 | </item> |
| 300 | </item> | 300 | <item> |
| 301 | <item> | 301 | <property name="text"> |
| 302 | <property name="text"> | 302 | <string>Taiwan</string> |
| 303 | <string>Japan</string> | 303 | </property> |
| 304 | </property> | 304 | </item> |
| 305 | </item> | 305 | </widget> |
| 306 | <item> | 306 | </item> |
| 307 | <property name="text"> | 307 | <item row="2" column="0"> |
| 308 | <string>Kwajalein</string> | 308 | <widget class="QLabel" name="label_timezone"> |
| 309 | </property> | 309 | <property name="text"> |
| 310 | </item> | 310 | <string>Time Zone:</string> |
| 311 | <item> | 311 | </property> |
| 312 | <property name="text"> | 312 | </widget> |
| 313 | <string>Libya</string> | 313 | </item> |
| 314 | </property> | 314 | <item row="0" column="1"> |
| 315 | </item> | 315 | <widget class="QComboBox" name="combo_language"> |
| 316 | <item> | 316 | <property name="toolTip"> |
| 317 | <property name="text"> | 317 | <string>Note: this can be overridden when region setting is auto-select</string> |
| 318 | <string>MET</string> | 318 | </property> |
| 319 | </property> | 319 | <item> |
| 320 | </item> | 320 | <property name="text"> |
| 321 | <item> | 321 | <string>Japanese (日本語)</string> |
| 322 | <property name="text"> | 322 | </property> |
| 323 | <string>MST</string> | 323 | </item> |
| 324 | </property> | 324 | <item> |
| 325 | </item> | 325 | <property name="text"> |
| 326 | <item> | 326 | <string>English</string> |
| 327 | <property name="text"> | 327 | </property> |
| 328 | <string>MST7MDT</string> | 328 | </item> |
| 329 | </property> | 329 | <item> |
| 330 | </item> | 330 | <property name="text"> |
| 331 | <item> | 331 | <string>French (français)</string> |
| 332 | <property name="text"> | 332 | </property> |
| 333 | <string>Navajo</string> | 333 | </item> |
| 334 | </property> | 334 | <item> |
| 335 | </item> | 335 | <property name="text"> |
| 336 | <item> | 336 | <string>German (Deutsch)</string> |
| 337 | <property name="text"> | 337 | </property> |
| 338 | <string>NZ</string> | 338 | </item> |
| 339 | </property> | 339 | <item> |
| 340 | </item> | 340 | <property name="text"> |
| 341 | <item> | 341 | <string>Italian (italiano)</string> |
| 342 | <property name="text"> | 342 | </property> |
| 343 | <string>NZ-CHAT</string> | 343 | </item> |
| 344 | </property> | 344 | <item> |
| 345 | </item> | 345 | <property name="text"> |
| 346 | <item> | 346 | <string>Spanish (español)</string> |
| 347 | <property name="text"> | 347 | </property> |
| 348 | <string>Poland</string> | 348 | </item> |
| 349 | </property> | 349 | <item> |
| 350 | </item> | 350 | <property name="text"> |
| 351 | <item> | 351 | <string>Chinese</string> |
| 352 | <property name="text"> | 352 | </property> |
| 353 | <string>Portugal</string> | 353 | </item> |
| 354 | </property> | 354 | <item> |
| 355 | </item> | 355 | <property name="text"> |
| 356 | <item> | 356 | <string>Korean (한국어)</string> |
| 357 | <property name="text"> | 357 | </property> |
| 358 | <string>PRC</string> | 358 | </item> |
| 359 | </property> | 359 | <item> |
| 360 | </item> | 360 | <property name="text"> |
| 361 | <item> | 361 | <string>Dutch (Nederlands)</string> |
| 362 | <property name="text"> | 362 | </property> |
| 363 | <string>PST8PDT</string> | 363 | </item> |
| 364 | </property> | 364 | <item> |
| 365 | </item> | 365 | <property name="text"> |
| 366 | <item> | 366 | <string>Portuguese (português)</string> |
| 367 | <property name="text"> | 367 | </property> |
| 368 | <string>ROC</string> | 368 | </item> |
| 369 | </property> | 369 | <item> |
| 370 | </item> | 370 | <property name="text"> |
| 371 | <item> | 371 | <string>Russian (Русский)</string> |
| 372 | <property name="text"> | 372 | </property> |
| 373 | <string>ROK</string> | 373 | </item> |
| 374 | </property> | 374 | <item> |
| 375 | </item> | 375 | <property name="text"> |
| 376 | <item> | 376 | <string>Taiwanese</string> |
| 377 | <property name="text"> | 377 | </property> |
| 378 | <string>Singapore</string> | 378 | </item> |
| 379 | </property> | 379 | <item> |
| 380 | </item> | 380 | <property name="text"> |
| 381 | <item> | 381 | <string>British English</string> |
| 382 | <property name="text"> | 382 | </property> |
| 383 | <string>Turkey</string> | 383 | </item> |
| 384 | </property> | 384 | <item> |
| 385 | </item> | 385 | <property name="text"> |
| 386 | <item> | 386 | <string>Canadian French</string> |
| 387 | <property name="text"> | 387 | </property> |
| 388 | <string>UCT</string> | 388 | </item> |
| 389 | </property> | 389 | <item> |
| 390 | </item> | 390 | <property name="text"> |
| 391 | <item> | 391 | <string>Latin American Spanish</string> |
| 392 | <property name="text"> | 392 | </property> |
| 393 | <string>Universal</string> | 393 | </item> |
| 394 | </property> | 394 | <item> |
| 395 | </item> | 395 | <property name="text"> |
| 396 | <item> | 396 | <string>Simplified Chinese</string> |
| 397 | <property name="text"> | 397 | </property> |
| 398 | <string>UTC</string> | 398 | </item> |
| 399 | </property> | 399 | <item> |
| 400 | </item> | 400 | <property name="text"> |
| 401 | <item> | 401 | <string>Traditional Chinese (正體中文)</string> |
| 402 | <property name="text"> | 402 | </property> |
| 403 | <string>W-SU</string> | 403 | </item> |
| 404 | </property> | 404 | </widget> |
| 405 | </item> | 405 | </item> |
| 406 | <item> | 406 | <item row="5" column="0"> |
| 407 | <property name="text"> | 407 | <widget class="QCheckBox" name="custom_rtc_checkbox"> |
| 408 | <string>WET</string> | 408 | <property name="text"> |
| 409 | </property> | 409 | <string>Custom RTC</string> |
| 410 | </item> | 410 | </property> |
| 411 | <item> | 411 | </widget> |
| 412 | <property name="text"> | 412 | </item> |
| 413 | <string>Zulu</string> | 413 | <item row="0" column="0"> |
| 414 | </property> | 414 | <widget class="QLabel" name="label_language"> |
| 415 | </item> | 415 | <property name="text"> |
| 416 | </widget> | 416 | <string>Language</string> |
| 417 | </item> | 417 | </property> |
| 418 | <item row="6" column="0"> | 418 | </widget> |
| 419 | <widget class="QCheckBox" name="rng_seed_checkbox"> | 419 | </item> |
| 420 | <property name="text"> | 420 | <item row="6" column="0"> |
| 421 | <string>RNG Seed</string> | 421 | <widget class="QCheckBox" name="rng_seed_checkbox"> |
| 422 | </property> | 422 | <property name="text"> |
| 423 | </widget> | 423 | <string>RNG Seed</string> |
| 424 | </item> | 424 | </property> |
| 425 | <item row="3" column="1"> | 425 | </widget> |
| 426 | <widget class="QComboBox" name="combo_sound"> | 426 | </item> |
| 427 | <item> | 427 | <item row="3" column="1"> |
| 428 | <property name="text"> | 428 | <widget class="QComboBox" name="combo_sound"> |
| 429 | <string>Mono</string> | 429 | <item> |
| 430 | </property> | 430 | <property name="text"> |
| 431 | </item> | 431 | <string>Mono</string> |
| 432 | <item> | 432 | </property> |
| 433 | <property name="text"> | 433 | </item> |
| 434 | <string>Stereo</string> | 434 | <item> |
| 435 | </property> | 435 | <property name="text"> |
| 436 | </item> | 436 | <string>Stereo</string> |
| 437 | <item> | 437 | </property> |
| 438 | <property name="text"> | 438 | </item> |
| 439 | <string>Surround</string> | 439 | <item> |
| 440 | </property> | 440 | <property name="text"> |
| 441 | </item> | 441 | <string>Surround</string> |
| 442 | </widget> | 442 | </property> |
| 443 | </item> | 443 | </item> |
| 444 | <item row="0" column="0"> | 444 | </widget> |
| 445 | <widget class="QLabel" name="label_language"> | 445 | </item> |
| 446 | <property name="text"> | 446 | <item row="4" column="0"> |
| 447 | <string>Language</string> | 447 | <widget class="QLabel" name="label_console_id"> |
| 448 | </property> | 448 | <property name="text"> |
| 449 | </widget> | 449 | <string>Console ID:</string> |
| 450 | </item> | 450 | </property> |
| 451 | <item row="4" column="1"> | 451 | </widget> |
| 452 | <widget class="QPushButton" name="button_regenerate_console_id"> | 452 | </item> |
| 453 | <property name="sizePolicy"> | 453 | <item row="3" column="0"> |
| 454 | <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> | 454 | <widget class="QLabel" name="label_sound"> |
| 455 | <horstretch>0</horstretch> | 455 | <property name="text"> |
| 456 | <verstretch>0</verstretch> | 456 | <string>Sound output mode</string> |
| 457 | </sizepolicy> | 457 | </property> |
| 458 | </property> | 458 | </widget> |
| 459 | <property name="layoutDirection"> | 459 | </item> |
| 460 | <enum>Qt::RightToLeft</enum> | 460 | <item row="5" column="1"> |
| 461 | </property> | 461 | <widget class="QDateTimeEdit" name="custom_rtc_edit"> |
| 462 | <property name="text"> | 462 | <property name="minimumDate"> |
| 463 | <string>Regenerate</string> | 463 | <date> |
| 464 | </property> | 464 | <year>1970</year> |
| 465 | </widget> | 465 | <month>1</month> |
| 466 | </item> | 466 | <day>1</day> |
| 467 | <item row="5" column="0"> | 467 | </date> |
| 468 | <widget class="QCheckBox" name="custom_rtc_checkbox"> | 468 | </property> |
| 469 | <property name="text"> | 469 | <property name="displayFormat"> |
| 470 | <string>Custom RTC</string> | 470 | <string>d MMM yyyy h:mm:ss AP</string> |
| 471 | </property> | 471 | </property> |
| 472 | </widget> | 472 | </widget> |
| 473 | </item> | 473 | </item> |
| 474 | <item row="5" column="1"> | 474 | <item row="6" column="1"> |
| 475 | <widget class="QDateTimeEdit" name="custom_rtc_edit"> | 475 | <widget class="QLineEdit" name="rng_seed_edit"> |
| 476 | <property name="minimumDate"> | 476 | <property name="sizePolicy"> |
| 477 | <date> | 477 | <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> |
| 478 | <year>1970</year> | 478 | <horstretch>0</horstretch> |
| 479 | <month>1</month> | 479 | <verstretch>0</verstretch> |
| 480 | <day>1</day> | 480 | </sizepolicy> |
| 481 | </date> | 481 | </property> |
| 482 | </property> | 482 | <property name="font"> |
| 483 | <property name="displayFormat"> | 483 | <font> |
| 484 | <string>d MMM yyyy h:mm:ss AP</string> | 484 | <family>Lucida Console</family> |
| 485 | </property> | 485 | </font> |
| 486 | </widget> | 486 | </property> |
| 487 | </item> | 487 | <property name="inputMask"> |
| 488 | <item row="6" column="1"> | 488 | <string notr="true">HHHHHHHH</string> |
| 489 | <widget class="QLineEdit" name="rng_seed_edit"> | 489 | </property> |
| 490 | <property name="sizePolicy"> | 490 | <property name="maxLength"> |
| 491 | <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> | 491 | <number>8</number> |
| 492 | <horstretch>0</horstretch> | 492 | </property> |
| 493 | <verstretch>0</verstretch> | 493 | </widget> |
| 494 | </sizepolicy> | 494 | </item> |
| 495 | </property> | 495 | <item row="4" column="1"> |
| 496 | <property name="font"> | 496 | <widget class="QPushButton" name="button_regenerate_console_id"> |
| 497 | <font> | 497 | <property name="sizePolicy"> |
| 498 | <family>Lucida Console</family> | 498 | <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> |
| 499 | </font> | 499 | <horstretch>0</horstretch> |
| 500 | </property> | 500 | <verstretch>0</verstretch> |
| 501 | <property name="inputMask"> | 501 | </sizepolicy> |
| 502 | <string notr="true">HHHHHHHH</string> | 502 | </property> |
| 503 | </property> | 503 | <property name="layoutDirection"> |
| 504 | <property name="maxLength"> | 504 | <enum>Qt::RightToLeft</enum> |
| 505 | <number>8</number> | 505 | </property> |
| 506 | </property> | 506 | <property name="text"> |
| 507 | </widget> | 507 | <string>Regenerate</string> |
| 508 | </property> | ||
| 509 | </widget> | ||
| 510 | </item> | ||
| 511 | </layout> | ||
| 508 | </item> | 512 | </item> |
| 509 | </layout> | 513 | </layout> |
| 510 | </widget> | 514 | </widget> |