aboutsummaryrefslogtreecommitdiff
path: root/src/yuzu/configuration/configure_dialog.cpp
diff options
context:
space:
mode:
authorspycrab <spycrab@users.noreply.github.com>2018-09-06 19:59:25 +0200
committerfearlessTobi <thm.frey@gmail.com>2018-12-28 01:14:57 +0100
commitc6da772b249526659b267e812ac4734d0388acc0 (patch)
tree70d78f33f269c84537c34371db648b57e7b40857 /src/yuzu/configuration/configure_dialog.cpp
parent9a22a94a510e6f537b5156a960f0d49307089668 (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.cpp43
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);
+}