mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	Merge pull request #1223 from DarkLordZach/custom-nand-sd-dirs
file_sys: Allow for custom NAND/SD directories
This commit is contained in:
		
						commit
						ed37b68fb5
					
				@ -127,6 +127,8 @@ struct Values {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Data Storage
 | 
					    // Data Storage
 | 
				
			||||||
    bool use_virtual_sd;
 | 
					    bool use_virtual_sd;
 | 
				
			||||||
 | 
					    std::string nand_dir;
 | 
				
			||||||
 | 
					    std::string sdmc_dir;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Renderer
 | 
					    // Renderer
 | 
				
			||||||
    float resolution_factor;
 | 
					    float resolution_factor;
 | 
				
			||||||
 | 
				
			|||||||
@ -102,6 +102,20 @@ void Config::ReadValues() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    qt_config->beginGroup("Data Storage");
 | 
					    qt_config->beginGroup("Data Storage");
 | 
				
			||||||
    Settings::values.use_virtual_sd = qt_config->value("use_virtual_sd", true).toBool();
 | 
					    Settings::values.use_virtual_sd = qt_config->value("use_virtual_sd", true).toBool();
 | 
				
			||||||
 | 
					    FileUtil::GetUserPath(
 | 
				
			||||||
 | 
					        FileUtil::UserPath::NANDDir,
 | 
				
			||||||
 | 
					        qt_config
 | 
				
			||||||
 | 
					            ->value("nand_directory",
 | 
				
			||||||
 | 
					                    QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::NANDDir)))
 | 
				
			||||||
 | 
					            .toString()
 | 
				
			||||||
 | 
					            .toStdString());
 | 
				
			||||||
 | 
					    FileUtil::GetUserPath(
 | 
				
			||||||
 | 
					        FileUtil::UserPath::SDMCDir,
 | 
				
			||||||
 | 
					        qt_config
 | 
				
			||||||
 | 
					            ->value("sdmc_directory",
 | 
				
			||||||
 | 
					                    QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::SDMCDir)))
 | 
				
			||||||
 | 
					            .toString()
 | 
				
			||||||
 | 
					            .toStdString());
 | 
				
			||||||
    qt_config->endGroup();
 | 
					    qt_config->endGroup();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    qt_config->beginGroup("System");
 | 
					    qt_config->beginGroup("System");
 | 
				
			||||||
@ -222,6 +236,10 @@ void Config::SaveValues() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    qt_config->beginGroup("Data Storage");
 | 
					    qt_config->beginGroup("Data Storage");
 | 
				
			||||||
    qt_config->setValue("use_virtual_sd", Settings::values.use_virtual_sd);
 | 
					    qt_config->setValue("use_virtual_sd", Settings::values.use_virtual_sd);
 | 
				
			||||||
 | 
					    qt_config->setValue("nand_directory",
 | 
				
			||||||
 | 
					                        QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::NANDDir)));
 | 
				
			||||||
 | 
					    qt_config->setValue("sdmc_directory",
 | 
				
			||||||
 | 
					                        QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::SDMCDir)));
 | 
				
			||||||
    qt_config->endGroup();
 | 
					    qt_config->endGroup();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    qt_config->beginGroup("System");
 | 
					    qt_config->beginGroup("System");
 | 
				
			||||||
 | 
				
			|||||||
@ -12,6 +12,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#define QT_NO_OPENGL
 | 
					#define QT_NO_OPENGL
 | 
				
			||||||
#include <QDesktopWidget>
 | 
					#include <QDesktopWidget>
 | 
				
			||||||
 | 
					#include <QDialogButtonBox>
 | 
				
			||||||
#include <QFileDialog>
 | 
					#include <QFileDialog>
 | 
				
			||||||
#include <QMessageBox>
 | 
					#include <QMessageBox>
 | 
				
			||||||
#include <QtGui>
 | 
					#include <QtGui>
 | 
				
			||||||
@ -374,6 +375,10 @@ void GMainWindow::ConnectMenuEvents() {
 | 
				
			|||||||
            &GMainWindow::OnMenuInstallToNAND);
 | 
					            &GMainWindow::OnMenuInstallToNAND);
 | 
				
			||||||
    connect(ui.action_Select_Game_List_Root, &QAction::triggered, this,
 | 
					    connect(ui.action_Select_Game_List_Root, &QAction::triggered, this,
 | 
				
			||||||
            &GMainWindow::OnMenuSelectGameListRoot);
 | 
					            &GMainWindow::OnMenuSelectGameListRoot);
 | 
				
			||||||
 | 
					    connect(ui.action_Select_NAND_Directory, &QAction::triggered, this,
 | 
				
			||||||
 | 
					            [this] { OnMenuSelectEmulatedDirectory(EmulatedDirectoryTarget::NAND); });
 | 
				
			||||||
 | 
					    connect(ui.action_Select_SDMC_Directory, &QAction::triggered, this,
 | 
				
			||||||
 | 
					            [this] { OnMenuSelectEmulatedDirectory(EmulatedDirectoryTarget::SDMC); });
 | 
				
			||||||
    connect(ui.action_Exit, &QAction::triggered, this, &QMainWindow::close);
 | 
					    connect(ui.action_Exit, &QAction::triggered, this, &QMainWindow::close);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Emulation
 | 
					    // Emulation
 | 
				
			||||||
