summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-08-26 04:52:15 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-08-26 04:52:15 -0400
commit8708265f69491b807b1dc56d0804230b80ffbdb8 (patch)
tree20abdf8bfd7202b53ed9b370f1a8e7470237030b /src
parent2eee72da6815f9d5c643b58c95f633e69da5150a (diff)
moved setting paths to Settings
Diffstat (limited to 'src')
-rw-r--r--src/settings.cpp97
-rw-r--r--src/settings.h37
-rw-r--r--src/settingsdialogpaths.cpp36
3 files changed, 107 insertions, 63 deletions
diff --git a/src/settings.cpp b/src/settings.cpp
index 406544f7..34b1b4ac 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -492,34 +492,108 @@ QString Settings::getConfigurablePath(const QString &key,
const QString &def,
bool resolve) const
{
+ const QString settingName = "Settings/" + key;
+
QString result = QDir::fromNativeSeparators(
- m_Settings.value(QString("settings/") + key, QString("%BASE_DIR%/") + def)
- .toString());
+ m_Settings.value(settingName, QString("%BASE_DIR%/") + def).toString());
+
if (resolve) {
result.replace("%BASE_DIR%", getBaseDirectory());
}
+
return result;
}
+void Settings::setConfigurablePath(const QString &key, const QString& path)
+{
+ const QString settingName = "Settings/" + key;
+
+ if (path.isEmpty()) {
+ m_Settings.remove(settingName);
+ } else {
+ m_Settings.setValue(settingName, path);
+ }
+}
+
QString Settings::getBaseDirectory() const
{
return QDir::fromNativeSeparators(m_Settings.value(
- "settings/base_directory", qApp->property("dataPath").toString()).toString());
+ "settings/base_directory",
+ qApp->property("dataPath").toString()).toString());
}
QString Settings::getDownloadDirectory(bool resolve) const
{
- return getConfigurablePath("download_directory", ToQString(AppConfig::downloadPath()), resolve);
+ return getConfigurablePath(
+ "download_directory",
+ ToQString(AppConfig::downloadPath()),
+ resolve);
}
QString Settings::getCacheDirectory(bool resolve) const
{
- return getConfigurablePath("cache_directory", ToQString(AppConfig::cachePath()), resolve);
+ return getConfigurablePath(
+ "cache_directory",
+ ToQString(AppConfig::cachePath()),
+ resolve);
}
QString Settings::getModDirectory(bool resolve) const
{
- return getConfigurablePath("mod_directory", ToQString(AppConfig::modsPath()), resolve);
+ return getConfigurablePath(
+ "mod_directory",
+ ToQString(AppConfig::modsPath()),
+ resolve);
+}
+
+QString Settings::getProfileDirectory(bool resolve) const
+{
+ return getConfigurablePath(
+ "profiles_directory",
+ ToQString(AppConfig::profilesPath()),
+ resolve);
+}
+
+QString Settings::getOverwriteDirectory(bool resolve) const
+{
+ return getConfigurablePath(
+ "overwrite_directory",
+ ToQString(AppConfig::overwritePath()),
+ resolve);
+}
+
+void Settings::setBaseDirectory(const QString& path)
+{
+ if (path.isEmpty()) {
+ m_Settings.remove("Settings/base_directory");
+ } else {
+ m_Settings.setValue("Settings/base_directory", path);
+ }
+}
+
+void Settings::setDownloadDirectory(const QString& path)
+{
+ setConfigurablePath("download_directory", path);
+}
+
+void Settings::setModDirectory(const QString& path)
+{
+ setConfigurablePath("mod_directory", path);
+}
+
+void Settings::setCacheDirectory(const QString& path)
+{
+ setConfigurablePath("cache_directory", path);
+}
+
+void Settings::setProfileDirectory(const QString& path)
+{
+ setConfigurablePath("profiles_directory", path);
+}
+
+void Settings::setOverwriteDirectory(const QString& path)
+{
+ setConfigurablePath("overwrite_directory", path);
}
std::optional<QString> Settings::getManagedGameDirectory() const
@@ -629,17 +703,6 @@ void Settings::removePreviousSeparatorColor()
m_Settings.remove("previousSeparatorColor");
}
-QString Settings::getProfileDirectory(bool resolve) const
-{
- return getConfigurablePath("profiles_directory", ToQString(AppConfig::profilesPath()), resolve);
-}
-
-QString Settings::getOverwriteDirectory(bool resolve) const
-{
- return getConfigurablePath("overwrite_directory",
- ToQString(AppConfig::overwritePath()), resolve);
-}
-
bool Settings::getNexusApiKey(QString &apiKey) const
{
QString tempKey = deObfuscate("APIKEY");
diff --git a/src/settings.h b/src/settings.h
index 810daac2..698cfe21 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -199,26 +199,19 @@ public:
**/
QString getSteamAppID() const;
- /**
- * retrieves the base directory under which the other directories usually
- * reside
- */
QString getBaseDirectory() const;
-
- /**
- * retrieve the directory where downloads are stored (with native separators)
- **/
QString getDownloadDirectory(bool resolve = true) const;
-
- /**
- * retrieve the directory where mods are stored (with native separators)
- **/
QString getModDirectory(bool resolve = true) const;
-
- /**
- * retrieve the directory where the web cache is stored (with native separators)
- **/
QString getCacheDirectory(bool resolve = true) const;
+ QString getProfileDirectory(bool resolve = true) const;
+ QString getOverwriteDirectory(bool resolve = true) const;
+
+ void setBaseDirectory(const QString& path);
+ void setDownloadDirectory(const QString& path);
+ void setModDirectory(const QString& path);
+ void setCacheDirectory(const QString& path);
+ void setProfileDirectory(const QString& path);
+ void setOverwriteDirectory(const QString& path);
/**
* retrieve the directory where the managed game is stored (with native separators)
@@ -293,17 +286,6 @@ public:
/**
- * retrieve the directory where profiles stored (with native separators)
- **/
- QString getProfileDirectory(bool resolve = true) const;
-
- /**
- * retrieve the directory were new files are stored that can't be assigned
- * to a mod (with native separators)
- */
- QString getOverwriteDirectory(bool resolve = true) const;
-
- /**
* @return true if the user has set up automatic login to nexus
**/
bool automaticLoginEnabled() const;
@@ -558,6 +540,7 @@ private:
void readPluginBlacklist();
QString getConfigurablePath(const QString &key, const QString &def, bool resolve) const;
+ void setConfigurablePath(const QString &key, const QString& path);
};
#endif // SETTINGS_H
diff --git a/src/settingsdialogpaths.cpp b/src/settingsdialogpaths.cpp
index 290ceeb3..32aaf4bf 100644
--- a/src/settingsdialogpaths.cpp
+++ b/src/settingsdialogpaths.cpp
@@ -40,22 +40,22 @@ PathsSettingsTab::PathsSettingsTab(Settings& s, SettingsDialog& d)
void PathsSettingsTab::update()
{
- typedef std::tuple<QString, QString, std::wstring> Directory;
+ using Setter = void (Settings::*)(const QString&);
+ using Directory = std::tuple<QString, Setter, std::wstring>;
QString basePath = settings().getBaseDirectory();
for (const Directory &dir :{
- Directory{ui->downloadDirEdit->text(), "download_directory", AppConfig::downloadPath()},
- Directory{ui->cacheDirEdit->text(), "cache_directory", AppConfig::cachePath()},
- Directory{ui->modDirEdit->text(), "mod_directory", AppConfig::modsPath()},
- Directory{ui->overwriteDirEdit->text(), "overwrite_directory", AppConfig::overwritePath()},
- Directory{ui->profilesDirEdit->text(), "profiles_directory", AppConfig::profilesPath()}
+ Directory{ui->downloadDirEdit->text(), &Settings::setDownloadDirectory, AppConfig::downloadPath()},
+ Directory{ui->cacheDirEdit->text(), &Settings::setCacheDirectory, AppConfig::cachePath()},
+ Directory{ui->modDirEdit->text(), &Settings::setModDirectory, AppConfig::modsPath()},
+ Directory{ui->overwriteDirEdit->text(), &Settings::setOverwriteDirectory, AppConfig::overwritePath()},
+ Directory{ui->profilesDirEdit->text(), &Settings::setProfileDirectory, AppConfig::profilesPath()}
}) {
- QString path, settingsKey;
+ QString path;
+ Setter setter;
std::wstring defaultName;
- std::tie(path, settingsKey, defaultName) = dir;
-
- settingsKey = QString("Settings/%1").arg(settingsKey);
+ std::tie(path, setter, defaultName) = dir;
QString realPath = path;
realPath.replace("%BASE_DIR%", ui->baseDirEdit->text());
@@ -69,25 +69,23 @@ void PathsSettingsTab::update()
}
}
- if (QFileInfo(realPath)
- != QFileInfo(basePath + "/" + QString::fromStdWString(defaultName))) {
- qsettings().setValue(settingsKey, path);
+ if (QFileInfo(realPath) != QFileInfo(basePath + "/" + QString::fromStdWString(defaultName))) {
+ (settings().*setter)(path);
} else {
- qsettings().remove(settingsKey);
+ (settings().*setter)("");
}
}
- if (QFileInfo(ui->baseDirEdit->text()) !=
- QFileInfo(qApp->property("dataPath").toString())) {
- qsettings().setValue("Settings/base_directory", ui->baseDirEdit->text());
+ if (QFileInfo(ui->baseDirEdit->text()) != QFileInfo(qApp->property("dataPath").toString())) {
+ settings().setBaseDirectory(ui->baseDirEdit->text());
} else {
- qsettings().remove("Settings/base_directory");
+ settings().setBaseDirectory("");
}
QFileInfo oldGameExe(settings().gamePlugin()->gameDirectory().absoluteFilePath(settings().gamePlugin()->binaryName()));
QFileInfo newGameExe(ui->managedGameDirEdit->text());
if (oldGameExe != newGameExe) {
- qsettings().setValue("gamePath", newGameExe.absolutePath());
+ settings().setManagedGameDirectory(newGameExe.absolutePath());
}
}