Add an option to change DLC path from the settings (#3501)

* Update settings_dialog.ui

* Update settings_dialog.cpp

* rename PLACEHOLDER settings_dialog.cpp

* Move DLC above save data settings_dialog.ui
This commit is contained in:
UltraDaCat
2025-09-01 20:08:53 +02:00
committed by GitHub
parent b4a82bfcdd
commit f09c0e5a28
2 changed files with 215 additions and 159 deletions

View File

@@ -340,6 +340,21 @@ SettingsDialog::SettingsDialog(std::shared_ptr<gui_settings> gui_settings,
}
});
connect(ui->folderButton, &QPushButton::clicked, this, [this]() {
const auto dlc_folder_path = Config::getAddonInstallDir();
QString initial_path;
Common::FS::PathToQString(initial_path, dlc_folder_path);
QString dlc_folder_path_string =
QFileDialog::getExistingDirectory(this, tr("Select the DLC folder"), initial_path);
auto file_path = Common::FS::PathFromQString(dlc_folder_path_string);
if (!file_path.empty()) {
Config::setAddonInstallDir(file_path);
ui->currentDLCFolder->setText(dlc_folder_path_string);
}
});
connect(ui->PortableUserButton, &QPushButton::clicked, this, []() {
QString userDir;
Common::FS::PathToQString(userDir, std::filesystem::current_path() / "user");
@@ -412,7 +427,9 @@ SettingsDialog::SettingsDialog(std::shared_ptr<gui_settings> gui_settings,
ui->saveDataGroupBox->installEventFilter(this);
ui->currentSaveDataPath->installEventFilter(this);
ui->currentDLCFolder->installEventFilter(this);
ui->browseButton->installEventFilter(this);
ui->folderButton->installEventFilter(this);
ui->PortableUserFolderGroupBox->installEventFilter(this);
// Debug
@@ -471,6 +488,11 @@ void SettingsDialog::LoadValuesFromConfig() {
Common::FS::PathToQString(save_data_path_string, save_data_path);
ui->currentSaveDataPath->setText(save_data_path_string);
const auto dlc_folder_path = Config::getAddonInstallDir();
QString dlc_folder_path_string;
Common::FS::PathToQString(dlc_folder_path_string, dlc_folder_path);
ui->currentDLCFolder->setText(dlc_folder_path_string);
ui->consoleLanguageComboBox->setCurrentIndex(
std::distance(languageIndexes.begin(),
std::find(languageIndexes.begin(), languageIndexes.end(),
@@ -745,6 +767,13 @@ void SettingsDialog::updateNoteTextEdit(const QString& elementName) {
text = tr("Portable user folder:\\nStores shadPS4 settings and data that will be applied only to the shadPS4 build located in the current folder. Restart the app after creating the portable user folder to begin using it.");
}
// DLC Folder
if (elementName == "dlcFolderGroupBox" || elementName == "currentDLCFolder") {
text = tr("DLC Path:\\nThe folder where game DLC loaded from.");
} else if (elementName == "folderButton") {
text = tr("Browse:\\nBrowse for a folder to set as the DLC path.");
}
// Save Data
if (elementName == "saveDataGroupBox" || elementName == "currentSaveDataPath") {
text = tr("Save Data Path:\\nThe folder where game save data will be saved.");

View File

@@ -59,7 +59,7 @@
</size>
</property>
<property name="currentIndex">
<number>6</number>
<number>5</number>
</property>
<widget class="QScrollArea" name="generalTab">
<property name="widgetResizable">
@@ -73,8 +73,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>679</width>
<height>420</height>
<width>944</width>
<height>537</height>
</rect>
</property>
<layout class="QVBoxLayout" name="generalTabVLayout" stretch="0">
@@ -86,8 +86,91 @@
<property name="spacing">
<number>6</number>
</property>
<item row="2" column="0">
<spacer name="verticalSpacer_3">
<item row="0" column="2">
<layout class="QVBoxLayout" name="emulatorTabLayoutMiddle">
<property name="leftMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="emulatorSettingsGroupBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Emulator</string>
</property>
<property name="flat">
<bool>false</bool>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="additionalSettingsVLayout" stretch="0">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number>
</property>
<item>
<layout class="QVBoxLayout" name="emulatorverticalLayout">
<property name="spacing">
<number>10</number>
</property>
<item>
<widget class="QCheckBox" name="showSplashCheckBox">
<property name="text">
<string>Show Splash</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="discordRPCCheckbox">
<property name="text">
<string>Enable Discord Rich Presence</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_9">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item row="2" column="2">
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
@@ -99,8 +182,66 @@
</property>
</spacer>
</item>
<item row="2" column="2">
<spacer name="verticalSpacer_4">
<item row="0" column="0">
<layout class="QVBoxLayout" name="systemTabLayoutLeft">
<property name="spacing">
<number>6</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="SystemSettings">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="sizeIncrement">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="title">
<string>System</string>
</property>
<layout class="QVBoxLayout" name="emuSettingsLayout">
<property name="bottomMargin">
<number>70</number>
</property>
<item>
<widget class="QGroupBox" name="consoleLanguageGroupBox">
<property name="title">
<string>Console Language</string>
</property>
<layout class="QVBoxLayout" name="settingsLayout">
<item>
<widget class="QComboBox" name="consoleLanguageComboBox"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="emulatorLanguageGroupBox">
<property name="title">
<string>Emulator Language</string>
</property>
<layout class="QVBoxLayout" name="langSettingsLayout">
<item>
<widget class="QComboBox" name="emulatorLanguageComboBox"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
@@ -286,64 +427,6 @@
</item>
</layout>
</item>
<item row="0" column="0">
<layout class="QVBoxLayout" name="systemTabLayoutLeft">
<property name="spacing">
<number>6</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="SystemSettings">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="sizeIncrement">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="title">
<string>System</string>
</property>
<layout class="QVBoxLayout" name="emuSettingsLayout">
<property name="bottomMargin">
<number>70</number>
</property>
<item>
<widget class="QGroupBox" name="consoleLanguageGroupBox">
<property name="title">
<string>Console Language</string>
</property>
<layout class="QVBoxLayout" name="settingsLayout">
<item>
<widget class="QComboBox" name="consoleLanguageComboBox"/>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="emulatorLanguageGroupBox">
<property name="title">
<string>Emulator Language</string>
</property>
<layout class="QVBoxLayout" name="langSettingsLayout">
<item>
<widget class="QComboBox" name="emulatorLanguageComboBox"/>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="volumeSliderElement">
<property name="title">
@@ -369,7 +452,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>149</width>
<width>414</width>
<height>69</height>
</rect>
</property>
@@ -425,89 +508,6 @@
</layout>
</widget>
</item>
<item row="0" column="2">
<layout class="QVBoxLayout" name="emulatorTabLayoutMiddle">
<property name="leftMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="emulatorSettingsGroupBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Emulator</string>
</property>
<property name="flat">
<bool>false</bool>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="additionalSettingsVLayout" stretch="0">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number>
</property>
<item>
<layout class="QVBoxLayout" name="emulatorverticalLayout">
<property name="spacing">
<number>10</number>
</property>
<item>
<widget class="QCheckBox" name="showSplashCheckBox">
<property name="text">
<string>Show Splash</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="discordRPCCheckbox">
<property name="text">
<string>Enable Discord Rich Presence</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_9">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item row="2" column="3">
<spacer name="verticalSpacer_5">
<property name="orientation">
@@ -538,8 +538,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>626</width>
<height>370</height>
<width>944</width>
<height>537</height>
</rect>
</property>
<layout class="QVBoxLayout" name="guiTabVLayout" stretch="0">
@@ -987,8 +987,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>553</width>
<height>244</height>
<width>944</width>
<height>537</height>
</rect>
</property>
<layout class="QVBoxLayout" name="graphicsTabVLayout" stretch="0,0">
@@ -1282,8 +1282,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>485</width>
<height>348</height>
<width>944</width>
<height>537</height>
</rect>
</property>
<layout class="QVBoxLayout" name="userTabVLayout" stretch="0,0,1">
@@ -1524,8 +1524,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>515</width>
<height>228</height>
<width>944</width>
<height>537</height>
</rect>
</property>
<layout class="QVBoxLayout" name="inputTabVLayout" stretch="0,0">
@@ -1796,8 +1796,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>421</width>
<height>319</height>
<width>944</width>
<height>537</height>
</rect>
</property>
<layout class="QVBoxLayout" name="pathsTabLayout">
@@ -1844,6 +1844,33 @@
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="dlcFolderGroupBox_2">
<property name="title">
<string>DLC Folder</string>
</property>
<layout class="QVBoxLayout" name="dlcFolderGroupBox">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_17">
<item>
<widget class="QLineEdit" name="currentDLCFolder">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="folderButton">
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="saveDataGroupBox">
<property name="title">