mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	citra-qt: Added configure storage to handle NAND and SDMC dir location
This commit is contained in:
		
							parent
							
								
									d21b8fb1b1
								
							
						
					
					
						commit
						95529a8b1d
					
				
					 7 changed files with 313 additions and 1 deletions
				
			
		|  | @ -66,6 +66,9 @@ add_executable(citra-qt | |||
|     configuration/configure_motion_touch.cpp | ||||
|     configuration/configure_motion_touch.h | ||||
|     configuration/configure_motion_touch.ui | ||||
|     configuration/configure_storage.cpp | ||||
|     configuration/configure_storage.h | ||||
|     configuration/configure_storage.ui | ||||
|     configuration/configure_system.cpp | ||||
|     configuration/configure_system.h | ||||
|     configuration/configure_system.ui | ||||
|  |  | |||
|  | @ -863,8 +863,10 @@ void Config::SaveDataStorageValues() { | |||
| 
 | ||||
|     WriteSetting(QStringLiteral("use_virtual_sd"), Settings::values.use_virtual_sd, true); | ||||
|     WriteSetting(QStringLiteral("nand_directory"), | ||||
|                  QString::fromStdString(Settings::values.nand_dir), | ||||
|                  QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::NANDDir))); | ||||
|     WriteSetting(QStringLiteral("sdmc_directory"), | ||||
|                  QString::fromStdString(Settings::values.sdmc_dir), | ||||
|                  QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::SDMCDir))); | ||||
| 
 | ||||
|     qt_config->endGroup(); | ||||
|  |  | |||
|  | @ -68,6 +68,11 @@ | |||
|          <string>Debug</string> | ||||
|         </attribute> | ||||
|        </widget> | ||||
|        <widget class="ConfigureStorage" name="storageTab"> | ||||
|         <attribute name="title"> | ||||
|          <string>Storage</string> | ||||
|         </attribute> | ||||
|        </widget> | ||||
|        <widget class="ConfigureWeb" name="webTab"> | ||||
|         <attribute name="title"> | ||||
|          <string>Web</string> | ||||
|  | @ -121,6 +126,12 @@ | |||
|    <extends>QWidget</extends> | ||||
|    <header>configuration/configure_debug.h</header> | ||||
|    <container>1</container> | ||||
|   </customwidget> | ||||
|     <customwidget> | ||||
|    <class>ConfigureStorage</class> | ||||
|    <extends>QWidget</extends> | ||||
|    <header>configuration/configure_storage.h</header> | ||||
|    <container>1</container> | ||||
|   </customwidget> | ||||
|   <customwidget> | ||||
|    <class>ConfigureInput</class> | ||||
|  |  | |||
|  | @ -51,6 +51,7 @@ void ConfigureDialog::SetConfiguration() { | |||
|     ui->debugTab->SetConfiguration(); | ||||
|     ui->webTab->SetConfiguration(); | ||||
|     ui->uiTab->SetConfiguration(); | ||||
|     ui->storageTab->SetConfiguration(); | ||||
| } | ||||
| 
 | ||||
