summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar bunnei2019-01-02 17:24:38 -0500
committerGravatar GitHub2019-01-02 17:24:38 -0500
commit6a0e258ddef8338090082744630cdce83ba8854b (patch)
tree8e21028c96ac07e33ffab093645bdb8567f23cf9 /src
parentMerge pull request #1969 from lioncash/cast (diff)
parentQt/Configure: Use sidebar to divide tabs into smaller groups (diff)
downloadyuzu-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.ui138
-rw-r--r--src/yuzu/configuration/configure_dialog.cpp43
-rw-r--r--src/yuzu/configuration/configure_dialog.h2
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
18ConfigureDialog::~ConfigureDialog() = default; 27ConfigureDialog::~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
43void 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
58void 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
25private: 25private:
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};