diff options
| author | 2019-01-02 17:24:38 -0500 | |
|---|---|---|
| committer | 2019-01-02 17:24:38 -0500 | |
| commit | 6a0e258ddef8338090082744630cdce83ba8854b (patch) | |
| tree | 8e21028c96ac07e33ffab093645bdb8567f23cf9 /src | |
| parent | Merge pull request #1969 from lioncash/cast (diff) | |
| parent | Qt/Configure: Use sidebar to divide tabs into smaller groups (diff) | |
| download | yuzu-6a0e258ddef8338090082744630cdce83ba8854b.tar.gz yuzu-6a0e258ddef8338090082744630cdce83ba8854b.tar.xz yuzu-6a0e258ddef8338090082744630cdce83ba8854b.zip | |
Merge pull request #1944 from FearlessTobi/port-4187
Port citra-emu/citra#4187: "Qt/Configure: Use sidebar to divide tabs into smaller groups"
Diffstat (limited to 'src')
| -rw-r--r-- | src/yuzu/configuration/configure.ui | 138 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_dialog.cpp | 43 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_dialog.h | 2 |
3 files changed, 124 insertions, 59 deletions
diff --git a/src/yuzu/configuration/configure.ui b/src/yuzu/configuration/configure.ui index 8706b80d2..ce833b6c8 100644 --- a/src/yuzu/configuration/configure.ui +++ b/src/yuzu/configuration/configure.ui | |||
| @@ -6,8 +6,8 @@ | |||
| 6 | <rect> | 6 | <rect> |
| 7 | <x>0</x> | 7 | <x>0</x> |
| 8 | <y>0</y> | 8 | <y>0</y> |
| 9 | <width>461</width> | 9 | <width>382</width> |
| 10 | <height>659</height> | 10 | <height>241</height> |
| 11 | </rect> | 11 | </rect> |
| 12 | </property> | 12 | </property> |
| 13 | <property name="windowTitle"> | 13 | <property name="windowTitle"> |
| @@ -15,51 +15,71 @@ | |||
| 15 | </property> | 15 | </property> |
| 16 | <layout class="QVBoxLayout" name="verticalLayout"> | 16 | <layout class="QVBoxLayout" name="verticalLayout"> |
| 17 | <item> | 17 | <item> |
| 18 | <widget class="QTabWidget" name="tabWidget"> | 18 | <layout class="QHBoxLayout" name="horizontalLayout"> |
| 19 | <property name="currentIndex"> | 19 | <item> |
| 20 | <number>0</number> | 20 | <widget class="QListWidget" name="selectorList"> |
| 21 | </property> | 21 | <property name="minimumSize"> |
| 22 | <widget class="ConfigureGeneral" name="generalTab"> | 22 | <size> |
| 23 | <attribute name="title"> | 23 | <width>150</width> |
| 24 | <string>General</string> | 24 | <height>0</height> |
| 25 | </attribute> | 25 | </size> |
| 26 | </widget> | 26 | </property> |
| 27 | <widget class="ConfigureGameList" name="gameListTab"> | 27 | <property name="maximumSize"> |
| 28 | <attribute name="title"> | 28 | <size> |
| 29 | <string>Game List</string> | 29 | <width>150</width> |
| 30 | </attribute> | 30 | <height>16777215</height> |
| 31 | </widget> | 31 | </size> |
| 32 | <widget class="ConfigureSystem" name="systemTab"> | 32 | </property> |
| 33 | <attribute name="title"> | 33 | </widget> |
| 34 | <string>System</string> | 34 | </item> |
| 35 | </attribute> | 35 | <item> |
| 36 | </widget> | 36 | <widget class="QTabWidget" name="tabWidget"> |
| 37 | <widget class="ConfigureInputSimple" name="inputTab"> | 37 | <property name="currentIndex"> |
| 38 | <attribute name="title"> | 38 | <number>0</number> |
| 39 | <string>Input</string> | 39 | </property> |
| 40 | </attribute> | 40 | <widget class="ConfigureGeneral" name="generalTab"> |
| 41 | </widget> | 41 | <attribute name="title"> |
| 42 | <widget class="ConfigureGraphics" name="graphicsTab"> | 42 | <string>General</string> |
| 43 | <attribute name="title"> | 43 | </attribute> |
| 44 | <string>Graphics</string> | 44 | </widget> |
| 45 | </attribute> | 45 | <widget class="ConfigureGameList" name="gameListTab"> |
| 46 | </widget> | 46 | <attribute name="title"> |
| 47 | <widget class="ConfigureAudio" name="audioTab"> | 47 | <string>Game List</string> |
| 48 | <attribute name="title"> | 48 | </attribute> |
| 49 | <string>Audio</string> | 49 | </widget> |
| 50 | </attribute> | 50 | <widget class="ConfigureSystem" name="systemTab"> |
| 51 | </widget> | 51 | <attribute name="title"> |
| 52 | <widget class="ConfigureDebug" name="debugTab"> | 52 | <string>System</string> |
| 53 | <attribute name="title"> | 53 | </attribute> |
| 54 | <string>Debug</string> | 54 | </widget> |
| 55 | </attribute> | 55 | <widget class="ConfigureInputSimple" name="inputTab"> |
| 56 | </widget> | 56 | <attribute name="title"> |
| 57 | <widget class="ConfigureWeb" name="webTab"> | 57 | <string>Input</string> |
| 58 | <attribute name="title"> | 58 | </attribute> |
| 59 | <string>Web</string> | 59 | </widget> |
| 60 | </attribute> | 60 | <widget class="ConfigureGraphics" name="graphicsTab"> |
| 61 | </widget> | 61 | <attribute name="title"> |
| 62 | </widget> | 62 | <string>Graphics</string> |
| 63 | </attribute> | ||
| 64 | </widget> | ||
| 65 | <widget class="ConfigureAudio" name="audioTab"> | ||
| 66 | <attribute name="title"> | ||
| 67 | <string>Audio</string> | ||
| 68 | </attribute> | ||
| 69 | </widget> | ||
| 70 | <widget class="ConfigureDebug" name="debugTab"> | ||
| 71 | <attribute name="title"> | ||
| 72 | <string>Debug</string> | ||
| 73 | </attribute> | ||
| 74 | </widget> | ||
| 75 | <widget class="ConfigureWeb" name="webTab"> | ||
| 76 | <attribute name="title"> | ||
| 77 | <string>Web</string> | ||
| 78 | </attribute> | ||
| 79 | </widget> | ||
| 80 | </widget> | ||
| 81 | </item> | ||
| 82 | </layout> | ||
| 63 | </item> | 83 | </item> |
| 64 | <item> | 84 | <item> |
| 65 | <widget class="QDialogButtonBox" name="buttonBox"> | 85 | <widget class="QDialogButtonBox" name="buttonBox"> |
| @@ -78,12 +98,6 @@ | |||
| 78 | <container>1</container> | 98 | <container>1</container> |
| 79 | </customwidget> | 99 | </customwidget> |
| 80 | <customwidget> | 100 | <customwidget> |
| 81 | <class>ConfigureGameList</class> | ||
| 82 | <extends>QWidget</extends> | ||
| 83 | <header>configuration/configure_gamelist.h</header> | ||
| 84 | <container>1</container> | ||
| 85 | </customwidget> | ||
| 86 | <customwidget> | ||
| 87 | <class>ConfigureSystem</class> | 101 | <class>ConfigureSystem</class> |
| 88 | <extends>QWidget</extends> | 102 | <extends>QWidget</extends> |
| 89 | <header>configuration/configure_system.h</header> | 103 | <header>configuration/configure_system.h</header> |
| @@ -102,12 +116,6 @@ | |||
| 102 | <container>1</container> | 116 | <container>1</container> |
| 103 | </customwidget> | 117 | </customwidget> |
| 104 | <customwidget> | 118 | <customwidget> |
| 105 | <class>ConfigureInputSimple</class> | ||
| 106 | <extends>QWidget</extends> | ||
| 107 | <header>configuration/configure_input_simple.h</header> | ||
| 108 | <container>1</container> | ||
| 109 | </customwidget> | ||
| 110 | <customwidget> | ||
| 111 | <class>ConfigureGraphics</class> | 119 | <class>ConfigureGraphics</class> |
| 112 | <extends>QWidget</extends> | 120 | <extends>QWidget</extends> |
| 113 | <header>configuration/configure_graphics.h</header> | 121 | <header>configuration/configure_graphics.h</header> |
| @@ -119,6 +127,18 @@ | |||
| 119 | <header>configuration/configure_web.h</header> | 127 | <header>configuration/configure_web.h</header> |
| 120 | <container>1</container> | 128 | <container>1</container> |
| 121 | </customwidget> | 129 | </customwidget> |
| 130 | <customwidget> | ||
| 131 | <class>ConfigureGameList</class> | ||
| 132 | <extends>QWidget</extends> | ||
| 133 | <header>configuration/configure_gamelist.h</header> | ||
| 134 | <container>1</container> | ||
| 135 | </customwidget> | ||
| 136 | <customwidget> | ||
| 137 | <class>ConfigureInputSimple</class> | ||
| 138 | <extends>QWidget</extends> | ||
| 139 | <header>configuration/configure_input_simple.h</header> | ||
| 140 | <container>1</container> | ||
| 141 | </customwidget> | ||
| 122 | </customwidgets> | 142 | </customwidgets> |
| 123 | <resources/> | 143 | <resources/> |
| 124 | <connections> | 144 | <connections> |
diff --git a/src/yuzu/configuration/configure_dialog.cpp b/src/yuzu/configuration/configure_dialog.cpp index 3905423e9..90d7c6372 100644 --- a/src/yuzu/configuration/configure_dialog.cpp +++ b/src/yuzu/configuration/configure_dialog.cpp | |||
| @@ -2,6 +2,8 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <QHash> | ||
| 6 | #include <QListWidgetItem> | ||
| 5 | #include "core/settings.h" | 7 | #include "core/settings.h" |
| 6 | #include "ui_configure.h" | 8 | #include "ui_configure.h" |
| 7 | #include "yuzu/configuration/config.h" | 9 | #include "yuzu/configuration/config.h" |
| @@ -13,6 +15,13 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, const HotkeyRegistry& registry | |||
| 13 | ui->setupUi(this); | 15 | ui->setupUi(this); |
| 14 | ui->generalTab->PopulateHotkeyList(registry); | 16 | ui->generalTab->PopulateHotkeyList(registry); |
| 15 | this->setConfiguration(); | 17 | this->setConfiguration(); |
| 18 | this->PopulateSelectionList(); | ||
| 19 | connect(ui->selectorList, &QListWidget::itemSelectionChanged, this, | ||
| 20 | &ConfigureDialog::UpdateVisibleTabs); | ||
| 21 | |||
| 22 | adjustSize(); | ||
| 23 | |||
| 24 | ui->selectorList->setCurrentRow(0); | ||
| 16 | } | 25 | } |
| 17 | 26 | ||
| 18 | ConfigureDialog::~ConfigureDialog() = default; | 27 | ConfigureDialog::~ConfigureDialog() = default; |
| @@ -30,3 +39,37 @@ void ConfigureDialog::applyConfiguration() { | |||
| 30 | ui->webTab->applyConfiguration(); | 39 | ui->webTab->applyConfiguration(); |
| 31 | Settings::Apply(); | 40 | Settings::Apply(); |
| 32 | } | 41 | } |
| 42 | |||
| 43 | void ConfigureDialog::PopulateSelectionList() { | ||
| 44 | const std::array<std::pair<QString, QStringList>, 4> items{ | ||
| 45 | {{tr("General"), {tr("General"), tr("Web"), tr("Debug"), tr("Game List")}}, | ||
| 46 | {tr("System"), {tr("System"), tr("Audio")}}, | ||
| 47 | {tr("Graphics"), {tr("Graphics")}}, | ||
| 48 | {tr("Controls"), {tr("Input")}}}}; | ||
| 49 | |||
| 50 | for (const auto& entry : items) { | ||
| 51 | auto* const item = new QListWidgetItem(entry.first); | ||
| 52 | item->setData(Qt::UserRole, entry.second); | ||
| 53 | |||
| 54 | ui->selectorList->addItem(item); | ||
| 55 | } | ||
| 56 | } | ||
| 57 | |||
| 58 | void ConfigureDialog::UpdateVisibleTabs() { | ||
| 59 | const auto items = ui->selectorList->selectedItems(); | ||
| 60 | if (items.isEmpty()) | ||
| 61 | return; | ||
| 62 | |||
| 63 | const std::map<QString, QWidget*> widgets = { | ||
| 64 | {tr("General"), ui->generalTab}, {tr("System"), ui->systemTab}, | ||
| 65 | {tr("Input"), ui->inputTab}, {tr("Graphics"), ui->graphicsTab}, | ||
| 66 | {tr("Audio"), ui->audioTab}, {tr("Debug"), ui->debugTab}, | ||
| 67 | {tr("Web"), ui->webTab}, {tr("Game List"), ui->gameListTab}}; | ||
| 68 | |||
| 69 | ui->tabWidget->clear(); | ||
| 70 | |||
| 71 | const QStringList tabs = items[0]->data(Qt::UserRole).toStringList(); | ||
| 72 | |||
| 73 | for (const auto& tab : tabs) | ||
| 74 | ui->tabWidget->addTab(widgets.find(tab)->second, tab); | ||
| 75 | } | ||
diff --git a/src/yuzu/configuration/configure_dialog.h b/src/yuzu/configuration/configure_dialog.h index f6df7b827..243d9fa09 100644 --- a/src/yuzu/configuration/configure_dialog.h +++ b/src/yuzu/configuration/configure_dialog.h | |||
| @@ -24,6 +24,8 @@ public: | |||
| 24 | 24 | ||
| 25 | private: | 25 | private: |
| 26 | void setConfiguration(); | 26 | void setConfiguration(); |
| 27 | void UpdateVisibleTabs(); | ||
| 28 | void PopulateSelectionList(); | ||
| 27 | 29 | ||
| 28 | std::unique_ptr<Ui::ConfigureDialog> ui; | 30 | std::unique_ptr<Ui::ConfigureDialog> ui; |
| 29 | }; | 31 | }; |