mirror of
				https://git.h3cjp.net/H3cJP/citra.git
				synced 2025-10-31 15:04:53 +00:00 
			
		
		
		
	Merge pull request #4187 from spycrab/qt_config_sidebar
Qt/Configure: Use sidebar to divide tabs into smaller groups
This commit is contained in:
		
						commit
						6767f4562b
					
				|  | @ -2,64 +2,70 @@ | |||
| <ui version="4.0"> | ||||
|  <class>ConfigureDialog</class> | ||||
|  <widget class="QDialog" name="ConfigureDialog"> | ||||
|   <property name="geometry"> | ||||
|    <rect> | ||||
|     <x>0</x> | ||||
|     <y>0</y> | ||||
|     <width>461</width> | ||||
|     <height>500</height> | ||||
|    </rect> | ||||
|   </property> | ||||
|   <property name="windowTitle"> | ||||
|    <string>Citra Configuration</string> | ||||
|   </property> | ||||
|   <layout class="QVBoxLayout" name="verticalLayout"> | ||||
|    <item> | ||||
|     <widget class="QTabWidget" name="tabWidget"> | ||||
|      <property name="currentIndex"> | ||||
|       <number>0</number> | ||||
|      </property> | ||||
|      <widget class="ConfigureGeneral" name="generalTab"> | ||||
|       <attribute name="title"> | ||||
|        <string>General</string> | ||||
|       </attribute> | ||||
|      </widget> | ||||
|      <widget class="ConfigureSystem" name="systemTab"> | ||||
|       <attribute name="title"> | ||||
|        <string>System</string> | ||||
|       </attribute> | ||||
|      </widget> | ||||
|      <widget class="ConfigureInput" name="inputTab"> | ||||
|       <attribute name="title"> | ||||
|        <string>Input</string> | ||||
|       </attribute> | ||||
|      </widget> | ||||
|      <widget class="ConfigureGraphics" name="graphicsTab"> | ||||
|       <attribute name="title"> | ||||
|        <string>Graphics</string> | ||||
|       </attribute> | ||||
|      </widget> | ||||
|      <widget class="ConfigureAudio" name="audioTab"> | ||||
|       <attribute name="title"> | ||||
|        <string>Audio</string> | ||||
|       </attribute> | ||||
|      </widget> | ||||
|       <widget class="ConfigureCamera" name="cameraTab"> | ||||
|       <attribute name="title"> | ||||
|        <string>Camera</string> | ||||
|       </attribute> | ||||
|      </widget> | ||||
|      <widget class="ConfigureDebug" name="debugTab"> | ||||
|       <attribute name="title"> | ||||
|        <string>Debug</string> | ||||
|       </attribute> | ||||
|      </widget> | ||||
|      <widget class="ConfigureWeb" name="webTab"> | ||||
|       <attribute name="title"> | ||||
|        <string>Web</string> | ||||
|       </attribute> | ||||
|      </widget> | ||||
|     </widget> | ||||
|     <layout class="QHBoxLayout" name="horizontalLayout"> | ||||
|      <item> | ||||
|       <widget class="QListWidget" name="selectorList"> | ||||
|        <property name="minimumWidth"> | ||||
|         <number>150</number> | ||||
|        </property> | ||||
|        <property name="maximumWidth"> | ||||
|         <number>150</number> | ||||
|        </property> | ||||
|       </widget> | ||||
|      </item> | ||||
|      <item> | ||||
|       <widget class="QTabWidget" name="tabWidget"> | ||||
|        <property name="currentIndex"> | ||||
|         <number>0</number> | ||||
|        </property> | ||||
|        <widget class="ConfigureGeneral" name="generalTab"> | ||||
|         <attribute name="title"> | ||||
|          <string>General</string> | ||||
|         </attribute> | ||||
|        </widget> | ||||
|        <widget class="ConfigureSystem" name="systemTab"> | ||||
|         <attribute name="title"> | ||||
|          <string>System</string> | ||||
|         </attribute> | ||||
|        </widget> | ||||
|        <widget class="ConfigureInput" name="inputTab"> | ||||
|         <attribute name="title"> | ||||
|          <string>Input</string> | ||||
|         </attribute> | ||||
|        </widget> | ||||
|        <widget class="ConfigureGraphics" name="graphicsTab"> | ||||
|         <attribute name="title"> | ||||
|          <string>Graphics</string> | ||||
|         </attribute> | ||||
|        </widget> | ||||
|        <widget class="ConfigureAudio" name="audioTab"> | ||||
|         <attribute name="title"> | ||||
|          <string>Audio</string> | ||||
|         </attribute> | ||||
|        </widget> | ||||
|        <widget class="ConfigureCamera" name="cameraTab"> | ||||
|         <attribute name="title"> | ||||
|          <string>Camera</string> | ||||
|         </attribute> | ||||
|        </widget> | ||||
|        <widget class="ConfigureDebug" name="debugTab"> | ||||
|         <attribute name="title"> | ||||
|          <string>Debug</string> | ||||
|         </attribute> | ||||
|        </widget> | ||||
|        <widget class="ConfigureWeb" name="webTab"> | ||||
|         <attribute name="title"> | ||||
|          <string>Web</string> | ||||
|         </attribute> | ||||
|        </widget> | ||||
|       </widget> | ||||
|      </item> | ||||
|     </layout> | ||||
|    </item> | ||||
|    <item> | ||||
|     <widget class="QDialogButtonBox" name="buttonBox"> | ||||
|  | @ -89,7 +95,7 @@ | |||
|    <header>configuration/configure_audio.h</header> | ||||
|    <container>1</container> | ||||
|   </customwidget> | ||||
|    <customwidget> | ||||
|   <customwidget> | ||||
|    <class>ConfigureCamera</class> | ||||
|    <extends>QWidget</extends> | ||||
|    <header>configuration/configure_camera.h</header> | ||||
|  |  | |||
|  | @ -2,6 +2,8 @@ | |||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include <QHash> | ||||
| #include <QListWidgetItem> | ||||
| #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<std::pair<QString, QStringList>, 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<QString, QWidget*> 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); | ||||
| } | ||||
|  |  | |||
|  | @ -21,6 +21,8 @@ public: | |||
|     ~ConfigureDialog(); | ||||
| 
 | ||||
|     void applyConfiguration(); | ||||
|     void UpdateVisibleTabs(); | ||||
|     void PopulateSelectionList(); | ||||
| 
 | ||||
| private slots: | ||||
|     void onLanguageChanged(const QString& locale); | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue