configure_dialog.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. // Copyright 2016 Citra Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #include <QHash>
  5. #include <QListWidgetItem>
  6. #include "core/settings.h"
  7. #include "ui_configure.h"
  8. #include "yuzu/configuration/config.h"
  9. #include "yuzu/configuration/configure_dialog.h"
  10. #include "yuzu/hotkeys.h"
  11. ConfigureDialog::ConfigureDialog(QWidget* parent, const HotkeyRegistry& registry)
  12. : QDialog(parent), ui(new Ui::ConfigureDialog) {
  13. ui->setupUi(this);
  14. ui->generalTab->PopulateHotkeyList(registry);
  15. this->setConfiguration();
  16. this->PopulateSelectionList();
  17. connect(ui->selectorList, &QListWidget::itemSelectionChanged, this,
  18. &ConfigureDialog::UpdateVisibleTabs);
  19. adjustSize();
  20. ui->selectorList->setCurrentRow(0);
  21. }
  22. ConfigureDialog::~ConfigureDialog() = default;
  23. void ConfigureDialog::setConfiguration() {}
  24. void ConfigureDialog::applyConfiguration() {
  25. ui->generalTab->applyConfiguration();
  26. ui->gameListTab->applyConfiguration();
  27. ui->systemTab->applyConfiguration();
  28. ui->profileManagerTab->applyConfiguration();
  29. ui->inputTab->applyConfiguration();
  30. ui->graphicsTab->applyConfiguration();
  31. ui->audioTab->applyConfiguration();
  32. ui->debugTab->applyConfiguration();
  33. ui->webTab->applyConfiguration();
  34. Settings::Apply();
  35. Settings::LogSettings();
  36. }
  37. void ConfigureDialog::PopulateSelectionList() {
  38. const std::array<std::pair<QString, QStringList>, 4> items{
  39. {{tr("General"), {tr("General"), tr("Web"), tr("Debug"), tr("Game List")}},
  40. {tr("System"), {tr("System"), tr("Profiles"), tr("Audio")}},
  41. {tr("Graphics"), {tr("Graphics")}},
  42. {tr("Controls"), {tr("Input")}}}};
  43. for (const auto& entry : items) {
  44. auto* const item = new QListWidgetItem(entry.first);
  45. item->setData(Qt::UserRole, entry.second);
  46. ui->selectorList->addItem(item);
  47. }
  48. }
  49. void ConfigureDialog::UpdateVisibleTabs() {
  50. const auto items = ui->selectorList->selectedItems();
  51. if (items.isEmpty())
  52. return;
  53. const std::map<QString, QWidget*> widgets = {{tr("General"), ui->generalTab},
  54. {tr("System"), ui->systemTab},
  55. {tr("Profiles"), ui->profileManagerTab},
  56. {tr("Input"), ui->inputTab},
  57. {tr("Graphics"), ui->graphicsTab},
  58. {tr("Audio"), ui->audioTab},
  59. {tr("Debug"), ui->debugTab},
  60. {tr("Web"), ui->webTab},
  61. {tr("Game List"), ui->gameListTab}};
  62. ui->tabWidget->clear();
  63. const QStringList tabs = items[0]->data(Qt::UserRole).toStringList();
  64. for (const auto& tab : tabs)
  65. ui->tabWidget->addTab(widgets.find(tab)->second, tab);
  66. }