configure_linux_tab.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include "common/settings.h"
  4. #include "core/core.h"
  5. #include "ui_configure_linux_tab.h"
  6. #include "yuzu/configuration/configuration_shared.h"
  7. #include "yuzu/configuration/configure_linux_tab.h"
  8. #include "yuzu/configuration/shared_widget.h"
  9. ConfigureLinuxTab::ConfigureLinuxTab(const Core::System& system_,
  10. std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group_,
  11. const ConfigurationShared::Builder& builder, QWidget* parent)
  12. : Tab(group_, parent), ui(std::make_unique<Ui::ConfigureLinuxTab>()), system{system_} {
  13. ui->setupUi(this);
  14. Setup(builder);
  15. SetConfiguration();
  16. }
  17. ConfigureLinuxTab::~ConfigureLinuxTab() = default;
  18. void ConfigureLinuxTab::SetConfiguration() {}
  19. void ConfigureLinuxTab::Setup(const ConfigurationShared::Builder& builder) {
  20. QLayout& linux_layout = *ui->linux_widget->layout();
  21. std::map<u32, QWidget*> linux_hold{};
  22. std::vector<Settings::BasicSetting*> settings;
  23. const auto push = [&](Settings::Category category) {
  24. for (const auto setting : Settings::values.linkage.by_category[category]) {
  25. settings.push_back(setting);
  26. }
  27. };
  28. push(Settings::Category::Linux);
  29. for (auto* setting : settings) {
  30. auto* widget = builder.BuildWidget(setting, apply_funcs);
  31. if (widget == nullptr) {
  32. continue;
  33. }
  34. if (!widget->Valid()) {
  35. widget->deleteLater();
  36. continue;
  37. }
  38. linux_hold.insert({setting->Id(), widget});
  39. }
  40. for (const auto& [id, widget] : linux_hold) {
  41. linux_layout.addWidget(widget);
  42. }
  43. }
  44. void ConfigureLinuxTab::ApplyConfiguration() {
  45. const bool is_powered_on = system.IsPoweredOn();
  46. for (const auto& apply_func : apply_funcs) {
  47. apply_func(is_powered_on);
  48. }
  49. }
  50. void ConfigureLinuxTab::changeEvent(QEvent* event) {
  51. if (event->type() == QEvent::LanguageChange) {
  52. RetranslateUI();
  53. }
  54. QWidget::changeEvent(event);
  55. }
  56. void ConfigureLinuxTab::RetranslateUI() {
  57. ui->retranslateUi(this);
  58. }