From 876a1ccc3e72a87001fe6478a5bbd8d5cffa5a32 Mon Sep 17 00:00:00 2001 From: iwubcode Date: Sun, 6 Oct 2019 00:51:42 -0500 Subject: [PATCH] DolphinQt: Add way to override "Load" folder that controls the location of custom textures --- Source/Core/Core/Config/MainSettings.cpp | 1 + Source/Core/Core/Config/MainSettings.h | 1 + Source/Core/DolphinQt/Settings/PathPane.cpp | 26 ++++++++++++++++++--- Source/Core/DolphinQt/Settings/PathPane.h | 2 ++ Source/Core/UICommon/UICommon.cpp | 8 +++++++ 5 files changed, 35 insertions(+), 3 deletions(-) diff --git a/Source/Core/Core/Config/MainSettings.cpp b/Source/Core/Core/Config/MainSettings.cpp index 9497bba6d2..afe26dd32d 100644 --- a/Source/Core/Core/Config/MainSettings.cpp +++ b/Source/Core/Core/Config/MainSettings.cpp @@ -135,6 +135,7 @@ const ConfigInfo MAIN_AUDIO_VOLUME{{System::Main, "DSP", "Volume"}, 100}; // Main.General const ConfigInfo MAIN_DUMP_PATH{{System::Main, "General", "DumpPath"}, ""}; +const ConfigInfo MAIN_LOAD_PATH{{System::Main, "General", "LoadPath"}, ""}; const ConfigInfo MAIN_FS_PATH{{System::Main, "General", "NANDRootPath"}, ""}; const ConfigInfo MAIN_SD_PATH{{System::Main, "General", "WiiSDCardPath"}, ""}; diff --git a/Source/Core/Core/Config/MainSettings.h b/Source/Core/Core/Config/MainSettings.h index 0f14728bba..714eae52f2 100644 --- a/Source/Core/Core/Config/MainSettings.h +++ b/Source/Core/Core/Config/MainSettings.h @@ -104,6 +104,7 @@ extern const ConfigInfo MAIN_DISABLE_SCREENSAVER; // Main.General extern const ConfigInfo MAIN_DUMP_PATH; +extern const ConfigInfo MAIN_LOAD_PATH; extern const ConfigInfo MAIN_FS_PATH; extern const ConfigInfo MAIN_SD_PATH; diff --git a/Source/Core/DolphinQt/Settings/PathPane.cpp b/Source/Core/DolphinQt/Settings/PathPane.cpp index 90d8f0c374..20a9e1edb4 100644 --- a/Source/Core/DolphinQt/Settings/PathPane.cpp +++ b/Source/Core/DolphinQt/Settings/PathPane.cpp @@ -72,6 +72,17 @@ void PathPane::BrowseDump() } } +void PathPane::BrowseLoad() +{ + QString dir = QDir::toNativeSeparators(QFileDialog::getExistingDirectory( + this, tr("Select Load Path"), QString::fromStdString(Config::Get(Config::MAIN_LOAD_PATH)))); + if (!dir.isEmpty()) + { + m_load_edit->setText(dir); + Config::SetBase(Config::MAIN_LOAD_PATH, dir.toStdString()); + } +} + void PathPane::BrowseSDCard() { QString file = QDir::toNativeSeparators(QFileDialog::getOpenFileName( @@ -183,13 +194,22 @@ QGridLayout* PathPane::MakePathsLayout() layout->addWidget(m_dump_edit, 2, 1); layout->addWidget(dump_open, 2, 2); + m_load_edit = new QLineEdit(QString::fromStdString(Config::Get(Config::MAIN_LOAD_PATH))); + connect(m_load_edit, &QLineEdit::editingFinished, + [=] { Config::SetBase(Config::MAIN_LOAD_PATH, m_load_edit->text().toStdString()); }); + QPushButton* load_open = new QPushButton(QStringLiteral("...")); + connect(load_open, &QPushButton::clicked, this, &PathPane::BrowseLoad); + layout->addWidget(new QLabel(tr("Load Path:")), 3, 0); + layout->addWidget(m_load_edit, 3, 1); + layout->addWidget(load_open, 3, 2); + m_sdcard_edit = new QLineEdit(QString::fromStdString(Config::Get(Config::MAIN_SD_PATH))); connect(m_sdcard_edit, &QLineEdit::editingFinished, this, &PathPane::OnSDCardPathChanged); QPushButton* sdcard_open = new QPushButton(QStringLiteral("...")); connect(sdcard_open, &QPushButton::clicked, this, &PathPane::BrowseSDCard); - layout->addWidget(new QLabel(tr("SD Card Path:")), 3, 0); - layout->addWidget(m_sdcard_edit, 3, 1); - layout->addWidget(sdcard_open, 3, 2); + layout->addWidget(new QLabel(tr("SD Card Path:")), 4, 0); + layout->addWidget(m_sdcard_edit, 4, 1); + layout->addWidget(sdcard_open, 4, 2); return layout; } diff --git a/Source/Core/DolphinQt/Settings/PathPane.h b/Source/Core/DolphinQt/Settings/PathPane.h index d53d973410..540e36fb8a 100644 --- a/Source/Core/DolphinQt/Settings/PathPane.h +++ b/Source/Core/DolphinQt/Settings/PathPane.h @@ -23,6 +23,7 @@ private: void BrowseDefaultGame(); void BrowseWiiNAND(); void BrowseDump(); + void BrowseLoad(); void BrowseSDCard(); QGroupBox* MakeGameFolderBox(); QGridLayout* MakePathsLayout(); @@ -35,6 +36,7 @@ private: QLineEdit* m_game_edit; QLineEdit* m_nand_edit; QLineEdit* m_dump_edit; + QLineEdit* m_load_edit; QLineEdit* m_sdcard_edit; QPushButton* m_remove_path; diff --git a/Source/Core/UICommon/UICommon.cpp b/Source/Core/UICommon/UICommon.cpp index 935d07b043..9bc6efc2f2 100644 --- a/Source/Core/UICommon/UICommon.cpp +++ b/Source/Core/UICommon/UICommon.cpp @@ -62,9 +62,17 @@ static void CreateDumpPath(const std::string& path) File::CreateFullPath(File::GetUserPath(D_DUMPTEXTURES_IDX)); } +static void CreateLoadPath(const std::string& path) +{ + if (!path.empty()) + File::SetUserPath(D_LOAD_IDX, path + '/'); + File::CreateFullPath(File::GetUserPath(D_HIRESTEXTURES_IDX)); +} + static void InitCustomPaths() { File::SetUserPath(D_WIIROOT_IDX, Config::Get(Config::MAIN_FS_PATH)); + CreateLoadPath(Config::Get(Config::MAIN_LOAD_PATH)); CreateDumpPath(Config::Get(Config::MAIN_DUMP_PATH)); const std::string sd_path = Config::Get(Config::MAIN_SD_PATH); if (!sd_path.empty())