| void ConfigureDialog::ApplyConfiguration() { | ||||
|  | @ -66,6 +67,7 @@ void ConfigureDialog::ApplyConfiguration() { | |||
|     ui->debugTab->ApplyConfiguration(); | ||||
|     ui->webTab->ApplyConfiguration(); | ||||
|     ui->uiTab->ApplyConfiguration(); | ||||
|     ui->storageTab->ApplyConfiguration(); | ||||
|     Settings::Apply(); | ||||
|     Settings::LogSettings(); | ||||
| } | ||||
|  | @ -77,7 +79,7 @@ void ConfigureDialog::PopulateSelectionList() { | |||
| 
 | ||||
|     const std::array<std::pair<QString, QList<QWidget*>>, 5> items{ | ||||
|         {{tr("General"), {ui->generalTab, ui->webTab, ui->debugTab, ui->uiTab}}, | ||||
|          {tr("System"), {ui->systemTab, ui->cameraTab}}, | ||||
|          {tr("System"), {ui->systemTab, ui->cameraTab, ui->storageTab}}, | ||||
|          {tr("Graphics"), {ui->enhancementsTab, ui->graphicsTab}}, | ||||
|          {tr("Audio"), {ui->audioTab}}, | ||||
|          {tr("Controls"), {ui->inputTab, ui->hotkeysTab}}}}; | ||||
|  | @ -118,6 +120,7 @@ void ConfigureDialog::RetranslateUI() { | |||
|     ui->debugTab->RetranslateUI(); | ||||
|     ui->webTab->RetranslateUI(); | ||||
|     ui->uiTab->RetranslateUI(); | ||||
|     ui->storageTab->RetranslateUI(); | ||||
| } | ||||
| 
 | ||||
| void ConfigureDialog::UpdateVisibleTabs() { | ||||
|  | @ -134,6 +137,7 @@ void ConfigureDialog::UpdateVisibleTabs() { | |||
|                                                  {ui->audioTab, tr("Audio")}, | ||||
|                                                  {ui->cameraTab, tr("Camera")}, | ||||
|                                                  {ui->debugTab, tr("Debug")}, | ||||
|                                                  {ui->storageTab, tr("Storage")}, | ||||
|                                                  {ui->webTab, tr("Web")}, | ||||
|                                                  {ui->uiTab, tr("UI")}}; | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										78
									
								
								src/citra_qt/configuration/configure_storage.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								src/citra_qt/configuration/configure_storage.cpp
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,78 @@ | |||
| // Copyright 2016 Citra Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include <QDesktopServices> | ||||
| #include <QFileDialog> | ||||
| #include <QUrl> | ||||
| #include "citra_qt/configuration/configure_storage.h" | ||||
| #include "core/core.h" | ||||
| #include "core/settings.h" | ||||
| #include "ui_configure_storage.h" | ||||
| 
 | ||||
| ConfigureStorage::ConfigureStorage(QWidget* parent) | ||||
|     : QWidget(parent), ui(std::make_unique<Ui::ConfigureStorage>()) { | ||||
|     ui->setupUi(this); | ||||
|     SetConfiguration(); | ||||
| 
 | ||||
|     connect(ui->open_nand_dir, &QPushButton::clicked, []() { | ||||
|         QString path = QString::fromStdString(Settings::values.nand_dir); | ||||
|         QDesktopServices::openUrl(QUrl::fromLocalFile(path)); | ||||
|     }); | ||||
| 
 | ||||
|     connect(ui->change_nand_dir, &QPushButton::clicked, this, [this]() { | ||||
|         const QString dir_path = QFileDialog::getExistingDirectory( | ||||
|             this, tr("Select NAND Directory"), QString::fromStdString(Settings::values.nand_dir), | ||||
|             QFileDialog::ShowDirsOnly); | ||||
|         if (!dir_path.isEmpty()) { | ||||
|             Settings::values.nand_dir = dir_path.toStdString(); | ||||
|             SetConfiguration(); | ||||
|         } | ||||
|     }); | ||||
| 
 | ||||
|     connect(ui->open_sdmc_dir, &QPushButton::clicked, []() { | ||||
|         QString path = QString::fromStdString(Settings::values.sdmc_dir); | ||||
|         QDesktopServices::openUrl(QUrl::fromLocalFile(path)); | ||||
|     }); | ||||
| 
 | ||||
|     connect(ui->change_sdmc_dir, &QPushButton::clicked, this, [this]() { | ||||
|         const QString dir_path = QFileDialog::getExistingDirectory( | ||||
|             this, tr("Select SDMC Directory"), QString::fromStdString(Settings::values.sdmc_dir), | ||||
|             QFileDialog::ShowDirsOnly); | ||||
|         if (!dir_path.isEmpty()) { | ||||
|             Settings::values.sdmc_dir = dir_path.toStdString(); | ||||
|             SetConfiguration(); | ||||
|         } | ||||
|     }); | ||||
| 
 | ||||
|     connect(ui->toggle_virtual_sd, &QCheckBox::clicked, this, [this]() { | ||||
|         ApplyConfiguration(); | ||||
|         SetConfiguration(); | ||||
|     }); | ||||
| } | ||||
| 
 | ||||
| ConfigureStorage::~ConfigureStorage() = default; | ||||
| 
 | ||||
| void ConfigureStorage::SetConfiguration() { | ||||
|     ui->nand_group->setVisible(Settings::values.use_virtual_sd); | ||||
|     QString nand_path = QString::fromStdString(Settings::values.nand_dir); | ||||
|     ui->nand_dir_path->setText(nand_path); | ||||
|     ui->open_nand_dir->setEnabled(!Settings::values.nand_dir.empty()); | ||||
| 
 | ||||
|     ui->sdmc_group->setVisible(Settings::values.use_virtual_sd); | ||||
|     QString sdmc_path = QString::fromStdString(Settings::values.sdmc_dir); | ||||
|     ui->sdmc_dir_path->setText(sdmc_path); | ||||
|     ui->open_sdmc_dir->setEnabled(!Settings::values.sdmc_dir.empty()); | ||||
| 
 | ||||
|     ui->toggle_virtual_sd->setChecked(Settings::values.use_virtual_sd); | ||||
| 
 | ||||
|     ui->storage_group->setEnabled(!Core::System::GetInstance().IsPoweredOn()); | ||||
| } | ||||
| 
 | ||||
| void ConfigureStorage::ApplyConfiguration() { | ||||
|     Settings::values.use_virtual_sd = ui->toggle_virtual_sd->isChecked(); | ||||
| } | ||||
| 
 | ||||
| void ConfigureStorage::RetranslateUI() { | ||||
|     ui->retranslateUi(this); | ||||
| } | ||||
							
								
								
									
										26
									
								
								src/citra_qt/configuration/configure_storage.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								src/citra_qt/configuration/configure_storage.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,26 @@ | |||
| // Copyright 2016 Citra Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include <memory> | ||||
| #include <QWidget> | ||||
| 
 | ||||
| namespace Ui { | ||||
| class ConfigureStorage; | ||||
| } | ||||
| 
 | ||||
| class ConfigureStorage : public QWidget { | ||||
|     Q_OBJECT | ||||
| 
 | ||||
| public: | ||||
|     explicit ConfigureStorage(QWidget* parent = nullptr); | ||||
|     ~ConfigureStorage() override; | ||||
| 
 | ||||
|     void ApplyConfiguration(); | ||||
|     void RetranslateUI(); | ||||
|     void SetConfiguration(); | ||||
| 
 | ||||
|     std::unique_ptr<Ui::ConfigureStorage> ui; | ||||
| }; | ||||
							
								
								
									
										188
									
								
								src/citra_qt/configuration/configure_storage.ui
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										188
									
								
								src/citra_qt/configuration/configure_storage.ui
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,188 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <ui version="4.0"> | ||||
|  <class>ConfigureStorage</class> | ||||
|  <widget class="QWidget" name="ConfigureStorage"> | ||||
|   <property name="geometry"> | ||||
|    <rect> | ||||
|     <x>0</x> | ||||
|     <y>0</y> | ||||
|     <width>681</width> | ||||
|     <height>375</height> | ||||
|    </rect> | ||||
|   </property> | ||||
|   <property name="windowTitle"> | ||||
|    <string>Form</string> | ||||
|   </property> | ||||
|   <layout class="QVBoxLayout" name="verticalLayout_1"> | ||||
|    <item> | ||||
|     <layout class="QVBoxLayout" name="verticalLayout_2"> | ||||
|      <item> | ||||
|       <widget class="QGroupBox" name="storage_group"> | ||||
|        <property name="title"> | ||||
|         <string>Storage</string> | ||||
|        </property> | ||||
|        <layout class="QVBoxLayout" name="verticalLayout_3"> | ||||
|         <item> | ||||
|          <layout class="QHBoxLayout" name="horizontalLayout_1"> | ||||
|           <item> | ||||
|            <widget class="QCheckBox" name="toggle_virtual_sd"> | ||||
|             <property name="text"> | ||||
|              <string>Use Virtual SD</string> | ||||
|             </property> | ||||
|            </widget> | ||||
|           </item> | ||||
|          </layout> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QGroupBox" name="nand_group"> | ||||
|           <property name="title"> | ||||
|            <string/> | ||||
|           </property> | ||||
|           <layout class="QVBoxLayout" name="verticalLayout"> | ||||
|            <item> | ||||
|             <layout class="QHBoxLayout" name="horizontalLayout"> | ||||
|              <item> | ||||
|               <widget class="QLabel" name="label"> | ||||
|                <property name="text"> | ||||
|                 <string>NAND Directory</string> | ||||
|                </property> | ||||
|               </widget> | ||||
|              </item> | ||||
|              <item> | ||||
|               <widget class="QLineEdit" name="nand_dir_path"> | ||||
|                <property name="enabled"> | ||||
|                 <bool>false</bool> | ||||
|                </property> | ||||
|               </widget> | ||||
|              </item> | ||||
|              <item> | ||||
|               <widget class="QPushButton" name="open_nand_dir"> | ||||
|                <property name="text"> | ||||
|                 <string>Open</string> | ||||
|                </property> | ||||
|               </widget> | ||||
|              </item> | ||||
|             </layout> | ||||
|            </item> | ||||
|            <item> | ||||
|             <layout class="QHBoxLayout" name="horizontalLayout_2"> | ||||
|              <item> | ||||
|               <widget class="QLabel" name="label_4"> | ||||
|                <property name="text"> | ||||
|                 <string>NOTE: this does not move the contents of the previous directory to the new one</string> | ||||
|                </property> | ||||
|               </widget> | ||||
|              </item> | ||||
|              <item> | ||||
|               <spacer name="horizontalSpacer_3"> | ||||
|                <property name="orientation"> | ||||
|                 <enum>Qt::Horizontal</enum> | ||||
|                </property> | ||||
|                <property name="sizeHint" stdset="0"> | ||||
|                 <size> | ||||
|                  <width>40</width> | ||||
|                  <height>20</height> | ||||
|                 </size> | ||||
|                </property> | ||||
|               </spacer> | ||||
|              </item> | ||||
|              <item> | ||||
|               <widget class="QPushButton" name="change_nand_dir"> | ||||
|                <property name="text"> | ||||
|                 <string>Change</string> | ||||
|                </property> | ||||
|               </widget> | ||||
|              </item> | ||||
|             </layout> | ||||
|            </item> | ||||
|           </layout> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QGroupBox" name="sdmc_group"> | ||||
|           <property name="title"> | ||||
|            <string/> | ||||
|           </property> | ||||
|           <layout class="QVBoxLayout" name="verticalLayout_4"> | ||||
|            <item> | ||||
|             <layout class="QHBoxLayout" name="horizontalLayout_3"> | ||||
|              <item> | ||||
|               <widget class="QLabel" name="label_2"> | ||||
|                <property name="text"> | ||||
|                 <string>SDMC Directory</string> | ||||
|                </property> | ||||
|               </widget> | ||||
|              </item> | ||||
|              <item> | ||||
|               <widget class="QLineEdit" name="sdmc_dir_path"> | ||||
|                <property name="enabled"> | ||||
|                 <bool>false</bool> | ||||
|                </property> | ||||
|               </widget> | ||||
|              </item> | ||||
|              <item> | ||||
|               <widget class="QPushButton" name="open_sdmc_dir"> | ||||
|                <property name="text"> | ||||
|                 <string>Open</string> | ||||
|                </property> | ||||
|               </widget> | ||||
|              </item> | ||||
|             </layout> | ||||
|            </item> | ||||
|            <item> | ||||
|             <layout class="QHBoxLayout" name="horizontalLayout_4"> | ||||
|              <item> | ||||
|               <widget class="QLabel" name="label_3"> | ||||
|                <property name="text"> | ||||
|                 <string>NOTE: this does not move the contents of the previous directory to the new one</string> | ||||
|                </property> | ||||
|               </widget> | ||||
|              </item> | ||||
|              <item> | ||||
|               <spacer name="horizontalSpacer_4"> | ||||
|                <property name="orientation"> | ||||
|                 <enum>Qt::Horizontal</enum> | ||||
|                </property> | ||||
|                <property name="sizeHint" stdset="0"> | ||||
|                 <size> | ||||
|                  <width>40</width> | ||||
|                  <height>20</height> | ||||
|                 </size> | ||||
|                </property> | ||||
|               </spacer> | ||||
|              </item> | ||||
|              <item> | ||||
|               <widget class="QPushButton" name="change_sdmc_dir"> | ||||
|                <property name="text"> | ||||
|                 <string>Change</string> | ||||
|                </property> | ||||
|               </widget> | ||||
|              </item> | ||||
|             </layout> | ||||
|            </item> | ||||
|           </layout> | ||||
|          </widget> | ||||
|         </item> | ||||
|        </layout> | ||||
|       </widget> | ||||
|      </item> | ||||
|     </layout> | ||||
|    </item> | ||||
|    <item> | ||||
|     <spacer name="verticalSpacer"> | ||||
|      <property name="orientation"> | ||||
|       <enum>Qt::Vertical</enum> | ||||
|      </property> | ||||
|      <property name="sizeHint" stdset="0"> | ||||
|       <size> | ||||
|        <width>20</width> | ||||
|        <height>40</height> | ||||
|       </size> | ||||
|      </property> | ||||
|     </spacer> | ||||
|    </item> | ||||
|   </layout> | ||||
|  </widget> | ||||
|  <resources/> | ||||
|  <connections/> | ||||
| </ui> | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue