From d63a63cff05c5e0dfb8c5f81078e13e456151ca6 Mon Sep 17 00:00:00 2001 From: spycrab Date: Thu, 6 Sep 2018 19:59:25 +0200 Subject: [PATCH] Qt/Configure: Use sidebar to divide tabs into smaller groups --- src/citra_qt/configuration/configure.ui | 114 +++++++++--------- .../configuration/configure_dialog.cpp | 44 +++++++ src/citra_qt/configuration/configure_dialog.h | 2 + 3 files changed, 106 insertions(+), 54 deletions(-) diff --git a/src/citra_qt/configuration/configure.ui b/src/citra_qt/configuration/configure.ui index 21fa5fbc8..0f24016b2 100644 --- a/src/citra_qt/configuration/configure.ui +++ b/src/citra_qt/configuration/configure.ui @@ -2,64 +2,70 @@ ConfigureDialog - - - 0 - 0 - 461 - 500 - - Citra Configuration - - - 0 - - - - General - - - - - System - - - - - Input - - - - - Graphics - - - - - Audio - - - - - Camera - - - - - Debug - - - - - Web - - - + + + + + 150 + + + 150 + + + + + + + 0 + + + + General + + + + + System + + + + + Input + + + + + Graphics + + + + + Audio + + + + + Camera + + + + + Debug + + + + + Web + + + + + @@ -89,7 +95,7 @@
configuration/configure_audio.h
1 - + ConfigureCamera QWidget
configuration/configure_camera.h
diff --git a/src/citra_qt/configuration/configure_dialog.cpp b/src/citra_qt/configuration/configure_dialog.cpp index e9e0c598f..0a3f1fbae 100644 --- a/src/citra_qt/configuration/configure_dialog.cpp +++ b/src/citra_qt/configuration/configure_dialog.cpp @@ -2,6 +2,8 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include +#include #include "citra_qt/configuration/config.h" #include "citra_qt/configuration/configure_dialog.h" #include "citra_qt/hotkeys.h" @@ -13,8 +15,15 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, const HotkeyRegistry& registry ui->setupUi(this); ui->generalTab->PopulateHotkeyList(registry); this->setConfiguration(); + this->PopulateSelectionList(); connect(ui->generalTab, &ConfigureGeneral::languageChanged, this, &ConfigureDialog::onLanguageChanged); + connect(ui->selectorList, &QListWidget::itemSelectionChanged, this, + &ConfigureDialog::UpdateVisibleTabs); + + adjustSize(); + + ui->selectorList->setCurrentRow(0); } ConfigureDialog::~ConfigureDialog() = default; @@ -34,6 +43,22 @@ void ConfigureDialog::applyConfiguration() { Settings::LogSettings(); } +void ConfigureDialog::PopulateSelectionList() { + + const std::array, 4> items{ + {{tr("General"), {tr("General"), tr("Web"), tr("Debug")}}, + {tr("System"), {tr("System"), tr("Audio")}}, + {tr("Graphics"), {tr("Graphics")}}, + {tr("Controls"), {tr("Input")}}}}; + + for (const auto& entry : items) { + auto* item = new QListWidgetItem(entry.first); + item->setData(Qt::UserRole, entry.second); + + ui->selectorList->addItem(item); + } +} + void ConfigureDialog::onLanguageChanged(const QString& locale) { emit languageChanged(locale); ui->retranslateUi(this); @@ -46,3 +71,22 @@ void ConfigureDialog::onLanguageChanged(const QString& locale) { ui->debugTab->retranslateUi(); ui->webTab->retranslateUi(); } + +void ConfigureDialog::UpdateVisibleTabs() { + auto items = ui->selectorList->selectedItems(); + if (items.isEmpty()) + return; + + const QHash widgets = { + {tr("General"), ui->generalTab}, {tr("System"), ui->systemTab}, + {tr("Input"), ui->inputTab}, {tr("Graphics"), ui->graphicsTab}, + {tr("Audio"), ui->audioTab}, {tr("Camera"), ui->cameraTab}, + {tr("Debug"), ui->debugTab}, {tr("Web"), ui->webTab}}; + + ui->tabWidget->clear(); + + QStringList tabs = items[0]->data(Qt::UserRole).toStringList(); + + for (const auto& tab : tabs) + ui->tabWidget->addTab(widgets[tab], tab); +} diff --git a/src/citra_qt/configuration/configure_dialog.h b/src/citra_qt/configuration/configure_dialog.h index fb6d25ce9..f78c1fd20 100644 --- a/src/citra_qt/configuration/configure_dialog.h +++ b/src/citra_qt/configuration/configure_dialog.h @@ -21,6 +21,8 @@ public: ~ConfigureDialog(); void applyConfiguration(); + void UpdateVisibleTabs(); + void PopulateSelectionList(); private slots: void onLanguageChanged(const QString& locale);