// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #include #include #include "common/settings.h" #include "core/core.h" #include "ui_configure_graphics_advanced.h" #include "yuzu/configuration/configuration_shared.h" #include "yuzu/configuration/configure_graphics_advanced.h" #include "yuzu/configuration/shared_widget.h" ConfigureGraphicsAdvanced::ConfigureGraphicsAdvanced( const Core::System& system_, std::shared_ptr> group, const ConfigurationShared::TranslationMap& translations_, QWidget* parent) : Tab(group, parent), ui{std::make_unique()}, system{system_}, translations{translations_} { ui->setupUi(this); SetConfiguration(); checkbox_enable_compute_pipelines->setVisible(false); } ConfigureGraphicsAdvanced::~ConfigureGraphicsAdvanced() = default; void ConfigureGraphicsAdvanced::SetConfiguration() { const bool runtime_lock = !system.IsPoweredOn(); auto& layout = *ui->populate_target->layout(); std::map hold{}; // A map will sort the data for us for (auto setting : Settings::values.linkage.by_category[Settings::Category::RendererAdvanced]) { ConfigurationShared::Widget* widget = new ConfigurationShared::Widget(setting, translations, this, runtime_lock, apply_funcs); if (!widget->Valid()) { delete widget; continue; } if (!setting->IsEnum()) { hold.emplace(setting->GetLabel(), widget); } else { layout.addWidget(widget); } if (setting->Id() == Settings::values.enable_compute_pipelines.Id()) { checkbox_enable_compute_pipelines = widget; } } for (const auto& [label, widget] : hold) { layout.addWidget(widget); } } void ConfigureGraphicsAdvanced::ApplyConfiguration() { const bool is_powered_on = system.IsPoweredOn(); for (const auto& func : apply_funcs) { func(is_powered_on); } } void ConfigureGraphicsAdvanced::changeEvent(QEvent* event) { if (event->type() == QEvent::LanguageChange) { RetranslateUI(); } QWidget::changeEvent(event); } void ConfigureGraphicsAdvanced::RetranslateUI() { ui->retranslateUi(this); } void ConfigureGraphicsAdvanced::ExposeComputeOption() { checkbox_enable_compute_pipelines->setVisible(true); }