diff options
Diffstat (limited to 'src/settingsdialogpaths.cpp')
| -rw-r--r-- | src/settingsdialogpaths.cpp | 169 |
1 files changed, 104 insertions, 65 deletions
diff --git a/src/settingsdialogpaths.cpp b/src/settingsdialogpaths.cpp index aafa750c..1907b7fa 100644 --- a/src/settingsdialogpaths.cpp +++ b/src/settingsdialogpaths.cpp @@ -1,89 +1,121 @@ #include "settingsdialogpaths.h" -#include "ui_settingsdialog.h" #include "shared/appconfig.h" +#include "ui_settingsdialog.h" #include <iplugingame.h> PathsSettingsTab::PathsSettingsTab(Settings& s, SettingsDialog& d) - : SettingsTab(s, d), m_gameDir(settings().game().plugin()->gameDirectory()) + : SettingsTab(s, d), m_gameDir(settings().game().plugin()->gameDirectory()) { ui->baseDirEdit->setText(settings().paths().base()); - ui->managedGameDirEdit->setText( - QDir::toNativeSeparators(m_gameDir.absoluteFilePath(settings().game().plugin()->binaryName()))); + ui->managedGameDirEdit->setText(QDir::toNativeSeparators( + m_gameDir.absoluteFilePath(settings().game().plugin()->binaryName()))); QString basePath = settings().paths().base(); QDir baseDir(basePath); - for (const auto &dir : { - std::make_pair(ui->downloadDirEdit, settings().paths().downloads(false)), - std::make_pair(ui->modDirEdit, settings().paths().mods(false)), - std::make_pair(ui->cacheDirEdit, settings().paths().cache(false)), - std::make_pair(ui->profilesDirEdit, settings().paths().profiles(false)), - std::make_pair(ui->overwriteDirEdit, settings().paths().overwrite(false)) - }) { + for (const auto& dir : + {std::make_pair(ui->downloadDirEdit, settings().paths().downloads(false)), + std::make_pair(ui->modDirEdit, settings().paths().mods(false)), + std::make_pair(ui->cacheDirEdit, settings().paths().cache(false)), + std::make_pair(ui->profilesDirEdit, settings().paths().profiles(false)), + std::make_pair(ui->overwriteDirEdit, settings().paths().overwrite(false))}) { QString storePath = baseDir.relativeFilePath(dir.second); - storePath = dir.second; + storePath = dir.second; dir.first->setText(storePath); } - QObject::connect(ui->browseBaseDirBtn, &QPushButton::clicked, [&]{ on_browseBaseDirBtn_clicked(); }); - QObject::connect(ui->browseCacheDirBtn, &QPushButton::clicked, [&]{ on_browseCacheDirBtn_clicked(); }); - QObject::connect(ui->browseDownloadDirBtn, &QPushButton::clicked, [&]{ on_browseDownloadDirBtn_clicked(); }); - QObject::connect(ui->browseGameDirBtn, &QPushButton::clicked, [&]{ on_browseGameDirBtn_clicked(); }); - QObject::connect(ui->browseModDirBtn, &QPushButton::clicked, [&]{ on_browseModDirBtn_clicked(); }); - QObject::connect(ui->browseOverwriteDirBtn, &QPushButton::clicked, [&]{ on_browseOverwriteDirBtn_clicked(); }); - QObject::connect(ui->browseProfilesDirBtn, &QPushButton::clicked, [&]{ on_browseProfilesDirBtn_clicked(); }); + QObject::connect(ui->browseBaseDirBtn, &QPushButton::clicked, [&] { + on_browseBaseDirBtn_clicked(); + }); + QObject::connect(ui->browseCacheDirBtn, &QPushButton::clicked, [&] { + on_browseCacheDirBtn_clicked(); + }); + QObject::connect(ui->browseDownloadDirBtn, &QPushButton::clicked, [&] { + on_browseDownloadDirBtn_clicked(); + }); + QObject::connect(ui->browseGameDirBtn, &QPushButton::clicked, [&] { + on_browseGameDirBtn_clicked(); + }); + QObject::connect(ui->browseModDirBtn, &QPushButton::clicked, [&] { + on_browseModDirBtn_clicked(); + }); + QObject::connect(ui->browseOverwriteDirBtn, &QPushButton::clicked, [&] { + on_browseOverwriteDirBtn_clicked(); + }); + QObject::connect(ui->browseProfilesDirBtn, &QPushButton::clicked, [&] { + on_browseProfilesDirBtn_clicked(); + }); - QObject::connect(ui->baseDirEdit, &QLineEdit::editingFinished, [&]{ on_baseDirEdit_editingFinished(); }); - QObject::connect(ui->cacheDirEdit, &QLineEdit::editingFinished, [&]{ on_cacheDirEdit_editingFinished(); }); - QObject::connect(ui->downloadDirEdit, &QLineEdit::editingFinished, [&]{ on_downloadDirEdit_editingFinished(); }); - QObject::connect(ui->modDirEdit, &QLineEdit::editingFinished, [&]{ on_modDirEdit_editingFinished(); }); - QObject::connect(ui->overwriteDirEdit, &QLineEdit::editingFinished, [&]{ on_overwriteDirEdit_editingFinished(); }); - QObject::connect(ui->profilesDirEdit, &QLineEdit::editingFinished, [&]{ on_profilesDirEdit_editingFinished(); }); + QObject::connect(ui->baseDirEdit, &QLineEdit::editingFinished, [&] { + on_baseDirEdit_editingFinished(); + }); + QObject::connect(ui->cacheDirEdit, &QLineEdit::editingFinished, [&] { + on_cacheDirEdit_editingFinished(); + }); + QObject::connect(ui->downloadDirEdit, &QLineEdit::editingFinished, [&] { + on_downloadDirEdit_editingFinished(); + }); + QObject::connect(ui->modDirEdit, &QLineEdit::editingFinished, [&] { + on_modDirEdit_editingFinished(); + }); + QObject::connect(ui->overwriteDirEdit, &QLineEdit::editingFinished, [&] { + on_overwriteDirEdit_editingFinished(); + }); + QObject::connect(ui->profilesDirEdit, &QLineEdit::editingFinished, [&] { + on_profilesDirEdit_editingFinished(); + }); } void PathsSettingsTab::update() { - using Setter = void (PathSettings::*)(const QString&); + using Setter = void (PathSettings::*)(const QString&); using Directory = std::tuple<QString, Setter, std::wstring>; QString basePath = settings().paths().base(); - for (const Directory &dir :{ - Directory{ui->downloadDirEdit->text(), &PathSettings::setDownloads, AppConfig::downloadPath()}, - Directory{ui->cacheDirEdit->text(), &PathSettings::setCache, AppConfig::cachePath()}, - Directory{ui->modDirEdit->text(), &PathSettings::setMods, AppConfig::modsPath()}, - Directory{ui->overwriteDirEdit->text(), &PathSettings::setOverwrite, AppConfig::overwritePath()}, - Directory{ui->profilesDirEdit->text(), &PathSettings::setProfiles, AppConfig::profilesPath()} - }) { + for (const Directory& dir : + {Directory{ui->downloadDirEdit->text(), &PathSettings::setDownloads, + AppConfig::downloadPath()}, + Directory{ui->cacheDirEdit->text(), &PathSettings::setCache, + AppConfig::cachePath()}, + Directory{ui->modDirEdit->text(), &PathSettings::setMods, + AppConfig::modsPath()}, + Directory{ui->overwriteDirEdit->text(), &PathSettings::setOverwrite, + AppConfig::overwritePath()}, + Directory{ui->profilesDirEdit->text(), &PathSettings::setProfiles, + AppConfig::profilesPath()}}) { QString path; Setter setter; std::wstring defaultName; std::tie(path, setter, defaultName) = dir; QString realPath = path; - realPath = PathSettings::resolve(realPath, ui->baseDirEdit->text()); + realPath = PathSettings::resolve(realPath, ui->baseDirEdit->text()); if (!QDir(realPath).exists()) { if (!QDir().mkpath(realPath)) { - QMessageBox::warning(parentWidget(), QObject::tr("Error"), - QObject::tr("Failed to create \"%1\", you may not have the " - "necessary permissions. Path remains unchanged.") - .arg(realPath)); + QMessageBox::warning( + parentWidget(), QObject::tr("Error"), + QObject::tr("Failed to create \"%1\", you may not have the " + "necessary permissions. Path remains unchanged.") + .arg(realPath)); continue; } } - if (QFileInfo(realPath) != QFileInfo(basePath + "/" + QString::fromStdWString(defaultName))) { + if (QFileInfo(realPath) != + QFileInfo(basePath + "/" + QString::fromStdWString(defaultName))) { (settings().paths().*setter)(path); } else { (settings().paths().*setter)(""); } } - if (QFileInfo(ui->baseDirEdit->text()) != QFileInfo(qApp->property("dataPath").toString())) { + if (QFileInfo(ui->baseDirEdit->text()) != + QFileInfo(qApp->property("dataPath").toString())) { settings().paths().setBase(ui->baseDirEdit->text()); } else { settings().paths().setBase(""); @@ -97,7 +129,7 @@ void PathsSettingsTab::update() void PathsSettingsTab::on_browseBaseDirBtn_clicked() { QString temp = QFileDialog::getExistingDirectory( - &dialog(), QObject::tr("Select base directory"), ui->baseDirEdit->text()); + &dialog(), QObject::tr("Select base directory"), ui->baseDirEdit->text()); if (!temp.isEmpty()) { ui->baseDirEdit->setText(temp); } @@ -106,9 +138,10 @@ void PathsSettingsTab::on_browseBaseDirBtn_clicked() void PathsSettingsTab::on_browseDownloadDirBtn_clicked() { QString searchPath = ui->downloadDirEdit->text(); - searchPath = PathSettings::resolve(searchPath, ui->baseDirEdit->text()); + searchPath = PathSettings::resolve(searchPath, ui->baseDirEdit->text()); - QString temp = QFileDialog::getExistingDirectory(&dialog(), QObject::tr("Select download directory"), searchPath); + QString temp = QFileDialog::getExistingDirectory( + &dialog(), QObject::tr("Select download directory"), searchPath); if (!temp.isEmpty()) { ui->downloadDirEdit->setText(temp); } @@ -117,9 +150,10 @@ void PathsSettingsTab::on_browseDownloadDirBtn_clicked() void PathsSettingsTab::on_browseModDirBtn_clicked() { QString searchPath = ui->modDirEdit->text(); - searchPath = PathSettings::resolve(searchPath, ui->baseDirEdit->text()); + searchPath = PathSettings::resolve(searchPath, ui->baseDirEdit->text()); - QString temp = QFileDialog::getExistingDirectory(&dialog(), QObject::tr("Select mod directory"), searchPath); + QString temp = QFileDialog::getExistingDirectory( + &dialog(), QObject::tr("Select mod directory"), searchPath); if (!temp.isEmpty()) { ui->modDirEdit->setText(temp); } @@ -128,9 +162,10 @@ void PathsSettingsTab::on_browseModDirBtn_clicked() void PathsSettingsTab::on_browseCacheDirBtn_clicked() { QString searchPath = ui->cacheDirEdit->text(); - searchPath = PathSettings::resolve(searchPath, ui->baseDirEdit->text()); + searchPath = PathSettings::resolve(searchPath, ui->baseDirEdit->text()); - QString temp = QFileDialog::getExistingDirectory(&dialog(), QObject::tr("Select cache directory"), searchPath); + QString temp = QFileDialog::getExistingDirectory( + &dialog(), QObject::tr("Select cache directory"), searchPath); if (!temp.isEmpty()) { ui->cacheDirEdit->setText(temp); } @@ -139,9 +174,10 @@ void PathsSettingsTab::on_browseCacheDirBtn_clicked() void PathsSettingsTab::on_browseProfilesDirBtn_clicked() { QString searchPath = ui->profilesDirEdit->text(); - searchPath = PathSettings::resolve(searchPath, ui->baseDirEdit->text()); + searchPath = PathSettings::resolve(searchPath, ui->baseDirEdit->text()); - QString temp = QFileDialog::getExistingDirectory(&dialog(), QObject::tr("Select profiles directory"), searchPath); + QString temp = QFileDialog::getExistingDirectory( + &dialog(), QObject::tr("Select profiles directory"), searchPath); if (!temp.isEmpty()) { ui->profilesDirEdit->setText(temp); } @@ -150,9 +186,10 @@ void PathsSettingsTab::on_browseProfilesDirBtn_clicked() void PathsSettingsTab::on_browseOverwriteDirBtn_clicked() { QString searchPath = ui->overwriteDirEdit->text(); - searchPath = PathSettings::resolve(searchPath, ui->baseDirEdit->text()); + searchPath = PathSettings::resolve(searchPath, ui->baseDirEdit->text()); - QString temp = QFileDialog::getExistingDirectory(&dialog(), QObject::tr("Select overwrite directory"), searchPath); + QString temp = QFileDialog::getExistingDirectory( + &dialog(), QObject::tr("Select overwrite directory"), searchPath); if (!temp.isEmpty()) { ui->overwriteDirEdit->setText(temp); } @@ -162,7 +199,9 @@ void PathsSettingsTab::on_browseGameDirBtn_clicked() { QFileInfo oldGameExe(ui->managedGameDirEdit->text()); - QString temp = QFileDialog::getOpenFileName(&dialog(), QObject::tr("Select game executable"), oldGameExe.absolutePath(), oldGameExe.fileName()); + QString temp = + QFileDialog::getOpenFileName(&dialog(), QObject::tr("Select game executable"), + oldGameExe.absolutePath(), oldGameExe.fileName()); if (temp.isEmpty()) { return; @@ -177,23 +216,23 @@ void PathsSettingsTab::on_browseGameDirBtn_clicked() // QFileInfo newExe(temp); const auto binaryPath = settings().game().plugin()->binaryName(); - QDir folder = newExe.absoluteDir(); - while (folder.exists() && !folder.isRoot() - && QFileInfo(folder.filePath(binaryPath)) != newExe) { + QDir folder = newExe.absoluteDir(); + while (folder.exists() && !folder.isRoot() && + QFileInfo(folder.filePath(binaryPath)) != newExe) { folder.cdUp(); } if (folder.exists(binaryPath)) { m_gameDir = folder; - ui->managedGameDirEdit->setText( - QDir::toNativeSeparators(m_gameDir.absoluteFilePath(settings().game().plugin()->binaryName()))); - } - else { - QMessageBox::warning(parentWidget(), QObject::tr("Error"), - QObject::tr("The given path was not recognized as a valid game installation. " - "The current game plugin requires the executable to be in a \"%1\" subfolder of the game directory.") - .arg(QFileInfo(binaryPath).path())); - + ui->managedGameDirEdit->setText(QDir::toNativeSeparators( + m_gameDir.absoluteFilePath(settings().game().plugin()->binaryName()))); + } else { + QMessageBox::warning( + parentWidget(), QObject::tr("Error"), + QObject::tr("The given path was not recognized as a valid game installation. " + "The current game plugin requires the executable to be in a \"%1\" " + "subfolder of the game directory.") + .arg(QFileInfo(binaryPath).path())); } } @@ -227,7 +266,7 @@ void PathsSettingsTab::on_overwriteDirEdit_editingFinished() normalizePath(ui->overwriteDirEdit); } -void PathsSettingsTab::normalizePath(QLineEdit *lineEdit) +void PathsSettingsTab::normalizePath(QLineEdit* lineEdit) { QString text = lineEdit->text(); while (text.endsWith('/') || text.endsWith('\\')) { |
