configure_graphics_advanced.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. // SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include <QLabel>
  4. #include <qnamespace.h>
  5. #include "common/settings.h"
  6. #include "core/core.h"
  7. #include "ui_configure_graphics_advanced.h"
  8. #include "yuzu/configuration/configuration_shared.h"
  9. #include "yuzu/configuration/configure_graphics_advanced.h"
  10. ConfigureGraphicsAdvanced::ConfigureGraphicsAdvanced(
  11. const Core::System& system_,
  12. std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group,
  13. const ConfigurationShared::TranslationMap& translations_, QWidget* parent)
  14. : Tab(group, parent), ui{std::make_unique<Ui::ConfigureGraphicsAdvanced>()}, system{system_},
  15. translations{translations_} {
  16. ui->setupUi(this);
  17. SetConfiguration();
  18. checkbox_enable_compute_pipelines->setVisible(false);
  19. }
  20. ConfigureGraphicsAdvanced::~ConfigureGraphicsAdvanced() = default;
  21. void ConfigureGraphicsAdvanced::SetConfiguration() {
  22. const bool runtime_lock = !system.IsPoweredOn();
  23. auto& layout = *ui->populate_target->layout();
  24. std::map<std::string, QWidget*> hold{}; // A map will sort the data for us
  25. for (auto setting :
  26. Settings::values.linkage.by_category[Settings::Category::RendererAdvanced]) {
  27. auto [widget, extra, button] = ConfigurationShared::CreateWidget(
  28. setting, translations, this, runtime_lock, apply_funcs);
  29. if (widget == nullptr) {
  30. continue;
  31. }
  32. if (!setting->IsEnum()) {
  33. hold.emplace(setting->GetLabel(), widget);
  34. } else {
  35. layout.addWidget(widget);
  36. }
  37. if (setting->Id() == Settings::values.enable_compute_pipelines.Id()) {
  38. checkbox_enable_compute_pipelines = widget;
  39. }
  40. }
  41. for (const auto& [label, widget] : hold) {
  42. layout.addWidget(widget);
  43. }
  44. }
  45. void ConfigureGraphicsAdvanced::ApplyConfiguration() {
  46. const bool is_powered_on = system.IsPoweredOn();
  47. for (const auto& func : apply_funcs) {
  48. func(is_powered_on);
  49. }
  50. }
  51. void ConfigureGraphicsAdvanced::changeEvent(QEvent* event) {
  52. if (event->type() == QEvent::LanguageChange) {
  53. RetranslateUI();
  54. }
  55. QWidget::changeEvent(event);
  56. }
  57. void ConfigureGraphicsAdvanced::RetranslateUI() {
  58. ui->retranslateUi(this);
  59. }
  60. void ConfigureGraphicsAdvanced::ExposeComputeOption() {
  61. checkbox_enable_compute_pipelines->setVisible(true);
  62. }