configure_applets.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // SPDX-FileCopyrightText: 2024 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_applets.h"
  6. #include "yuzu/configuration/configuration_shared.h"
  7. #include "yuzu/configuration/configure_applets.h"
  8. #include "yuzu/configuration/shared_widget.h"
  9. ConfigureApplets::ConfigureApplets(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::ConfigureApplets>()}, system{system_} {
  13. ui->setupUi(this);
  14. Setup(builder);
  15. SetConfiguration();
  16. }
  17. ConfigureApplets::~ConfigureApplets() = default;
  18. void ConfigureApplets::changeEvent(QEvent* event) {
  19. if (event->type() == QEvent::LanguageChange) {
  20. RetranslateUI();
  21. }
  22. QWidget::changeEvent(event);
  23. }
  24. void ConfigureApplets::RetranslateUI() {
  25. ui->retranslateUi(this);
  26. }
  27. void ConfigureApplets::Setup(const ConfigurationShared::Builder& builder) {
  28. auto& library_applets_layout = *ui->group_library_applet_modes->layout();
  29. std::map<u32, QWidget*> applets_hold{};
  30. std::vector<Settings::BasicSetting*> settings;
  31. auto push = [&settings](auto& list) {
  32. for (auto setting : list) {
  33. settings.push_back(setting);
  34. }
  35. };
  36. push(Settings::values.linkage.by_category[Settings::Category::LibraryApplet]);
  37. for (auto setting : settings) {
  38. ConfigurationShared::Widget* widget = builder.BuildWidget(setting, apply_funcs);
  39. if (widget == nullptr) {
  40. continue;
  41. }
  42. if (!widget->Valid()) {
  43. widget->deleteLater();
  44. continue;
  45. }
  46. // Untested applets
  47. if (setting->Id() == Settings::values.data_erase_applet_mode.Id() ||
  48. setting->Id() == Settings::values.net_connect_applet_mode.Id() ||
  49. setting->Id() == Settings::values.shop_applet_mode.Id() ||
  50. setting->Id() == Settings::values.login_share_applet_mode.Id() ||
  51. setting->Id() == Settings::values.wifi_web_auth_applet_mode.Id() ||
  52. setting->Id() == Settings::values.my_page_applet_mode.Id()) {
  53. widget->setHidden(true);
  54. }
  55. applets_hold.emplace(setting->Id(), widget);
  56. }
  57. for (const auto& [label, widget] : applets_hold) {
  58. library_applets_layout.addWidget(widget);
  59. }
  60. }
  61. void ConfigureApplets::SetConfiguration() {}
  62. void ConfigureApplets::ApplyConfiguration() {
  63. const bool powered_on = system.IsPoweredOn();
  64. for (const auto& func : apply_funcs) {
  65. func(powered_on);
  66. }
  67. }