diff options
author | spycrab <spycrab@users.noreply.github.com> | 2018-09-06 19:59:25 +0200 |
---|---|---|
committer | fearlessTobi <thm.frey@gmail.com> | 2018-12-28 01:14:57 +0100 |
commit | c6da772b249526659b267e812ac4734d0388acc0 (patch) | |
tree | 70d78f33f269c84537c34371db648b57e7b40857 /src/yuzu/configuration/configure_dialog.cpp | |
parent | 9a22a94a510e6f537b5156a960f0d49307089668 (diff) |
Qt/Configure: Use sidebar to divide tabs into smaller groups
Diffstat (limited to 'src/yuzu/configuration/configure_dialog.cpp')
-rw-r--r-- | src/yuzu/configuration/configure_dialog.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/yuzu/configuration/configure_dialog.cpp b/src/yuzu/configuration/configure_dialog.cpp index 3905423e9e..90d7c63727 100644 --- a/src/yuzu/configuration/configure_dialog.cpp +++ b/src/yuzu/configuration/configure_dialog.cpp @@ -2,6 +2,8 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include <QHash> +#include <QListWidgetItem> #include "core/settings.h" #include "ui_configure.h" #include "yuzu/configuration/config.h" @@ -13,6 +15,13 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, const HotkeyRegistry& registry ui->setupUi(this); ui->generalTab->PopulateHotkeyList(registry); this->setConfiguration(); + this->PopulateSelectionList(); + connect(ui->selectorList, &QListWidget::itemSelectionChanged, this, + &ConfigureDialog::UpdateVisibleTabs); + + adjustSize(); + + ui->selectorList->setCurrentRow(0); } ConfigureDialog::~ConfigureDialog() = default; @@ -30,3 +39,37 @@ void ConfigureDialog::applyConfiguration() { ui->webTab->applyConfiguration(); Settings::Apply(); } + +void ConfigureDialog::PopulateSelectionList() { + const std::array<std::pair<QString, QStringList>, 4> items{ + {{tr("General"), {tr("General"), tr("Web"), tr("Debug"), tr("Game List")}}, + {tr("System"), {tr("System"), tr("Audio")}}, + {tr("Graphics"), {tr("Graphics")}}, + {tr("Controls"), {tr("Input")}}}}; + + for (const auto& entry : items) { + auto* const item = new QListWidgetItem(entry.first); + item->setData(Qt::UserRole, entry.second); + + ui->selectorList->addItem(item); + } +} + +void ConfigureDialog::UpdateVisibleTabs() { + const auto items = ui->selectorList->selectedItems(); + if (items.isEmpty()) + return; + + const std::map<QString, QWidget*> widgets = { + {tr("General"), ui->generalTab}, {tr("System"), ui->systemTab}, + {tr("Input"), ui->inputTab}, {tr("Graphics"), ui->graphicsTab}, + {tr("Audio"), ui->audioTab}, {tr("Debug"), ui->debugTab}, + {tr("Web"), ui->webTab}, {tr("Game List"), ui->gameListTab}}; + + ui->tabWidget->clear(); + + const QStringList tabs = items[0]->data(Qt::UserRole).toStringList(); + + for (const auto& tab : tabs) + ui->tabWidget->addTab(widgets.find(tab)->second, tab); +} |