summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/yuzu/configuration/configuration_shared.cpp42
-rw-r--r--src/yuzu/configuration/configuration_shared.h16
2 files changed, 58 insertions, 0 deletions
diff --git a/src/yuzu/configuration/configuration_shared.cpp b/src/yuzu/configuration/configuration_shared.cpp
index bb47c3933..f32fcf3b7 100644
--- a/src/yuzu/configuration/configuration_shared.cpp
+++ b/src/yuzu/configuration/configuration_shared.cpp
@@ -4,10 +4,15 @@
4 4
5#include <QCheckBox> 5#include <QCheckBox>
6#include <QComboBox> 6#include <QComboBox>
7#include <QObject>
7#include "core/settings.h" 8#include "core/settings.h"
8#include "yuzu/configuration/configuration_shared.h" 9#include "yuzu/configuration/configuration_shared.h"
9#include "yuzu/configuration/configure_per_game.h" 10#include "yuzu/configuration/configure_per_game.h"
10 11
12namespace ConfigurationShared {
13Trackers trackers = {};
14}
15
11void ConfigurationShared::ApplyPerGameSetting(Settings::Setting<bool>* setting, 16void ConfigurationShared::ApplyPerGameSetting(Settings::Setting<bool>* setting,
12 const QCheckBox* checkbox) { 17 const QCheckBox* checkbox) {
13 if (checkbox->checkState() == Qt::PartiallyChecked) { 18 if (checkbox->checkState() == Qt::PartiallyChecked) {
@@ -18,6 +23,17 @@ void ConfigurationShared::ApplyPerGameSetting(Settings::Setting<bool>* setting,
18 } 23 }
19} 24}
20 25
26void ConfigurationShared::ApplyPerGameSetting(Settings::Setting<bool>* setting,
27 const QCheckBox* checkbox,
28 const CheckState& tracker) {
29 if (tracker == CheckState::Global) {
30 setting->SetGlobal(true);
31 } else {
32 setting->SetGlobal(false);
33 setting->SetValue(checkbox->checkState());
34 }
35}
36
21void ConfigurationShared::ApplyPerGameSetting(Settings::Setting<int>* setting, 37void ConfigurationShared::ApplyPerGameSetting(Settings::Setting<int>* setting,
22 const QComboBox* combobox) { 38 const QComboBox* combobox) {
23 if (combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) { 39 if (combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) {
@@ -69,6 +85,32 @@ void ConfigurationShared::SetPerGameSetting(
69 ConfigurationShared::USE_GLOBAL_OFFSET); 85 ConfigurationShared::USE_GLOBAL_OFFSET);
70} 86}
71 87
88void ConfigurationShared::SetBGColor(QWidget* widget, bool highlighted) {
89 if (highlighted) {
90 widget->setStyleSheet(QStringLiteral("background-color:rgba(0,203,255,0.5);"));
91 } else {
92 widget->setStyleSheet(QStringLiteral("background-color:rgba(0,0,0,0);"));
93 }
94 widget->show();
95}
96
97void ConfigurationShared::SetColoredTristate(QCheckBox* checkbox, Settings::Setting<bool>& setting,
98 ConfigurationShared::CheckState& tracker) {
99 if (setting.UsingGlobal()) {
100 tracker = CheckState::Global;
101 } else {
102 tracker = (setting.GetValue() == setting.GetValue(true)) ? CheckState::On : CheckState::Off;
103 }
104 SetBGColor(checkbox, tracker != CheckState::Global);
105 QObject::connect(checkbox, &QCheckBox::clicked, checkbox, [checkbox, setting, &tracker]() {
106 tracker = static_cast<ConfigurationShared::CheckState>((tracker + 1) % CheckState::Count);
107 if (tracker == CheckState::Global) {
108 checkbox->setChecked(setting.GetValue(true));
109 }
110 SetBGColor(checkbox, tracker != CheckState::Global);
111 });
112}
113
72void ConfigurationShared::InsertGlobalItem(QComboBox* combobox) { 114void ConfigurationShared::InsertGlobalItem(QComboBox* combobox) {
73 const QString use_global_text = ConfigurePerGame::tr("Use global configuration"); 115 const QString use_global_text = ConfigurePerGame::tr("Use global configuration");
74 combobox->insertItem(ConfigurationShared::USE_GLOBAL_INDEX, use_global_text); 116 combobox->insertItem(ConfigurationShared::USE_GLOBAL_INDEX, use_global_text);
diff --git a/src/yuzu/configuration/configuration_shared.h b/src/yuzu/configuration/configuration_shared.h
index b11b1b950..1163604bf 100644
--- a/src/yuzu/configuration/configuration_shared.h
+++ b/src/yuzu/configuration/configuration_shared.h
@@ -15,8 +15,20 @@ constexpr int USE_GLOBAL_INDEX = 0;
15constexpr int USE_GLOBAL_SEPARATOR_INDEX = 1; 15constexpr int USE_GLOBAL_SEPARATOR_INDEX = 1;
16constexpr int USE_GLOBAL_OFFSET = 2; 16constexpr int USE_GLOBAL_OFFSET = 2;
17 17
18enum CheckState {
19 Off,
20 On,
21 Global,
22 Count,
23};
24
25struct Trackers {
26} extern trackers;
27
18// Global-aware apply and set functions 28// Global-aware apply and set functions
19 29
30void ApplyPerGameSetting(Settings::Setting<bool>* setting, const QCheckBox* checkbox,
31 const CheckState& tracker);
20void ApplyPerGameSetting(Settings::Setting<bool>* setting, const QCheckBox* checkbox); 32void ApplyPerGameSetting(Settings::Setting<bool>* setting, const QCheckBox* checkbox);
21void ApplyPerGameSetting(Settings::Setting<int>* setting, const QComboBox* combobox); 33void ApplyPerGameSetting(Settings::Setting<int>* setting, const QComboBox* combobox);
22void ApplyPerGameSetting(Settings::Setting<Settings::RendererBackend>* setting, 34void ApplyPerGameSetting(Settings::Setting<Settings::RendererBackend>* setting,
@@ -31,6 +43,10 @@ void SetPerGameSetting(QComboBox* combobox,
31void SetPerGameSetting(QComboBox* combobox, 43void SetPerGameSetting(QComboBox* combobox,
32 const Settings::Setting<Settings::GPUAccuracy>* setting); 44 const Settings::Setting<Settings::GPUAccuracy>* setting);
33 45
46void SetBGColor(QWidget* widget, bool highlighted);
47void SetColoredTristate(QCheckBox* checkbox, Settings::Setting<bool>& setting,
48 ConfigurationShared::CheckState& tracker);
49
34void InsertGlobalItem(QComboBox* combobox); 50void InsertGlobalItem(QComboBox* combobox);
35 51
36} // namespace ConfigurationShared 52} // namespace ConfigurationShared