diff options
Diffstat (limited to 'src/yuzu')
| -rw-r--r-- | src/yuzu/configuration/configuration_shared.cpp | 42 | ||||
| -rw-r--r-- | src/yuzu/configuration/configuration_shared.h | 7 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.cpp | 24 | 
3 files changed, 52 insertions, 21 deletions
diff --git a/src/yuzu/configuration/configuration_shared.cpp b/src/yuzu/configuration/configuration_shared.cpp index a648d339b..0c7caf8b5 100644 --- a/src/yuzu/configuration/configuration_shared.cpp +++ b/src/yuzu/configuration/configuration_shared.cpp @@ -88,13 +88,11 @@ void ConfigurationShared::SetPerGameSetting(  void ConfigurationShared::SetHighlight(QWidget* widget, const std::string& name, bool highlighted) {      if (highlighted) { -        widget->setStyleSheet( -            QStringLiteral("QWidget#%1 { background-color:rgba(0,203,255,0.5) }") -                .arg(QString::fromStdString(name))); +        widget->setStyleSheet(QStringLiteral("QWidget#%1 { background-color:rgba(0,203,255,0.5) }") +                                  .arg(QString::fromStdString(name)));      } else { -        widget->setStyleSheet( -            QStringLiteral("QWidget#%1 { background-color:rgba(0,0,0,0) }") -                .arg(QString::fromStdString(name))); +        widget->setStyleSheet(QStringLiteral("QWidget#%1 { background-color:rgba(0,0,0,0) }") +                                  .arg(QString::fromStdString(name)));      }      widget->show();  } @@ -119,6 +117,35 @@ void ConfigurationShared::SetColoredTristate(QCheckBox* checkbox, const std::str          });  } +void ConfigurationShared::SetColoredTristate(QCheckBox* checkbox, const std::string& name, +                                             bool global, bool state, bool global_state, +                                             ConfigurationShared::CheckState& tracker) { +    if (global) { +        tracker = CheckState::Global; +    } else { +        tracker = (state == global_state) ? CheckState::On : CheckState::Off; +    } +    SetHighlight(checkbox, name, tracker != CheckState::Global); +    QObject::connect( +        checkbox, &QCheckBox::clicked, checkbox, [checkbox, name, global_state, &tracker]() { +            tracker = +                static_cast<ConfigurationShared::CheckState>((tracker + 1) % CheckState::Count); +            if (tracker == CheckState::Global) { +                checkbox->setChecked(global_state); +            } +            SetHighlight(checkbox, name, tracker != CheckState::Global); +        }); +} + +void ConfigurationShared::SetColoredComboBox(QComboBox* combobox, QWidget* target, +                                             const std::string& target_name, int global) { +    InsertGlobalItem(combobox, global); +    QObject::connect(combobox, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), +                     target, [target, target_name](int index) { +                         ConfigurationShared::SetHighlight(target, target_name, index != 0); +                     }); +} +  void ConfigurationShared::InsertGlobalItem(QComboBox* combobox) {      const QString use_global_text = ConfigurePerGame::tr("Use global configuration");      combobox->insertItem(ConfigurationShared::USE_GLOBAL_INDEX, use_global_text); @@ -126,7 +153,8 @@ void ConfigurationShared::InsertGlobalItem(QComboBox* combobox) {  }  void ConfigurationShared::InsertGlobalItem(QComboBox* combobox, int global_index) { -    const QString use_global_text = ConfigurePerGame::tr("Use global configuration (%1)").arg(combobox->itemText(global_index)); +    const QString use_global_text = +        ConfigurePerGame::tr("Use global configuration (%1)").arg(combobox->itemText(global_index));      combobox->insertItem(ConfigurationShared::USE_GLOBAL_INDEX, use_global_text);      combobox->insertSeparator(ConfigurationShared::USE_GLOBAL_SEPARATOR_INDEX);  } diff --git a/src/yuzu/configuration/configuration_shared.h b/src/yuzu/configuration/configuration_shared.h index f3676bd3a..b5d6ea8c8 100644 --- a/src/yuzu/configuration/configuration_shared.h +++ b/src/yuzu/configuration/configuration_shared.h @@ -57,8 +57,13 @@ void SetPerGameSetting(QComboBox* combobox,                         const Settings::Setting<Settings::GPUAccuracy>* setting);  void SetHighlight(QWidget* widget, const std::string& name, bool highlighted); -void SetColoredTristate(QCheckBox* checkbox, const std::string& name, const Settings::Setting<bool>& setting, +void SetColoredTristate(QCheckBox* checkbox, const std::string& name, +                        const Settings::Setting<bool>& setting,                          ConfigurationShared::CheckState& tracker); +void SetColoredTristate(QCheckBox* checkbox, const std::string& name, bool global, bool state, +                        bool global_state, ConfigurationShared::CheckState& tracker); +void SetColoredComboBox(QComboBox* combobox, QWidget* target, const std::string& target_name, +                        int global);  void InsertGlobalItem(QComboBox* combobox);  void InsertGlobalItem(QComboBox* combobox, int global_index); diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index c1b38728d..c79b256f9 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -80,6 +80,8 @@ void ConfigureGraphics::SetConfiguration() {          ui->aspect_ratio_combobox->setCurrentIndex(Settings::values.aspect_ratio.GetValue());      } else {          ConfigurationShared::SetPerGameSetting(ui->api, &Settings::values.renderer_backend); +        ConfigurationShared::SetHighlight(ui->api_layout, "api_layout", +                                          !Settings::values.renderer_backend.UsingGlobal());          ConfigurationShared::SetPerGameSetting(ui->aspect_ratio_combobox,                                                 &Settings::values.aspect_ratio); @@ -89,8 +91,6 @@ void ConfigureGraphics::SetConfiguration() {                                            !Settings::values.aspect_ratio.UsingGlobal());          ConfigurationShared::SetHighlight(ui->bg_layout, "bg_layout",                                            !Settings::values.bg_red.UsingGlobal()); -        // FIXME: ConfigurationShared::SetHighlight(ui->api_layout, "api_layout", -        // !Settings::values.renderer_backend.UsingGlobal());      }      UpdateBackgroundColorButton(QColor::fromRgbF(Settings::values.bg_red.GetValue(), @@ -141,10 +141,12 @@ void ConfigureGraphics::ApplyConfiguration() {          ConfigurationShared::ApplyPerGameSetting(&Settings::values.aspect_ratio,                                                   ui->aspect_ratio_combobox); -        ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_disk_shader_cache, -                                                 ui->use_disk_shader_cache); -        ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_asynchronous_gpu_emulation, -                                                 ui->use_asynchronous_gpu_emulation); +        ConfigurationShared::ApplyPerGameSetting( +            &Settings::values.use_disk_shader_cache, ui->use_disk_shader_cache, +            ConfigurationShared::trackers.use_disk_shader_cache); +        ConfigurationShared::ApplyPerGameSetting( +            &Settings::values.use_asynchronous_gpu_emulation, ui->use_asynchronous_gpu_emulation, +            ConfigurationShared::trackers.use_asynchronous_gpu_emulation);          if (ui->bg_combobox->currentIndex() == ConfigurationShared::USE_GLOBAL_INDEX) {              Settings::values.bg_red.SetGlobal(true); @@ -247,11 +249,6 @@ void ConfigureGraphics::SetupPerGameUI() {          return;      } -    connect(ui->aspect_ratio_combobox, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), -            this, [this](int index) { -                ConfigurationShared::SetHighlight(ui->aspect_ratio_layout, "aspect_ratio_layout", -                                                  index != 0); -            });      connect(ui->bg_combobox, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this,              [this](int index) {                  ui->bg_button->setEnabled(index == 1); @@ -266,8 +263,9 @@ void ConfigureGraphics::SetupPerGameUI() {          Settings::values.use_asynchronous_gpu_emulation,          ConfigurationShared::trackers.use_asynchronous_gpu_emulation); -    ConfigurationShared::InsertGlobalItem(ui->aspect_ratio_combobox, -                                          Settings::values.aspect_ratio.GetValue(true)); +    ConfigurationShared::SetColoredComboBox(ui->aspect_ratio_combobox, ui->aspect_ratio_layout, +                                            "aspect_ratio_layout", +                                            Settings::values.aspect_ratio.GetValue(true));      ConfigurationShared::InsertGlobalItem(          ui->api, static_cast<int>(Settings::values.renderer_backend.GetValue(true)));  }  | 