@ -889,6 +894,28 @@ void GMainWindow::OnMenuSelectGameListRoot() {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void GMainWindow::OnMenuSelectEmulatedDirectory(EmulatedDirectoryTarget target) {
 | 
				
			||||||
 | 
					    const auto res = QMessageBox::information(
 | 
				
			||||||
 | 
					        this, tr("Changing Emulated Directory"),
 | 
				
			||||||
 | 
					        tr("You are about to change the emulated %1 directory of the system. Please note "
 | 
				
			||||||
 | 
					           "that this does not also move the contents of the previous directory to the "
 | 
				
			||||||
 | 
					           "new one and you will have to do that yourself.")
 | 
				
			||||||
 | 
					            .arg(target == EmulatedDirectoryTarget::SDMC ? tr("SD card") : tr("NAND")),
 | 
				
			||||||
 | 
					        QMessageBox::StandardButtons{QMessageBox::Ok, QMessageBox::Cancel});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (res == QMessageBox::Cancel)
 | 
				
			||||||
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    QString dir_path = QFileDialog::getExistingDirectory(this, tr("Select Directory"));
 | 
				
			||||||
 | 
					    if (!dir_path.isEmpty()) {
 | 
				
			||||||
 | 
					        FileUtil::GetUserPath(target == EmulatedDirectoryTarget::SDMC ? FileUtil::UserPath::SDMCDir
 | 
				
			||||||
 | 
					                                                                      : FileUtil::UserPath::NANDDir,
 | 
				
			||||||
 | 
					                              dir_path.toStdString());
 | 
				
			||||||
 | 
					        Service::FileSystem::CreateFactories(vfs);
 | 
				
			||||||
 | 
					        game_list->PopulateAsync(UISettings::values.gamedir, UISettings::values.gamedir_deepscan);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GMainWindow::OnMenuRecentFile() {
 | 
					void GMainWindow::OnMenuRecentFile() {
 | 
				
			||||||
    QAction* action = qobject_cast<QAction*>(sender());
 | 
					    QAction* action = qobject_cast<QAction*>(sender());
 | 
				
			||||||
    assert(action);
 | 
					    assert(action);
 | 
				
			||||||
 | 
				
			|||||||
@ -35,6 +35,11 @@ namespace Tegra {
 | 
				
			|||||||
class DebugContext;
 | 
					class DebugContext;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum class EmulatedDirectoryTarget {
 | 
				
			||||||
 | 
					    NAND,
 | 
				
			||||||
 | 
					    SDMC,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class GMainWindow : public QMainWindow {
 | 
					class GMainWindow : public QMainWindow {
 | 
				
			||||||
    Q_OBJECT
 | 
					    Q_OBJECT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -140,6 +145,8 @@ private slots:
 | 
				
			|||||||
    void OnMenuInstallToNAND();
 | 
					    void OnMenuInstallToNAND();
 | 
				
			||||||
    /// Called whenever a user selects the "File->Select Game List Root" menu item
 | 
					    /// Called whenever a user selects the "File->Select Game List Root" menu item
 | 
				
			||||||
    void OnMenuSelectGameListRoot();
 | 
					    void OnMenuSelectGameListRoot();
 | 
				
			||||||
 | 
					    /// Called whenever a user select the "File->Select -- Directory" where -- is NAND or SD Card
 | 
				
			||||||
 | 
					    void OnMenuSelectEmulatedDirectory(EmulatedDirectoryTarget target);
 | 
				
			||||||
    void OnMenuRecentFile();
 | 
					    void OnMenuRecentFile();
 | 
				
			||||||
    void OnConfigure();
 | 
					    void OnConfigure();
 | 
				
			||||||
    void OnAbout();
 | 
					    void OnAbout();
 | 
				
			||||||
 | 
				
			|||||||
@ -65,6 +65,9 @@
 | 
				
			|||||||
    <addaction name="action_Select_Game_List_Root"/>
 | 
					    <addaction name="action_Select_Game_List_Root"/>
 | 
				
			||||||
    <addaction name="menu_recent_files"/>
 | 
					    <addaction name="menu_recent_files"/>
 | 
				
			||||||
    <addaction name="separator"/>
 | 
					    <addaction name="separator"/>
 | 
				
			||||||
 | 
					    <addaction name="action_Select_NAND_Directory"/>
 | 
				
			||||||
 | 
					    <addaction name="action_Select_SDMC_Directory"/>
 | 
				
			||||||
 | 
					    <addaction name="separator"/>
 | 
				
			||||||
    <addaction name="action_Exit"/>
 | 
					    <addaction name="action_Exit"/>
 | 
				
			||||||
   </widget>
 | 
					   </widget>
 | 
				
			||||||
   <widget class="QMenu" name="menu_Emulation">
 | 
					   <widget class="QMenu" name="menu_Emulation">
 | 
				
			||||||
@ -204,6 +207,22 @@
 | 
				
			|||||||
    <string>Selects a folder to display in the game list</string>
 | 
					    <string>Selects a folder to display in the game list</string>
 | 
				
			||||||
   </property>
 | 
					   </property>
 | 
				
			||||||
  </action>
 | 
					  </action>
 | 
				
			||||||
 | 
					  <action name="action_Select_NAND_Directory">
 | 
				
			||||||
 | 
					   <property name="text">
 | 
				
			||||||
 | 
					    <string>Select NAND Directory...</string>
 | 
				
			||||||
 | 
					   </property>
 | 
				
			||||||
 | 
					   <property name="toolTip">
 | 
				
			||||||
 | 
					    <string>Selects a folder to use as the root of the emulated NAND</string>
 | 
				
			||||||
 | 
					   </property>
 | 
				
			||||||
 | 
					  </action>
 | 
				
			||||||
 | 
					  <action name="action_Select_SDMC_Directory">
 | 
				
			||||||
 | 
					   <property name="text">
 | 
				
			||||||
 | 
					    <string>Select SD Card Directory...</string>
 | 
				
			||||||
 | 
					   </property>
 | 
				
			||||||
 | 
					   <property name="toolTip">
 | 
				
			||||||
 | 
					    <string>Selects a folder to use as the root of the emulated SD card</string>
 | 
				
			||||||
 | 
					   </property>
 | 
				
			||||||
 | 
					  </action>
 | 
				
			||||||
  <action name="action_Fullscreen">
 | 
					  <action name="action_Fullscreen">
 | 
				
			||||||
   <property name="checkable">
 | 
					   <property name="checkable">
 | 
				
			||||||
    <bool>true</bool>
 | 
					    <bool>true</bool>
 | 
				
			||||||
 | 
				
			|||||||
@ -114,6 +114,12 @@ void Config::ReadValues() {
 | 
				
			|||||||
    // Data Storage
 | 
					    // Data Storage
 | 
				
			||||||
    Settings::values.use_virtual_sd =
 | 
					    Settings::values.use_virtual_sd =
 | 
				
			||||||
        sdl2_config->GetBoolean("Data Storage", "use_virtual_sd", true);
 | 
					        sdl2_config->GetBoolean("Data Storage", "use_virtual_sd", true);
 | 
				
			||||||
 | 
					    FileUtil::GetUserPath(FileUtil::UserPath::NANDDir,
 | 
				
			||||||
 | 
					                          sdl2_config->Get("Data Storage", "nand_directory",
 | 
				
			||||||
 | 
					                                           FileUtil::GetUserPath(FileUtil::UserPath::NANDDir)));
 | 
				
			||||||
 | 
					    FileUtil::GetUserPath(FileUtil::UserPath::SDMCDir,
 | 
				
			||||||
 | 
					                          sdl2_config->Get("Data Storage", "nand_directory",
 | 
				
			||||||
 | 
					                                           FileUtil::GetUserPath(FileUtil::UserPath::SDMCDir)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // System
 | 
					    // System
 | 
				
			||||||
    Settings::values.use_docked_mode = sdl2_config->GetBoolean("System", "use_docked_mode", false);
 | 
					    Settings::values.use_docked_mode = sdl2_config->GetBoolean("System", "use_docked_mode", false);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user