diff options
author | bunnei <bunneidev@gmail.com> | 2021-05-20 20:10:56 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-20 20:10:56 -0700 |
commit | 7626ca3343fda069d935bf3c95b637c929b6b7ac (patch) | |
tree | 5ac286df8c6a406386b5fa3e64651c8e26ef61f3 /src/yuzu/configuration/configuration_shared.h | |
parent | b5d21cc1b1733c7f03e1179dbddc932cbf716490 (diff) | |
parent | 5153d5387aa8946af0e885596c42d05001422d42 (diff) |
Merge pull request #6321 from lat9nq/per-game-cpu
configuration: Add CPU tab to game properties and slight per-game settings rework
Diffstat (limited to 'src/yuzu/configuration/configuration_shared.h')
-rw-r--r-- | src/yuzu/configuration/configuration_shared.h | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/src/yuzu/configuration/configuration_shared.h b/src/yuzu/configuration/configuration_shared.h index 5b344cdbd..1e0ef01ca 100644 --- a/src/yuzu/configuration/configuration_shared.h +++ b/src/yuzu/configuration/configuration_shared.h @@ -15,37 +15,45 @@ constexpr int USE_GLOBAL_INDEX = 0; constexpr int USE_GLOBAL_SEPARATOR_INDEX = 1; constexpr int USE_GLOBAL_OFFSET = 2; +// CheckBoxes require a tracker for their state since we emulate a tristate CheckBox enum class CheckState { - Off, - On, - Global, - Count, + Off, // Checkbox overrides to off/false + On, // Checkbox overrides to on/true + Global, // Checkbox defers to the global state + Count, // Simply the number of states, not a valid checkbox state }; // Global-aware apply and set functions +// ApplyPerGameSetting, given a Settings::Setting and a Qt UI element, properly applies a Setting void ApplyPerGameSetting(Settings::Setting<bool>* setting, const QCheckBox* checkbox, const CheckState& tracker); void ApplyPerGameSetting(Settings::Setting<int>* setting, const QComboBox* combobox); -void ApplyPerGameSetting(Settings::Setting<Settings::RendererBackend>* setting, - const QComboBox* combobox); -void ApplyPerGameSetting(Settings::Setting<Settings::GPUAccuracy>* setting, - const QComboBox* combobox); +// Sets a Qt UI element given a Settings::Setting void SetPerGameSetting(QCheckBox* checkbox, const Settings::Setting<bool>* setting); -void SetPerGameSetting(QComboBox* combobox, const Settings::Setting<int>* setting); -void SetPerGameSetting(QComboBox* combobox, - const Settings::Setting<Settings::RendererBackend>* setting); -void SetPerGameSetting(QComboBox* combobox, - const Settings::Setting<Settings::GPUAccuracy>* setting); +template <typename Type> +void SetPerGameSetting(QComboBox* combobox, const Settings::Setting<Type>* setting) { + combobox->setCurrentIndex(setting->UsingGlobal() ? ConfigurationShared::USE_GLOBAL_INDEX + : static_cast<int>(setting->GetValue()) + + ConfigurationShared::USE_GLOBAL_OFFSET); +} + +// (Un)highlights a Qt UI element void SetHighlight(QWidget* widget, bool highlighted); + +// Sets up a QCheckBox like a tristate one, given a Setting void SetColoredTristate(QCheckBox* checkbox, const Settings::Setting<bool>& setting, CheckState& tracker); void SetColoredTristate(QCheckBox* checkbox, bool global, bool state, bool global_state, CheckState& tracker); + +// Sets up coloring of a QWidget `target` based on the state of a QComboBox, and calls +// InsertGlobalItem void SetColoredComboBox(QComboBox* combobox, QWidget* target, int global); +// Adds the "Use Global Configuration" selection and separator to the beginning of a QComboBox void InsertGlobalItem(QComboBox* combobox, int global_index); } // namespace ConfigurationShared |