From 6b5c9675ae1e8b343dcbc9192d43c63e482a30bd Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Sat, 20 Jul 2019 08:43:46 -0400
Subject: moved SettingsTab out of Settings split general tab
---
src/settings.cpp | 204 +++++++------------------------------------------------
1 file changed, 23 insertions(+), 181 deletions(-)
(limited to 'src/settings.cpp')
diff --git a/src/settings.cpp b/src/settings.cpp
index 5ad066b2..0911b155 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -22,6 +22,7 @@ along with Mod Organizer. If not, see .
#include "pluginsetting.h"
#include "serverinfo.h"
#include "settingsdialog.h"
+#include "settingsdialoggeneral.h"
#include "versioninfo.h"
#include "appconfig.h"
#include "organizercore.h"
@@ -81,6 +82,23 @@ private:
};
+SettingsTab::SettingsTab(Settings *m_parent, SettingsDialog &m_dialog)
+ : m_parent(m_parent)
+ , m_Settings(m_parent->settingsRef())
+ , m_dialog(m_dialog)
+ , ui(m_dialog.ui)
+{
+}
+
+SettingsTab::~SettingsTab()
+{}
+
+QWidget* SettingsTab::parentWidget()
+{
+ return &m_dialog;
+}
+
+
Settings *Settings::s_Instance = nullptr;
@@ -663,63 +681,9 @@ void Settings::writePluginBlacklist()
m_Settings.endArray();
}
-void Settings::addLanguages(QComboBox *languageBox)
-{
- std::vector> languages;
-
- QDirIterator langIter(QCoreApplication::applicationDirPath() + "/translations", QDir::Files);
- QString pattern = ToQString(AppConfig::translationPrefix()) + "_([a-z]{2,3}(_[A-Z]{2,2})?).qm";
- QRegExp exp(pattern);
- while (langIter.hasNext()) {
- langIter.next();
- QString file = langIter.fileName();
- if (exp.exactMatch(file)) {
- QString languageCode = exp.cap(1);
- QLocale locale(languageCode);
- QString languageString = QString("%1 (%2)").arg(locale.nativeLanguageName()).arg(locale.nativeCountryName()); //QLocale::languageToString(locale.language());
- if (locale.language() == QLocale::Chinese) {
- if (languageCode == "zh_TW") {
- languageString = "Chinese (traditional)";
- } else {
- languageString = "Chinese (simplified)";
- }
- }
- languages.push_back(std::make_pair(QString("%1").arg(languageString), exp.cap(1)));
- //languageBox->addItem(QString("%1").arg(languageString), exp.cap(1));
- }
- }
- if (!languageBox->findText("English")) {
- languages.push_back(std::make_pair(QString("English"), QString("en_US")));
- //languageBox->addItem("English", "en_US");
- }
- std::sort(languages.begin(), languages.end());
- for (const auto &lang : languages) {
- languageBox->addItem(lang.first, lang.second);
- }
-}
-
-void Settings::addStyles(QComboBox *styleBox)
-{
- styleBox->addItem("None", "");
- styleBox->addItem("Fusion", "Fusion");
-
- QDirIterator langIter(QCoreApplication::applicationDirPath() + "/" + ToQString(AppConfig::stylesheetsPath()), QStringList("*.qss"), QDir::Files);
- while (langIter.hasNext()) {
- langIter.next();
- QString style = langIter.fileName();
- styleBox->addItem(style, style);
- }
-}
-
-void Settings::resetDialogs()
-{
- QuestionBoxMemory::resetDialogs();
-}
-
void Settings::query(PluginContainer *pluginContainer, QWidget *parent)
{
SettingsDialog dialog(pluginContainer, this, parent);
- connect(&dialog, SIGNAL(resetDialogs()), this, SLOT(resetDialogs()));
std::vector> tabs;
@@ -787,128 +751,6 @@ void Settings::query(PluginContainer *pluginContainer, QWidget *parent)
}
-Settings::SettingsTab::SettingsTab(Settings *m_parent, SettingsDialog &m_dialog)
- : m_parent(m_parent)
- , m_Settings(m_parent->m_Settings)
- , m_dialog(m_dialog)
-{
-}
-
-Settings::SettingsTab::~SettingsTab()
-{}
-
-Settings::GeneralTab::GeneralTab(Settings *m_parent, SettingsDialog &m_dialog)
- : Settings::SettingsTab(m_parent, m_dialog)
- , m_languageBox(m_dialog.findChild("languageBox"))
- , m_styleBox(m_dialog.findChild("styleBox"))
- , m_compactBox(m_dialog.findChild("compactBox"))
- , m_showMetaBox(m_dialog.findChild("showMetaBox"))
- , m_usePrereleaseBox(m_dialog.findChild("usePrereleaseBox"))
- , m_overwritingBtn(m_dialog.findChild("overwritingBtn"))
- , m_overwrittenBtn(m_dialog.findChild("overwrittenBtn"))
- , m_overwritingArchiveBtn(m_dialog.findChild("overwritingArchiveBtn"))
- , m_overwrittenArchiveBtn(m_dialog.findChild("overwrittenArchiveBtn"))
- , m_containsBtn(m_dialog.findChild("containsBtn"))
- , m_containedBtn(m_dialog.findChild("containedBtn"))
- , m_colorSeparatorsBox(m_dialog.findChild("colorSeparatorsBox"))
-{
- // FIXME I think 'addLanguages' lives in here not in parent
- m_parent->addLanguages(m_languageBox);
- {
- QString languageCode = m_parent->language();
- int currentID = m_languageBox->findData(languageCode);
- // I made a mess. :( Most languages are stored with only the iso country
- // code (2 characters like "de") but chinese
- // with the exact language variant (zh_TW) so I have to search for both
- // variants
- if (currentID == -1) {
- currentID = m_languageBox->findData(languageCode.mid(0, 2));
- }
- if (currentID != -1) {
- m_languageBox->setCurrentIndex(currentID);
- }
- }
-
- // FIXME I think addStyles lives in here not in parent
- m_parent->addStyles(m_styleBox);
- {
- int currentID = m_styleBox->findData(
- m_Settings.value("Settings/style", "").toString());
- if (currentID != -1) {
- m_styleBox->setCurrentIndex(currentID);
- }
- }
- /* verision using palette only works with fusion theme for some stupid reason...
- m_overwritingBtn->setAutoFillBackground(true);
- m_overwrittenBtn->setAutoFillBackground(true);
- m_containsBtn->setAutoFillBackground(true);
- m_containedBtn->setAutoFillBackground(true);
- m_overwritingBtn->setPalette(QPalette(m_parent->modlistOverwritingLooseColor()));
- m_overwrittenBtn->setPalette(QPalette(m_parent->modlistOverwrittenLooseColor()));
- m_containsBtn->setPalette(QPalette(m_parent->modlistContainsPluginColor()));
- m_containedBtn->setPalette(QPalette(m_parent->pluginListContainedColor()));
- QPalette palette1 = m_overwritingBtn->palette();
- QPalette palette2 = m_overwrittenBtn->palette();
- QPalette palette3 = m_containsBtn->palette();
- QPalette palette4 = m_containedBtn->palette();
- palette1.setColor(QPalette::Background, m_parent->modlistOverwritingLooseColor());
- palette2.setColor(QPalette::Background, m_parent->modlistOverwrittenLooseColor());
- palette3.setColor(QPalette::Background, m_parent->modlistContainsPluginColor());
- palette4.setColor(QPalette::Background, m_parent->pluginListContainedColor());
- m_overwritingBtn->setPalette(palette1);
- m_overwrittenBtn->setPalette(palette2);
- m_containsBtn->setPalette(palette3);
- m_containedBtn->setPalette(palette4);
- */
-
- //version with stylesheet
- m_dialog.setButtonColor(m_overwritingBtn, m_parent->modlistOverwritingLooseColor());
- m_dialog.setButtonColor(m_overwrittenBtn, m_parent->modlistOverwrittenLooseColor());
- m_dialog.setButtonColor(m_overwritingArchiveBtn, m_parent->modlistOverwritingArchiveColor());
- m_dialog.setButtonColor(m_overwrittenArchiveBtn, m_parent->modlistOverwrittenArchiveColor());
- m_dialog.setButtonColor(m_containsBtn, m_parent->modlistContainsPluginColor());
- m_dialog.setButtonColor(m_containedBtn, m_parent->pluginListContainedColor());
-
- m_dialog.setOverwritingColor(m_parent->modlistOverwritingLooseColor());
- m_dialog.setOverwrittenColor(m_parent->modlistOverwrittenLooseColor());
- m_dialog.setOverwritingArchiveColor(m_parent->modlistOverwritingArchiveColor());
- m_dialog.setOverwrittenArchiveColor(m_parent->modlistOverwrittenArchiveColor());
- m_dialog.setContainsColor(m_parent->modlistContainsPluginColor());
- m_dialog.setContainedColor(m_parent->pluginListContainedColor());
-
- m_compactBox->setChecked(m_parent->compactDownloads());
- m_showMetaBox->setChecked(m_parent->metaDownloads());
- m_usePrereleaseBox->setChecked(m_parent->usePrereleases());
- m_colorSeparatorsBox->setChecked(m_parent->colorSeparatorScrollbar());
-}
-
-void Settings::GeneralTab::update()
-{
- QString oldLanguage = m_parent->language();
- QString newLanguage = m_languageBox->itemData(m_languageBox->currentIndex()).toString();
- if (newLanguage != oldLanguage) {
- m_Settings.setValue("Settings/language", newLanguage);
- emit m_parent->languageChanged(newLanguage);
- }
-
- QString oldStyle = m_Settings.value("Settings/style", "").toString();
- QString newStyle = m_styleBox->itemData(m_styleBox->currentIndex()).toString();
- if (oldStyle != newStyle) {
- m_Settings.setValue("Settings/style", newStyle);
- emit m_parent->styleChanged(newStyle);
- }
-
- m_Settings.setValue("Settings/overwritingLooseFilesColor", m_dialog.getOverwritingColor());
- m_Settings.setValue("Settings/overwrittenLooseFilesColor", m_dialog.getOverwrittenColor());
- m_Settings.setValue("Settings/overwritingArchiveFilesColor", m_dialog.getOverwritingArchiveColor());
- m_Settings.setValue("Settings/overwrittenArchiveFilesColor", m_dialog.getOverwrittenArchiveColor());
- m_Settings.setValue("Settings/containsPluginColor", m_dialog.getContainsColor());
- m_Settings.setValue("Settings/containedColor", m_dialog.getContainedColor());
- m_Settings.setValue("Settings/compact_downloads", m_compactBox->isChecked());
- m_Settings.setValue("Settings/meta_downloads", m_showMetaBox->isChecked());
- m_Settings.setValue("Settings/use_prereleases", m_usePrereleaseBox->isChecked());
- m_Settings.setValue("Settings/colorSeparatorScrollbars", m_colorSeparatorsBox->isChecked());
-}
Settings::PathsTab::PathsTab(Settings *parent, SettingsDialog &dialog)
: SettingsTab(parent, dialog)
@@ -991,7 +833,7 @@ void Settings::PathsTab::update()
}
Settings::DiagnosticsTab::DiagnosticsTab(Settings *m_parent, SettingsDialog &m_dialog)
- : Settings::SettingsTab(m_parent, m_dialog)
+ : SettingsTab(m_parent, m_dialog)
, m_logLevelBox(m_dialog.findChild("logLevelBox"))
, m_dumpsTypeBox(m_dialog.findChild("dumpsTypeBox"))
, m_dumpsMaxEdit(m_dialog.findChild("dumpsMaxEdit"))
@@ -1036,7 +878,7 @@ void Settings::DiagnosticsTab::setLevelsBox()
}
Settings::NexusTab::NexusTab(Settings *parent, SettingsDialog &dialog)
- : Settings::SettingsTab(parent, dialog)
+ : SettingsTab(parent, dialog)
, m_offlineBox(dialog.findChild("offlineBox"))
, m_proxyBox(dialog.findChild("proxyBox"))
, m_knownServersList(dialog.findChild("knownServersList"))
@@ -1114,7 +956,7 @@ void Settings::NexusTab::update()
}
Settings::SteamTab::SteamTab(Settings *m_parent, SettingsDialog &m_dialog)
- : Settings::SettingsTab(m_parent, m_dialog)
+ : SettingsTab(m_parent, m_dialog)
, m_steamUserEdit(m_dialog.findChild("steamUserEdit"))
, m_steamPassEdit(m_dialog.findChild("steamPassEdit"))
{
@@ -1134,7 +976,7 @@ void Settings::SteamTab::update()
}
Settings::PluginsTab::PluginsTab(Settings *m_parent, SettingsDialog &m_dialog)
- : Settings::SettingsTab(m_parent, m_dialog)
+ : SettingsTab(m_parent, m_dialog)
, m_pluginsList(m_dialog.findChild("pluginsList"))
, m_pluginBlacklistList(m_dialog.findChild("pluginBlacklist"))
{
@@ -1181,7 +1023,7 @@ void Settings::PluginsTab::update()
Settings::WorkaroundsTab::WorkaroundsTab(Settings *m_parent,
SettingsDialog &m_dialog)
- : Settings::SettingsTab(m_parent, m_dialog)
+ : SettingsTab(m_parent, m_dialog)
, m_appIDEdit(m_dialog.findChild("appIDEdit"))
, m_mechanismBox(m_dialog.findChild("mechanismBox"))
, m_hideUncheckedBox(m_dialog.findChild("hideUncheckedBox"))
--
cgit v1.3.1
From 0a5ce34b1a80694fbfe6a4d6b4f032b9c11a5376 Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Sat, 20 Jul 2019 09:02:03 -0400
Subject: split paths tab
---
src/CMakeLists.txt | 3 +
src/settings.cpp | 81 +----------------
src/settings.h | 17 +---
src/settingsdialog.cpp | 113 ------------------------
src/settingsdialog.h | 14 ---
src/settingsdialogpaths.cpp | 205 ++++++++++++++++++++++++++++++++++++++++++++
src/settingsdialogpaths.h | 33 +++++++
7 files changed, 243 insertions(+), 223 deletions(-)
create mode 100644 src/settingsdialogpaths.cpp
create mode 100644 src/settingsdialogpaths.h
(limited to 'src/settings.cpp')
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 29c419b5..98d59996 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -38,6 +38,7 @@ SET(organizer_SRCS
singleinstance.cpp
settingsdialog.cpp
settingsdialoggeneral.cpp
+ settingsdialogpaths.cpp
settings.cpp
selfupdater.cpp
selectiondialog.cpp
@@ -153,6 +154,7 @@ SET(organizer_HDRS
singleinstance.h
settingsdialog.h
settingsdialoggeneral.h
+ settingsdialogpaths.h
settings.h
selfupdater.h
selectiondialog.h
@@ -434,6 +436,7 @@ set(settings
settings
settingsdialog
settingsdialoggeneral
+ settingsdialogpaths
)
set(utilities
diff --git a/src/settings.cpp b/src/settings.cpp
index 0911b155..bed8e789 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -23,6 +23,7 @@ along with Mod Organizer. If not, see .
#include "serverinfo.h"
#include "settingsdialog.h"
#include "settingsdialoggeneral.h"
+#include "settingsdialogpaths.h"
#include "versioninfo.h"
#include "appconfig.h"
#include "organizercore.h"
@@ -752,86 +753,6 @@ void Settings::query(PluginContainer *pluginContainer, QWidget *parent)
}
-Settings::PathsTab::PathsTab(Settings *parent, SettingsDialog &dialog)
- : SettingsTab(parent, dialog)
- , m_baseDirEdit(m_dialog.findChild("baseDirEdit"))
- , m_downloadDirEdit(m_dialog.findChild("downloadDirEdit"))
- , m_modDirEdit(m_dialog.findChild("modDirEdit"))
- , m_cacheDirEdit(m_dialog.findChild("cacheDirEdit"))
- , m_profilesDirEdit(m_dialog.findChild("profilesDirEdit"))
- , m_overwriteDirEdit(m_dialog.findChild("overwriteDirEdit"))
- , m_managedGameDirEdit(m_dialog.findChild("managedGameDirEdit"))
-{
- m_baseDirEdit->setText(m_parent->getBaseDirectory());
- m_managedGameDirEdit->setText(m_parent->m_GamePlugin->gameDirectory().absoluteFilePath(m_parent->m_GamePlugin->binaryName()));
- QString basePath = parent->getBaseDirectory();
- QDir baseDir(basePath);
- for (const auto &dir : {
- std::make_pair(m_downloadDirEdit, m_parent->getDownloadDirectory(false)),
- std::make_pair(m_modDirEdit, m_parent->getModDirectory(false)),
- std::make_pair(m_cacheDirEdit, m_parent->getCacheDirectory(false)),
- std::make_pair(m_profilesDirEdit, m_parent->getProfileDirectory(false)),
- std::make_pair(m_overwriteDirEdit, m_parent->getOverwriteDirectory(false))
- }) {
- QString storePath = baseDir.relativeFilePath(dir.second);
- storePath = dir.second;
- dir.first->setText(storePath);
- }
-}
-
-void Settings::PathsTab::update()
-{
- typedef std::tuple Directory;
-
- QString basePath = m_parent->getBaseDirectory();
-
- for (const Directory &dir :{
- Directory{m_downloadDirEdit->text(), "download_directory", AppConfig::downloadPath()},
- Directory{m_cacheDirEdit->text(), "cache_directory", AppConfig::cachePath()},
- Directory{m_modDirEdit->text(), "mod_directory", AppConfig::modsPath()},
- Directory{m_overwriteDirEdit->text(), "overwrite_directory", AppConfig::overwritePath()},
- Directory{m_profilesDirEdit->text(), "profiles_directory", AppConfig::profilesPath()}
- }) {
- QString path, settingsKey;
- std::wstring defaultName;
- std::tie(path, settingsKey, defaultName) = dir;
-
- settingsKey = QString("Settings/%1").arg(settingsKey);
-
- QString realPath = path;
- realPath.replace("%BASE_DIR%", m_baseDirEdit->text());
-
- if (!QDir(realPath).exists()) {
- if (!QDir().mkpath(realPath)) {
- QMessageBox::warning(qApp->activeWindow(), tr("Error"),
- tr("Failed to create \"%1\", you may not have the "
- "necessary permission. path remains unchanged.")
- .arg(realPath));
- }
- }
-
- if (QFileInfo(realPath)
- != QFileInfo(basePath + "/" + QString::fromStdWString(defaultName))) {
- m_Settings.setValue(settingsKey, path);
- } else {
- m_Settings.remove(settingsKey);
- }
- }
-
- if (QFileInfo(m_baseDirEdit->text()) !=
- QFileInfo(qApp->property("dataPath").toString())) {
- m_Settings.setValue("Settings/base_directory", m_baseDirEdit->text());
- } else {
- m_Settings.remove("Settings/base_directory");
- }
-
- QFileInfo oldGameExe(m_parent->m_GamePlugin->gameDirectory().absoluteFilePath(m_parent->m_GamePlugin->binaryName()));
- QFileInfo newGameExe(m_managedGameDirEdit->text());
- if (oldGameExe != newGameExe) {
- m_Settings.setValue("gamePath", newGameExe.absolutePath());
- }
-}
-
Settings::DiagnosticsTab::DiagnosticsTab(Settings *m_parent, SettingsDialog &m_dialog)
: SettingsTab(m_parent, m_dialog)
, m_logLevelBox(m_dialog.findChild("logLevelBox"))
diff --git a/src/settings.h b/src/settings.h
index e88080ba..6f75562b 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -427,6 +427,7 @@ public:
bool colorSeparatorScrollbar() const;
QSettings& settingsRef() { return m_Settings; }
+ MOBase::IPluginGame const *gamePlugin() { return m_GamePlugin; }
public slots:
@@ -443,22 +444,6 @@ private:
QString getConfigurablePath(const QString &key, const QString &def, bool resolve) const;
- class PathsTab : public SettingsTab
- {
- public:
- PathsTab(Settings *parent, SettingsDialog &dialog);
-
- void update();
-
- private:
- QLineEdit *m_baseDirEdit;
- QLineEdit *m_downloadDirEdit;
- QLineEdit *m_modDirEdit;
- QLineEdit *m_cacheDirEdit;
- QLineEdit *m_profilesDirEdit;
- QLineEdit *m_overwriteDirEdit;
- QLineEdit *m_managedGameDirEdit;
- };
class DiagnosticsTab : public SettingsTab
{
diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp
index f922cfb9..bfa285bf 100644
--- a/src/settingsdialog.cpp
+++ b/src/settingsdialog.cpp
@@ -200,80 +200,6 @@ void SettingsDialog::on_bsaDateBtn_clicked()
dir.absolutePath().toStdWString());
}
-void SettingsDialog::on_browseBaseDirBtn_clicked()
-{
- QString temp = QFileDialog::getExistingDirectory(
- this, tr("Select base directory"), ui->baseDirEdit->text());
- if (!temp.isEmpty()) {
- ui->baseDirEdit->setText(temp);
- }
-}
-
-void SettingsDialog::on_browseDownloadDirBtn_clicked()
-{
- QString searchPath = ui->downloadDirEdit->text();
- searchPath.replace("%BASE_DIR%", ui->baseDirEdit->text());
-
- QString temp = QFileDialog::getExistingDirectory(this, tr("Select download directory"), searchPath);
- if (!temp.isEmpty()) {
- ui->downloadDirEdit->setText(temp);
- }
-}
-
-void SettingsDialog::on_browseModDirBtn_clicked()
-{
- QString searchPath = ui->modDirEdit->text();
- searchPath.replace("%BASE_DIR%", ui->baseDirEdit->text());
-
- QString temp = QFileDialog::getExistingDirectory(this, tr("Select mod directory"), searchPath);
- if (!temp.isEmpty()) {
- ui->modDirEdit->setText(temp);
- }
-}
-
-void SettingsDialog::on_browseCacheDirBtn_clicked()
-{
- QString searchPath = ui->cacheDirEdit->text();
- searchPath.replace("%BASE_DIR%", ui->baseDirEdit->text());
-
- QString temp = QFileDialog::getExistingDirectory(this, tr("Select cache directory"), searchPath);
- if (!temp.isEmpty()) {
- ui->cacheDirEdit->setText(temp);
- }
-}
-
-void SettingsDialog::on_browseProfilesDirBtn_clicked()
-{
- QString searchPath = ui->profilesDirEdit->text();
- searchPath.replace("%BASE_DIR%", ui->baseDirEdit->text());
-
- QString temp = QFileDialog::getExistingDirectory(this, tr("Select profiles directory"), searchPath);
- if (!temp.isEmpty()) {
- ui->profilesDirEdit->setText(temp);
- }
-}
-
-void SettingsDialog::on_browseOverwriteDirBtn_clicked()
-{
- QString searchPath = ui->overwriteDirEdit->text();
- searchPath.replace("%BASE_DIR%", ui->baseDirEdit->text());
-
- QString temp = QFileDialog::getExistingDirectory(this, tr("Select overwrite directory"), searchPath);
- if (!temp.isEmpty()) {
- ui->overwriteDirEdit->setText(temp);
- }
-}
-
-void SettingsDialog::on_browseGameDirBtn_clicked()
-{
- QFileInfo oldGameExe(ui->managedGameDirEdit->text());
-
- QString temp = QFileDialog::getOpenFileName(this, tr("Select game executable"), oldGameExe.absolutePath(), oldGameExe.fileName());
- if (!temp.isEmpty()) {
- ui->managedGameDirEdit->setText(temp);
- }
-}
-
void SettingsDialog::on_nexusConnect_clicked()
{
if (m_nexusLogin && m_nexusLogin->isActive()) {
@@ -555,45 +481,6 @@ void SettingsDialog::on_clearCacheButton_clicked()
NexusInterface::instance(m_PluginContainer)->clearCache();
}
-void SettingsDialog::normalizePath(QLineEdit *lineEdit)
-{
- QString text = lineEdit->text();
- while (text.endsWith('/') || text.endsWith('\\')) {
- text.chop(1);
- }
- lineEdit->setText(text);
-}
-
-void SettingsDialog::on_baseDirEdit_editingFinished()
-{
- normalizePath(ui->baseDirEdit);
-}
-
-void SettingsDialog::on_downloadDirEdit_editingFinished()
-{
- normalizePath(ui->downloadDirEdit);
-}
-
-void SettingsDialog::on_modDirEdit_editingFinished()
-{
- normalizePath(ui->modDirEdit);
-}
-
-void SettingsDialog::on_cacheDirEdit_editingFinished()
-{
- normalizePath(ui->cacheDirEdit);
-}
-
-void SettingsDialog::on_profilesDirEdit_editingFinished()
-{
- normalizePath(ui->profilesDirEdit);
-}
-
-void SettingsDialog::on_overwriteDirEdit_editingFinished()
-{
- normalizePath(ui->overwriteDirEdit);
-}
-
void SettingsDialog::on_resetGeometryBtn_clicked()
{
m_GeometriesReset = true;
diff --git a/src/settingsdialog.h b/src/settingsdialog.h
index 01a0afa2..68e72529 100644
--- a/src/settingsdialog.h
+++ b/src/settingsdialog.h
@@ -67,7 +67,6 @@ signals:
private:
void storeSettings(QListWidgetItem *pluginItem);
- void normalizePath(QLineEdit *lineEdit);
public:
QString getExecutableBlacklist() { return m_ExecutableBlacklist; }
@@ -77,26 +76,13 @@ public:
private slots:
void on_associateButton_clicked();
- void on_baseDirEdit_editingFinished();
- void on_browseBaseDirBtn_clicked();
- void on_browseCacheDirBtn_clicked();
- void on_browseDownloadDirBtn_clicked();
- void on_browseGameDirBtn_clicked();
- void on_browseModDirBtn_clicked();
- void on_browseOverwriteDirBtn_clicked();
- void on_browseProfilesDirBtn_clicked();
void on_bsaDateBtn_clicked();
- void on_cacheDirEdit_editingFinished();
void on_clearCacheButton_clicked();
- void on_downloadDirEdit_editingFinished();
void on_execBlacklistBtn_clicked();
- void on_modDirEdit_editingFinished();
void on_nexusConnect_clicked();
void on_nexusDisconnect_clicked();
void on_nexusManualKey_clicked();
- void on_overwriteDirEdit_editingFinished();
void on_pluginsList_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
- void on_profilesDirEdit_editingFinished();
void on_resetGeometryBtn_clicked();
void deleteBlacklistItem();
diff --git a/src/settingsdialogpaths.cpp b/src/settingsdialogpaths.cpp
new file mode 100644
index 00000000..303d1562
--- /dev/null
+++ b/src/settingsdialogpaths.cpp
@@ -0,0 +1,205 @@
+#include "settingsdialogpaths.h"
+#include "ui_settingsdialog.h"
+#include "appconfig.h"
+#include
+
+PathsTab::PathsTab(Settings *parent, SettingsDialog &dialog)
+ : SettingsTab(parent, dialog)
+{
+ ui->baseDirEdit->setText(m_parent->getBaseDirectory());
+ ui->managedGameDirEdit->setText(m_parent->gamePlugin()->gameDirectory().absoluteFilePath(m_parent->gamePlugin()->binaryName()));
+ QString basePath = parent->getBaseDirectory();
+ QDir baseDir(basePath);
+ for (const auto &dir : {
+ std::make_pair(ui->downloadDirEdit, m_parent->getDownloadDirectory(false)),
+ std::make_pair(ui->modDirEdit, m_parent->getModDirectory(false)),
+ std::make_pair(ui->cacheDirEdit, m_parent->getCacheDirectory(false)),
+ std::make_pair(ui->profilesDirEdit, m_parent->getProfileDirectory(false)),
+ std::make_pair(ui->overwriteDirEdit, m_parent->getOverwriteDirectory(false))
+ }) {
+ QString storePath = baseDir.relativeFilePath(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->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 PathsTab::update()
+{
+ typedef std::tuple Directory;
+
+ QString basePath = m_parent->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()}
+ }) {
+ QString path, settingsKey;
+ std::wstring defaultName;
+ std::tie(path, settingsKey, defaultName) = dir;
+
+ settingsKey = QString("Settings/%1").arg(settingsKey);
+
+ QString realPath = path;
+ realPath.replace("%BASE_DIR%", ui->baseDirEdit->text());
+
+ if (!QDir(realPath).exists()) {
+ if (!QDir().mkpath(realPath)) {
+ QMessageBox::warning(qApp->activeWindow(), QObject::tr("Error"),
+ QObject::tr("Failed to create \"%1\", you may not have the "
+ "necessary permission. path remains unchanged.")
+ .arg(realPath));
+ }
+ }
+
+ if (QFileInfo(realPath)
+ != QFileInfo(basePath + "/" + QString::fromStdWString(defaultName))) {
+ m_Settings.setValue(settingsKey, path);
+ } else {
+ m_Settings.remove(settingsKey);
+ }
+ }
+
+ if (QFileInfo(ui->baseDirEdit->text()) !=
+ QFileInfo(qApp->property("dataPath").toString())) {
+ m_Settings.setValue("Settings/base_directory", ui->baseDirEdit->text());
+ } else {
+ m_Settings.remove("Settings/base_directory");
+ }
+
+ QFileInfo oldGameExe(m_parent->gamePlugin()->gameDirectory().absoluteFilePath(m_parent->gamePlugin()->binaryName()));
+ QFileInfo newGameExe(ui->managedGameDirEdit->text());
+ if (oldGameExe != newGameExe) {
+ m_Settings.setValue("gamePath", newGameExe.absolutePath());
+ }
+}
+
+void PathsTab::on_browseBaseDirBtn_clicked()
+{
+ QString temp = QFileDialog::getExistingDirectory(
+ parentWidget(), QObject::tr("Select base directory"), ui->baseDirEdit->text());
+ if (!temp.isEmpty()) {
+ ui->baseDirEdit->setText(temp);
+ }
+}
+
+void PathsTab::on_browseDownloadDirBtn_clicked()
+{
+ QString searchPath = ui->downloadDirEdit->text();
+ searchPath.replace("%BASE_DIR%", ui->baseDirEdit->text());
+
+ QString temp = QFileDialog::getExistingDirectory(parentWidget(), QObject::tr("Select download directory"), searchPath);
+ if (!temp.isEmpty()) {
+ ui->downloadDirEdit->setText(temp);
+ }
+}
+
+void PathsTab::on_browseModDirBtn_clicked()
+{
+ QString searchPath = ui->modDirEdit->text();
+ searchPath.replace("%BASE_DIR%", ui->baseDirEdit->text());
+
+ QString temp = QFileDialog::getExistingDirectory(parentWidget(), QObject::tr("Select mod directory"), searchPath);
+ if (!temp.isEmpty()) {
+ ui->modDirEdit->setText(temp);
+ }
+}
+
+void PathsTab::on_browseCacheDirBtn_clicked()
+{
+ QString searchPath = ui->cacheDirEdit->text();
+ searchPath.replace("%BASE_DIR%", ui->baseDirEdit->text());
+
+ QString temp = QFileDialog::getExistingDirectory(parentWidget(), QObject::tr("Select cache directory"), searchPath);
+ if (!temp.isEmpty()) {
+ ui->cacheDirEdit->setText(temp);
+ }
+}
+
+void PathsTab::on_browseProfilesDirBtn_clicked()
+{
+ QString searchPath = ui->profilesDirEdit->text();
+ searchPath.replace("%BASE_DIR%", ui->baseDirEdit->text());
+
+ QString temp = QFileDialog::getExistingDirectory(parentWidget(), QObject::tr("Select profiles directory"), searchPath);
+ if (!temp.isEmpty()) {
+ ui->profilesDirEdit->setText(temp);
+ }
+}
+
+void PathsTab::on_browseOverwriteDirBtn_clicked()
+{
+ QString searchPath = ui->overwriteDirEdit->text();
+ searchPath.replace("%BASE_DIR%", ui->baseDirEdit->text());
+
+ QString temp = QFileDialog::getExistingDirectory(parentWidget(), QObject::tr("Select overwrite directory"), searchPath);
+ if (!temp.isEmpty()) {
+ ui->overwriteDirEdit->setText(temp);
+ }
+}
+
+void PathsTab::on_browseGameDirBtn_clicked()
+{
+ QFileInfo oldGameExe(ui->managedGameDirEdit->text());
+
+ QString temp = QFileDialog::getOpenFileName(parentWidget(), QObject::tr("Select game executable"), oldGameExe.absolutePath(), oldGameExe.fileName());
+ if (!temp.isEmpty()) {
+ ui->managedGameDirEdit->setText(temp);
+ }
+}
+
+void PathsTab::on_baseDirEdit_editingFinished()
+{
+ normalizePath(ui->baseDirEdit);
+}
+
+void PathsTab::on_downloadDirEdit_editingFinished()
+{
+ normalizePath(ui->downloadDirEdit);
+}
+
+void PathsTab::on_modDirEdit_editingFinished()
+{
+ normalizePath(ui->modDirEdit);
+}
+
+void PathsTab::on_cacheDirEdit_editingFinished()
+{
+ normalizePath(ui->cacheDirEdit);
+}
+
+void PathsTab::on_profilesDirEdit_editingFinished()
+{
+ normalizePath(ui->profilesDirEdit);
+}
+
+void PathsTab::on_overwriteDirEdit_editingFinished()
+{
+ normalizePath(ui->overwriteDirEdit);
+}
+
+void PathsTab::normalizePath(QLineEdit *lineEdit)
+{
+ QString text = lineEdit->text();
+ while (text.endsWith('/') || text.endsWith('\\')) {
+ text.chop(1);
+ }
+ lineEdit->setText(text);
+}
diff --git a/src/settingsdialogpaths.h b/src/settingsdialogpaths.h
new file mode 100644
index 00000000..dac402b1
--- /dev/null
+++ b/src/settingsdialogpaths.h
@@ -0,0 +1,33 @@
+#ifndef SETTINGSDIALOGPATHS_H
+#define SETTINGSDIALOGPATHS_H
+
+#include "settings.h"
+#include "settingsdialog.h"
+
+class PathsTab : public SettingsTab
+{
+public:
+ PathsTab(Settings *parent, SettingsDialog &dialog);
+
+ void update();
+
+private:
+ void on_browseBaseDirBtn_clicked();
+ void on_browseCacheDirBtn_clicked();
+ void on_browseDownloadDirBtn_clicked();
+ void on_browseGameDirBtn_clicked();
+ void on_browseModDirBtn_clicked();
+ void on_browseOverwriteDirBtn_clicked();
+ void on_browseProfilesDirBtn_clicked();
+
+ void on_baseDirEdit_editingFinished();
+ void on_cacheDirEdit_editingFinished();
+ void on_downloadDirEdit_editingFinished();
+ void on_modDirEdit_editingFinished();
+ void on_overwriteDirEdit_editingFinished();
+ void on_profilesDirEdit_editingFinished();
+
+ void normalizePath(QLineEdit *lineEdit);
+};
+
+#endif // SETTINGSDIALOGPATHS_H
--
cgit v1.3.1
From af95b3b8637d28517f69a70f13b901cc7f43d121 Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Sat, 20 Jul 2019 09:31:38 -0400
Subject: renamed tab classes, clashing with mod info dialog split nexus tab
---
src/CMakeLists.txt | 3 +
src/settings.cpp | 114 +------------
src/settings.h | 16 --
src/settingsdialog.cpp | 278 +------------------------------
src/settingsdialog.h | 34 +---
src/settingsdialoggeneral.cpp | 30 ++--
src/settingsdialoggeneral.h | 4 +-
src/settingsdialognexus.cpp | 374 ++++++++++++++++++++++++++++++++++++++++++
src/settingsdialognexus.h | 40 +++++
src/settingsdialogpaths.cpp | 32 ++--
src/settingsdialogpaths.h | 4 +-
11 files changed, 460 insertions(+), 469 deletions(-)
create mode 100644 src/settingsdialognexus.cpp
create mode 100644 src/settingsdialognexus.h
(limited to 'src/settings.cpp')
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 98d59996..b2407e17 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -38,6 +38,7 @@ SET(organizer_SRCS
singleinstance.cpp
settingsdialog.cpp
settingsdialoggeneral.cpp
+ settingsdialognexus.cpp
settingsdialogpaths.cpp
settings.cpp
selfupdater.cpp
@@ -154,6 +155,7 @@ SET(organizer_HDRS
singleinstance.h
settingsdialog.h
settingsdialoggeneral.h
+ settingsdialognexus.h
settingsdialogpaths.h
settings.h
selfupdater.h
@@ -436,6 +438,7 @@ set(settings
settings
settingsdialog
settingsdialoggeneral
+ settingsdialognexus
settingsdialogpaths
)
diff --git a/src/settings.cpp b/src/settings.cpp
index bed8e789..bded470c 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -23,6 +23,7 @@ along with Mod Organizer. If not, see .
#include "serverinfo.h"
#include "settingsdialog.h"
#include "settingsdialoggeneral.h"
+#include "settingsdialognexus.h"
#include "settingsdialogpaths.h"
#include "versioninfo.h"
#include "appconfig.h"
@@ -69,19 +70,6 @@ along with Mod Organizer. If not, see .
using namespace MOBase;
-template
-class QListWidgetItemEx : public QListWidgetItem {
-public:
- QListWidgetItemEx(const QString &text, int sortRole = Qt::DisplayRole, QListWidget *parent = 0, int type = Type)
- : QListWidgetItem(text, parent, type), m_SortRole(sortRole) {}
-
- virtual bool operator< ( const QListWidgetItem & other ) const {
- return this->data(m_SortRole).value() < other.data(m_SortRole).value();
- }
-private:
- int m_SortRole;
-};
-
SettingsTab::SettingsTab(Settings *m_parent, SettingsDialog &m_dialog)
: m_parent(m_parent)
@@ -688,10 +676,10 @@ void Settings::query(PluginContainer *pluginContainer, QWidget *parent)
std::vector> tabs;
- tabs.push_back(std::unique_ptr(new GeneralTab(this, dialog)));
- tabs.push_back(std::unique_ptr(new PathsTab(this, dialog)));
+ tabs.push_back(std::unique_ptr(new GeneralSettingsTab(this, dialog)));
+ tabs.push_back(std::unique_ptr(new PathsSettingsTab(this, dialog)));
tabs.push_back(std::unique_ptr(new DiagnosticsTab(this, dialog)));
- tabs.push_back(std::unique_ptr(new NexusTab(this, dialog)));
+ tabs.push_back(std::unique_ptr(new NexusSettingsTab(this, dialog)));
tabs.push_back(std::unique_ptr(new SteamTab(this, dialog)));
tabs.push_back(std::unique_ptr(new PluginsTab(this, dialog)));
tabs.push_back(std::unique_ptr(new WorkaroundsTab(this, dialog)));
@@ -781,100 +769,6 @@ void Settings::DiagnosticsTab::update()
m_Settings.setValue("Settings/crash_dumps_max", m_dumpsMaxEdit->value());
}
-void Settings::DiagnosticsTab::setLevelsBox()
-{
- m_logLevelBox->clear();
-
- m_logLevelBox->addItem(tr("Debug"), log::Debug);
- m_logLevelBox->addItem(tr("Info (recommended)"), log::Info);
- m_logLevelBox->addItem(tr("Warning"), log::Warning);
- m_logLevelBox->addItem(tr("Error"), log::Error);
-
- for (int i=0; icount(); ++i) {
- if (m_logLevelBox->itemData(i) == m_parent->logLevel()) {
- m_logLevelBox->setCurrentIndex(i);
- break;
- }
- }
-}
-
-Settings::NexusTab::NexusTab(Settings *parent, SettingsDialog &dialog)
- : SettingsTab(parent, dialog)
- , m_offlineBox(dialog.findChild("offlineBox"))
- , m_proxyBox(dialog.findChild("proxyBox"))
- , m_knownServersList(dialog.findChild("knownServersList"))
- , m_preferredServersList(
- dialog.findChild("preferredServersList"))
- , m_endorsementBox(dialog.findChild("endorsementBox"))
- , m_hideAPICounterBox(dialog.findChild("hideAPICounterBox"))
-{
- m_offlineBox->setChecked(parent->offlineMode());
- m_proxyBox->setChecked(parent->useProxy());
- m_endorsementBox->setChecked(parent->endorsementIntegration());
- m_hideAPICounterBox->setChecked(parent->hideAPICounter());
-
- // display server preferences
- m_Settings.beginGroup("Servers");
- for (const QString &key : m_Settings.childKeys()) {
- QVariantMap val = m_Settings.value(key).toMap();
- QString descriptor = key;
- if (!descriptor.compare("CDN", Qt::CaseInsensitive)) {
- descriptor += QStringLiteral(" (automatic)");
- }
- if (val.contains("downloadSpeed") && val.contains("downloadCount") && (val["downloadCount"].toInt() > 0)) {
- int bps = static_cast(val["downloadSpeed"].toDouble() / val["downloadCount"].toInt());
- descriptor += QString(" (%1 kbps)").arg(bps / 1024);
- }
-
- QListWidgetItem *newItem = new QListWidgetItemEx(descriptor, Qt::UserRole + 1);
-
- newItem->setData(Qt::UserRole, key);
- newItem->setData(Qt::UserRole + 1, val["preferred"].toInt());
- if (val["preferred"].toInt() > 0) {
- m_preferredServersList->addItem(newItem);
- } else {
- m_knownServersList->addItem(newItem);
- }
- m_preferredServersList->sortItems(Qt::DescendingOrder);
- }
- m_Settings.endGroup();
-}
-
-void Settings::NexusTab::update()
-{
- /*
- if (m_loginCheckBox->isChecked()) {
- m_Settings.setValue("Settings/nexus_login", true);
- m_Settings.setValue("Settings/nexus_username", m_usernameEdit->text());
- m_Settings.setValue("Settings/nexus_password", obfuscate(m_passwordEdit->text()));
- } else {
- m_Settings.setValue("Settings/nexus_login", false);
- m_Settings.remove("Settings/nexus_username");
- m_Settings.remove("Settings/nexus_password");
- }
- */
- m_Settings.setValue("Settings/offline_mode", m_offlineBox->isChecked());
- m_Settings.setValue("Settings/use_proxy", m_proxyBox->isChecked());
- m_Settings.setValue("Settings/endorsement_integration", m_endorsementBox->isChecked());
- m_Settings.setValue("Settings/hide_api_counter", m_hideAPICounterBox->isChecked());
-
- // store server preference
- m_Settings.beginGroup("Servers");
- for (int i = 0; i < m_knownServersList->count(); ++i) {
- QString key = m_knownServersList->item(i)->data(Qt::UserRole).toString();
- QVariantMap val = m_Settings.value(key).toMap();
- val["preferred"] = 0;
- m_Settings.setValue(key, val);
- }
- int count = m_preferredServersList->count();
- for (int i = 0; i < count; ++i) {
- QString key = m_preferredServersList->item(i)->data(Qt::UserRole).toString();
- QVariantMap val = m_Settings.value(key).toMap();
- val["preferred"] = count - i;
- m_Settings.setValue(key, val);
- }
- m_Settings.endGroup();
-}
Settings::SteamTab::SteamTab(Settings *m_parent, SettingsDialog &m_dialog)
: SettingsTab(m_parent, m_dialog)
diff --git a/src/settings.h b/src/settings.h
index 6f75562b..b9383ce4 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -461,22 +461,6 @@ private:
void setLevelsBox();
};
- /** Display/store the configuration in the 'nexus' tab of the settings dialogue */
- class NexusTab : public SettingsTab
- {
- public:
- NexusTab(Settings *m_parent, SettingsDialog &m_dialog);
- void update();
-
- private:
- QCheckBox *m_offlineBox;
- QCheckBox *m_proxyBox;
- QListWidget *m_knownServersList;
- QListWidget *m_preferredServersList;
- QCheckBox *m_endorsementBox;
- QCheckBox *m_hideAPICounterBox;
- };
-
/** Display/store the configuration in the 'steam' tab of the settings dialogue */
class SteamTab : public SettingsTab
{
diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp
index bfa285bf..6d5a8cc0 100644
--- a/src/settingsdialog.cpp
+++ b/src/settingsdialog.cpp
@@ -20,7 +20,6 @@ along with Mod Organizer. If not, see .
#include "settingsdialog.h"
#include "ui_settingsdialog.h"
-#include "ui_nexusmanualkey.h"
#include "categoriesdialog.h"
#include "helper.h"
#include "noeditdelegate.h"
@@ -48,62 +47,14 @@ along with Mod Organizer. If not, see .
using namespace MOBase;
-class NexusManualKeyDialog : public QDialog
-{
-public:
- NexusManualKeyDialog(QWidget* parent)
- : QDialog(parent), ui(new Ui::NexusManualKeyDialog)
- {
- ui->setupUi(this);
- ui->key->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont));
-
- connect(ui->openBrowser, &QPushButton::clicked, [&]{ openBrowser(); });
- connect(ui->paste, &QPushButton::clicked, [&]{ paste(); });
- connect(ui->clear, &QPushButton::clicked, [&]{ clear(); });
- }
-
- void accept() override
- {
- m_key = ui->key->toPlainText();
- QDialog::accept();
- }
-
- const QString& key() const
- {
- return m_key;
- }
-
- void openBrowser()
- {
- shell::OpenLink(QUrl("https://www.nexusmods.com/users/myaccount?tab=api"));
- }
-
- void paste()
- {
- const auto text = QApplication::clipboard()->text();
- if (!text.isEmpty()) {
- ui->key->setPlainText(text);
- }
- }
-
- void clear()
- {
- ui->key->clear();
- }
-
-private:
- std::unique_ptr ui;
- QString m_key;
-};
-
SettingsDialog::SettingsDialog(PluginContainer *pluginContainer, Settings* settings, QWidget *parent)
: TutorableDialog("SettingsDialog", parent)
, ui(new Ui::SettingsDialog)
, m_settings(settings)
, m_PluginContainer(pluginContainer)
- , m_keyChanged(false)
, m_GeometriesReset(false)
+ , m_keyChanged(false)
{
ui->setupUi(this);
ui->pluginSettingsList->setStyleSheet("QTreeWidget::item {padding-right: 10px;}");
@@ -111,8 +62,6 @@ SettingsDialog::SettingsDialog(PluginContainer *pluginContainer, Settings* setti
QShortcut *delShortcut = new QShortcut(
QKeySequence(Qt::Key_Delete), ui->pluginBlacklist);
connect(delShortcut, SIGNAL(activated()), this, SLOT(deleteBlacklistItem()));
-
- updateNexusState();
}
SettingsDialog::~SettingsDialog()
@@ -200,220 +149,6 @@ void SettingsDialog::on_bsaDateBtn_clicked()
dir.absolutePath().toStdWString());
}
-void SettingsDialog::on_nexusConnect_clicked()
-{
- if (m_nexusLogin && m_nexusLogin->isActive()) {
- m_nexusLogin->cancel();
- return;
- }
-
- if (!m_nexusLogin) {
- m_nexusLogin.reset(new NexusSSOLogin);
-
- m_nexusLogin->keyChanged = [&](auto&& s){
- onSSOKeyChanged(s);
- };
-
- m_nexusLogin->stateChanged = [&](auto&& s, auto&& e){
- onSSOStateChanged(s, e);
- };
- }
-
- ui->nexusLog->clear();
- m_nexusLogin->start();
- updateNexusState();
-}
-
-void SettingsDialog::on_nexusManualKey_clicked()
-{
- if (m_nexusValidator && m_nexusValidator->isActive()) {
- m_nexusValidator->cancel();
- return;
- }
-
- NexusManualKeyDialog dialog(this);
- if (dialog.exec() != QDialog::Accepted) {
- return;
- }
-
- const auto key = dialog.key();
- if (key.isEmpty()) {
- clearKey();
- return;
- }
-
- ui->nexusLog->clear();
- validateKey(key);
-}
-
-void SettingsDialog::on_nexusDisconnect_clicked()
-{
- clearKey();
- ui->nexusLog->clear();
- addNexusLog(tr("Disconnected."));
-}
-
-void SettingsDialog::validateKey(const QString& key)
-{
- if (!m_nexusValidator) {
- m_nexusValidator.reset(new NexusKeyValidator(
- *NexusInterface::instance(m_PluginContainer)->getAccessManager()));
-
- m_nexusValidator->stateChanged = [&](auto&& s, auto&& e){
- onValidatorStateChanged(s, e);
- };
-
- m_nexusValidator->finished = [&](auto&& user) {
- onValidatorFinished(user);
- };
- }
-
- addNexusLog(tr("Checking API key..."));
- m_nexusValidator->start(key);
-}
-
-void SettingsDialog::onSSOKeyChanged(const QString& key)
-{
- if (key.isEmpty()) {
- clearKey();
- } else {
- addNexusLog(tr("Received API key."));
- validateKey(key);
- }
-}
-
-void SettingsDialog::onSSOStateChanged(NexusSSOLogin::States s, const QString& e)
-{
- if (s != NexusSSOLogin::Finished) {
- // finished state is handled in onSSOKeyChanged()
- const auto log = NexusSSOLogin::stateToString(s, e);
-
- for (auto&& line : log.split("\n")) {
- addNexusLog(line);
- }
- }
-
- updateNexusState();
-}
-
-void SettingsDialog::onValidatorStateChanged(
- NexusKeyValidator::States s, const QString& e)
-{
- if (s != NexusKeyValidator::Finished) {
- // finished state is handled in onValidatorFinished()
- const auto log = NexusKeyValidator::stateToString(s, e);
-
- for (auto&& line : log.split("\n")) {
- addNexusLog(line);
- }
- }
-
- updateNexusState();
-}
-
-void SettingsDialog::onValidatorFinished(const APIUserAccount& user)
-{
- NexusInterface::instance(m_PluginContainer)->setUserAccount(user);
-
- if (!user.apiKey().isEmpty()) {
- if (setKey(user.apiKey())) {
- addNexusLog(tr("Linked with Nexus successfully."));
- }
- }
-}
-
-void SettingsDialog::addNexusLog(const QString& s)
-{
- ui->nexusLog->addItem(s);
- ui->nexusLog->scrollToBottom();
-}
-
-bool SettingsDialog::setKey(const QString& key)
-{
- m_keyChanged = true;
- const bool ret = m_settings->setNexusApiKey(key);
- updateNexusState();
- return ret;
-}
-
-bool SettingsDialog::clearKey()
-{
- m_keyChanged = true;
- const auto ret = m_settings->clearNexusApiKey();
-
- NexusInterface::instance(m_PluginContainer)->getAccessManager()->clearApiKey();
- updateNexusState();
-
- return ret;
-}
-
-void SettingsDialog::updateNexusState()
-{
- updateNexusButtons();
- updateNexusData();
-}
-
-void SettingsDialog::updateNexusButtons()
-{
- if (m_nexusLogin && m_nexusLogin->isActive()) {
- // api key is in the process of being retrieved
- ui->nexusConnect->setText(tr("Cancel"));
- ui->nexusConnect->setEnabled(true);
- ui->nexusDisconnect->setEnabled(false);
- ui->nexusManualKey->setText(tr("Enter API Key Manually"));
- ui->nexusManualKey->setEnabled(false);
- }
- else if (m_nexusValidator && m_nexusValidator->isActive()) {
- // api key is in the process of being tested
- ui->nexusConnect->setText(tr("Connect to Nexus"));
- ui->nexusConnect->setEnabled(false);
- ui->nexusDisconnect->setEnabled(false);
- ui->nexusManualKey->setText(tr("Cancel"));
- ui->nexusManualKey->setEnabled(true);
- }
- else if (m_settings->hasNexusApiKey()) {
- // api key is present
- ui->nexusConnect->setText(tr("Connect to Nexus"));
- ui->nexusConnect->setEnabled(false);
- ui->nexusDisconnect->setEnabled(true);
- ui->nexusManualKey->setText(tr("Enter API Key Manually"));
- ui->nexusManualKey->setEnabled(false);
- } else {
- // api key not present
- ui->nexusConnect->setText(tr("Connect to Nexus"));
- ui->nexusConnect->setEnabled(true);
- ui->nexusDisconnect->setEnabled(false);
- ui->nexusManualKey->setText(tr("Enter API Key Manually"));
- ui->nexusManualKey->setEnabled(true);
- }
-}
-
-void SettingsDialog::updateNexusData()
-{
- const auto user = NexusInterface::instance(m_PluginContainer)
- ->getAPIUserAccount();
-
- if (user.isValid()) {
- ui->nexusUserID->setText(user.id());
- ui->nexusName->setText(user.name());
- ui->nexusAccount->setText(localizedUserAccountType(user.type()));
-
- ui->nexusDailyRequests->setText(QString("%1/%2")
- .arg(user.limits().remainingDailyRequests)
- .arg(user.limits().maxDailyRequests));
-
- ui->nexusHourlyRequests->setText(QString("%1/%2")
- .arg(user.limits().remainingHourlyRequests)
- .arg(user.limits().maxHourlyRequests));
- } else {
- ui->nexusUserID->setText(tr("N/A"));
- ui->nexusName->setText(tr("N/A"));
- ui->nexusAccount->setText(tr("N/A"));
- ui->nexusDailyRequests->setText(tr("N/A"));
- ui->nexusHourlyRequests->setText(tr("N/A"));
- }
-}
-
void SettingsDialog::storeSettings(QListWidgetItem *pluginItem)
{
if (pluginItem != nullptr) {
@@ -470,17 +205,6 @@ void SettingsDialog::deleteBlacklistItem()
ui->pluginBlacklist->takeItem(ui->pluginBlacklist->currentIndex().row());
}
-void SettingsDialog::on_associateButton_clicked()
-{
- Settings::instance().registerAsNXMHandler(true);
-}
-
-void SettingsDialog::on_clearCacheButton_clicked()
-{
- QDir(Settings::instance().getCacheDirectory()).removeRecursively();
- NexusInterface::instance(m_PluginContainer)->clearCache();
-}
-
void SettingsDialog::on_resetGeometryBtn_clicked()
{
m_GeometriesReset = true;
diff --git a/src/settingsdialog.h b/src/settingsdialog.h
index 68e72529..df5d0ad8 100644
--- a/src/settingsdialog.h
+++ b/src/settingsdialog.h
@@ -54,18 +54,15 @@ public:
*/
QString getColoredButtonStyleSheet() const;
+ // temp
Ui::SettingsDialog *ui;
+ bool m_keyChanged;
+ PluginContainer *m_PluginContainer;
public slots:
-
virtual void accept();
-signals:
-
- void retryApiConnection();
-
private:
-
void storeSettings(QListWidgetItem *pluginItem);
public:
@@ -75,13 +72,8 @@ public:
bool getApiKeyChanged();
private slots:
- void on_associateButton_clicked();
void on_bsaDateBtn_clicked();
- void on_clearCacheButton_clicked();
void on_execBlacklistBtn_clicked();
- void on_nexusConnect_clicked();
- void on_nexusDisconnect_clicked();
- void on_nexusManualKey_clicked();
void on_pluginsList_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
void on_resetGeometryBtn_clicked();
@@ -89,30 +81,10 @@ private slots:
private:
Settings* m_settings;
- PluginContainer *m_PluginContainer;
bool m_GeometriesReset;
- bool m_keyChanged;
QString m_ExecutableBlacklist;
- std::unique_ptr m_nexusLogin;
- std::unique_ptr m_nexusValidator;
-
- void validateKey(const QString& key);
- bool setKey(const QString& key);
- bool clearKey();
-
- void updateNexusState();
- void updateNexusButtons();
- void updateNexusData();
-
- void onSSOKeyChanged(const QString& key);
- void onSSOStateChanged(NexusSSOLogin::States s, const QString& e);
-
- void onValidatorStateChanged(NexusKeyValidator::States s, const QString& e);
- void onValidatorFinished(const APIUserAccount& user);
-
- void addNexusLog(const QString& s);
};
#endif // SETTINGSDIALOG_H
diff --git a/src/settingsdialoggeneral.cpp b/src/settingsdialoggeneral.cpp
index b22b04fd..cd98dfdc 100644
--- a/src/settingsdialoggeneral.cpp
+++ b/src/settingsdialoggeneral.cpp
@@ -6,7 +6,7 @@
using MOBase::QuestionBoxMemory;
-GeneralTab::GeneralTab(Settings *m_parent, SettingsDialog &m_dialog)
+GeneralSettingsTab::GeneralSettingsTab(Settings *m_parent, SettingsDialog &m_dialog)
: SettingsTab(m_parent, m_dialog)
{
addLanguages();
@@ -87,7 +87,7 @@ GeneralTab::GeneralTab(Settings *m_parent, SettingsDialog &m_dialog)
QObject::connect(ui->resetDialogsButton, &QPushButton::clicked, [&]{ on_resetDialogsButton_clicked(); });
}
-void GeneralTab::update()
+void GeneralSettingsTab::update()
{
QString oldLanguage = m_parent->language();
QString newLanguage = ui->languageBox->itemData(ui->languageBox->currentIndex()).toString();
@@ -115,7 +115,7 @@ void GeneralTab::update()
m_Settings.setValue("Settings/colorSeparatorScrollbars", ui->colorSeparatorsBox->isChecked());
}
-void GeneralTab::addLanguages()
+void GeneralSettingsTab::addLanguages()
{
std::vector> languages;
@@ -150,7 +150,7 @@ void GeneralTab::addLanguages()
}
}
-void GeneralTab::addStyles()
+void GeneralSettingsTab::addStyles()
{
ui->styleBox->addItem("None", "");
ui->styleBox->addItem("Fusion", "Fusion");
@@ -163,12 +163,12 @@ void GeneralTab::addStyles()
}
}
-void GeneralTab::resetDialogs()
+void GeneralSettingsTab::resetDialogs()
{
QuestionBoxMemory::resetDialogs();
}
-void GeneralTab::setButtonColor(QPushButton *button, const QColor &color)
+void GeneralSettingsTab::setButtonColor(QPushButton *button, const QColor &color)
{
button->setStyleSheet(
QString("QPushButton {"
@@ -185,7 +185,7 @@ void GeneralTab::setButtonColor(QPushButton *button, const QColor &color)
);
};
-void GeneralTab::on_containsBtn_clicked()
+void GeneralSettingsTab::on_containsBtn_clicked()
{
QColor result = QColorDialog::getColor(m_ContainsColor, parentWidget(), "Color Picker: Mod contains selected plugin", QColorDialog::ShowAlphaChannel);
if (result.isValid()) {
@@ -194,7 +194,7 @@ void GeneralTab::on_containsBtn_clicked()
}
}
-void GeneralTab::on_containedBtn_clicked()
+void GeneralSettingsTab::on_containedBtn_clicked()
{
QColor result = QColorDialog::getColor(m_ContainedColor, parentWidget(), "ColorPicker: Plugin is Contained in selected Mod", QColorDialog::ShowAlphaChannel);
if (result.isValid()) {
@@ -203,7 +203,7 @@ void GeneralTab::on_containedBtn_clicked()
}
}
-void GeneralTab::on_overwrittenBtn_clicked()
+void GeneralSettingsTab::on_overwrittenBtn_clicked()
{
QColor result = QColorDialog::getColor(m_OverwrittenColor, parentWidget(), "ColorPicker: Is overwritten (loose files)", QColorDialog::ShowAlphaChannel);
if (result.isValid()) {
@@ -212,7 +212,7 @@ void GeneralTab::on_overwrittenBtn_clicked()
}
}
-void GeneralTab::on_overwritingBtn_clicked()
+void GeneralSettingsTab::on_overwritingBtn_clicked()
{
QColor result = QColorDialog::getColor(m_OverwritingColor, parentWidget(), "ColorPicker: Is overwriting (loose files)", QColorDialog::ShowAlphaChannel);
if (result.isValid()) {
@@ -221,7 +221,7 @@ void GeneralTab::on_overwritingBtn_clicked()
}
}
-void GeneralTab::on_overwrittenArchiveBtn_clicked()
+void GeneralSettingsTab::on_overwrittenArchiveBtn_clicked()
{
QColor result = QColorDialog::getColor(m_OverwrittenArchiveColor, parentWidget(), "ColorPicker: Is overwritten (archive files)", QColorDialog::ShowAlphaChannel);
if (result.isValid()) {
@@ -230,7 +230,7 @@ void GeneralTab::on_overwrittenArchiveBtn_clicked()
}
}
-void GeneralTab::on_overwritingArchiveBtn_clicked()
+void GeneralSettingsTab::on_overwritingArchiveBtn_clicked()
{
QColor result = QColorDialog::getColor(m_OverwritingArchiveColor, parentWidget(), "ColorPicker: Is overwriting (archive files)", QColorDialog::ShowAlphaChannel);
if (result.isValid()) {
@@ -239,7 +239,7 @@ void GeneralTab::on_overwritingArchiveBtn_clicked()
}
}
-void GeneralTab::on_resetColorsBtn_clicked()
+void GeneralSettingsTab::on_resetColorsBtn_clicked()
{
m_OverwritingColor = QColor(255, 0, 0, 64);
m_OverwrittenColor = QColor(0, 255, 0, 64);
@@ -256,7 +256,7 @@ void GeneralTab::on_resetColorsBtn_clicked()
setButtonColor(ui->containedBtn, m_ContainedColor);
}
-void GeneralTab::on_resetDialogsButton_clicked()
+void GeneralSettingsTab::on_resetDialogsButton_clicked()
{
if (QMessageBox::question(parentWidget(), QObject::tr("Confirm?"),
QObject::tr("This will make all dialogs show up again where you checked the \"Remember selection\"-box. Continue?"),
@@ -265,7 +265,7 @@ void GeneralTab::on_resetDialogsButton_clicked()
}
}
-void GeneralTab::on_categoriesBtn_clicked()
+void GeneralSettingsTab::on_categoriesBtn_clicked()
{
CategoriesDialog dialog(parentWidget());
if (dialog.exec() == QDialog::Accepted) {
diff --git a/src/settingsdialoggeneral.h b/src/settingsdialoggeneral.h
index 1f1b4637..c7fcae36 100644
--- a/src/settingsdialoggeneral.h
+++ b/src/settingsdialoggeneral.h
@@ -4,10 +4,10 @@
#include "settingsdialog.h"
#include "settings.h"
-class GeneralTab : public SettingsTab
+class GeneralSettingsTab : public SettingsTab
{
public:
- GeneralTab(Settings *m_parent, SettingsDialog &m_dialog);
+ GeneralSettingsTab(Settings *m_parent, SettingsDialog &m_dialog);
void update();
diff --git a/src/settingsdialognexus.cpp b/src/settingsdialognexus.cpp
new file mode 100644
index 00000000..7d4414fd
--- /dev/null
+++ b/src/settingsdialognexus.cpp
@@ -0,0 +1,374 @@
+#include "settingsdialognexus.h"
+#include "ui_settingsdialog.h"
+#include "ui_nexusmanualkey.h"
+#include "nexusinterface.h"
+#include
+
+namespace shell = MOBase::shell;
+
+template
+class ServerItem : public QListWidgetItem {
+public:
+ ServerItem(const QString &text, int sortRole = Qt::DisplayRole, QListWidget *parent = 0, int type = Type)
+ : QListWidgetItem(text, parent, type), m_SortRole(sortRole) {}
+
+ virtual bool operator< ( const QListWidgetItem & other ) const {
+ return this->data(m_SortRole).value() < other.data(m_SortRole).value();
+ }
+private:
+ int m_SortRole;
+};
+
+
+class NexusManualKeyDialog : public QDialog
+{
+public:
+ NexusManualKeyDialog(QWidget* parent)
+ : QDialog(parent), ui(new Ui::NexusManualKeyDialog)
+ {
+ ui->setupUi(this);
+ ui->key->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont));
+
+ connect(ui->openBrowser, &QPushButton::clicked, [&]{ openBrowser(); });
+ connect(ui->paste, &QPushButton::clicked, [&]{ paste(); });
+ connect(ui->clear, &QPushButton::clicked, [&]{ clear(); });
+ }
+
+ void accept() override
+ {
+ m_key = ui->key->toPlainText();
+ QDialog::accept();
+ }
+
+ const QString& key() const
+ {
+ return m_key;
+ }
+
+ void openBrowser()
+ {
+ shell::OpenLink(QUrl("https://www.nexusmods.com/users/myaccount?tab=api"));
+ }
+
+ void paste()
+ {
+ const auto text = QApplication::clipboard()->text();
+ if (!text.isEmpty()) {
+ ui->key->setPlainText(text);
+ }
+ }
+
+ void clear()
+ {
+ ui->key->clear();
+ }
+
+private:
+ std::unique_ptr ui;
+ QString m_key;
+};
+
+
+NexusSettingsTab::NexusSettingsTab(Settings *parent, SettingsDialog &dialog)
+ : SettingsTab(parent, dialog)
+{
+ ui->offlineBox->setChecked(parent->offlineMode());
+ ui->proxyBox->setChecked(parent->useProxy());
+ ui->endorsementBox->setChecked(parent->endorsementIntegration());
+ ui->hideAPICounterBox->setChecked(parent->hideAPICounter());
+
+ // display server preferences
+ m_Settings.beginGroup("Servers");
+ for (const QString &key : m_Settings.childKeys()) {
+ QVariantMap val = m_Settings.value(key).toMap();
+ QString descriptor = key;
+ if (!descriptor.compare("CDN", Qt::CaseInsensitive)) {
+ descriptor += QStringLiteral(" (automatic)");
+ }
+ if (val.contains("downloadSpeed") && val.contains("downloadCount") && (val["downloadCount"].toInt() > 0)) {
+ int bps = static_cast(val["downloadSpeed"].toDouble() / val["downloadCount"].toInt());
+ descriptor += QString(" (%1 kbps)").arg(bps / 1024);
+ }
+
+ QListWidgetItem *newItem = new ServerItem(descriptor, Qt::UserRole + 1);
+
+ newItem->setData(Qt::UserRole, key);
+ newItem->setData(Qt::UserRole + 1, val["preferred"].toInt());
+ if (val["preferred"].toInt() > 0) {
+ ui->preferredServersList->addItem(newItem);
+ } else {
+ ui->knownServersList->addItem(newItem);
+ }
+ ui->preferredServersList->sortItems(Qt::DescendingOrder);
+ }
+ m_Settings.endGroup();
+
+ QObject::connect(ui->nexusConnect, &QPushButton::clicked, [&]{ on_nexusConnect_clicked(); });
+ QObject::connect(ui->nexusManualKey, &QPushButton::clicked, [&]{ on_nexusManualKey_clicked(); });
+ QObject::connect(ui->nexusDisconnect, &QPushButton::clicked, [&]{ on_nexusDisconnect_clicked(); });
+ QObject::connect(ui->clearCacheButton, &QPushButton::clicked, [&]{ on_clearCacheButton_clicked(); });
+ QObject::connect(ui->associateButton, &QPushButton::clicked, [&]{ on_associateButton_clicked(); });
+
+ updateNexusState();
+}
+
+void NexusSettingsTab::update()
+{
+ /*
+ if (m_loginCheckBox->isChecked()) {
+ m_Settings.setValue("Settings/nexus_login", true);
+ m_Settings.setValue("Settings/nexus_username", m_usernameEdit->text());
+ m_Settings.setValue("Settings/nexus_password", obfuscate(m_passwordEdit->text()));
+ } else {
+ m_Settings.setValue("Settings/nexus_login", false);
+ m_Settings.remove("Settings/nexus_username");
+ m_Settings.remove("Settings/nexus_password");
+ }
+ */
+ m_Settings.setValue("Settings/offline_mode", ui->offlineBox->isChecked());
+ m_Settings.setValue("Settings/use_proxy", ui->proxyBox->isChecked());
+ m_Settings.setValue("Settings/endorsement_integration", ui->endorsementBox->isChecked());
+ m_Settings.setValue("Settings/hide_api_counter", ui->hideAPICounterBox->isChecked());
+
+ // store server preference
+ m_Settings.beginGroup("Servers");
+ for (int i = 0; i < ui->knownServersList->count(); ++i) {
+ QString key = ui->knownServersList->item(i)->data(Qt::UserRole).toString();
+ QVariantMap val = m_Settings.value(key).toMap();
+ val["preferred"] = 0;
+ m_Settings.setValue(key, val);
+ }
+ int count = ui->preferredServersList->count();
+ for (int i = 0; i < count; ++i) {
+ QString key = ui->preferredServersList->item(i)->data(Qt::UserRole).toString();
+ QVariantMap val = m_Settings.value(key).toMap();
+ val["preferred"] = count - i;
+ m_Settings.setValue(key, val);
+ }
+ m_Settings.endGroup();
+}
+
+void NexusSettingsTab::on_nexusConnect_clicked()
+{
+ if (m_nexusLogin && m_nexusLogin->isActive()) {
+ m_nexusLogin->cancel();
+ return;
+ }
+
+ if (!m_nexusLogin) {
+ m_nexusLogin.reset(new NexusSSOLogin);
+
+ m_nexusLogin->keyChanged = [&](auto&& s){
+ onSSOKeyChanged(s);
+ };
+
+ m_nexusLogin->stateChanged = [&](auto&& s, auto&& e){
+ onSSOStateChanged(s, e);
+ };
+ }
+
+ ui->nexusLog->clear();
+ m_nexusLogin->start();
+ updateNexusState();
+}
+
+void NexusSettingsTab::on_nexusManualKey_clicked()
+{
+ if (m_nexusValidator && m_nexusValidator->isActive()) {
+ m_nexusValidator->cancel();
+ return;
+ }
+
+ NexusManualKeyDialog dialog(parentWidget());
+ if (dialog.exec() != QDialog::Accepted) {
+ return;
+ }
+
+ const auto key = dialog.key();
+ if (key.isEmpty()) {
+ clearKey();
+ return;
+ }
+
+ ui->nexusLog->clear();
+ validateKey(key);
+}
+
+void NexusSettingsTab::on_nexusDisconnect_clicked()
+{
+ clearKey();
+ ui->nexusLog->clear();
+ addNexusLog(QObject::tr("Disconnected."));
+}
+
+void NexusSettingsTab::on_clearCacheButton_clicked()
+{
+ QDir(Settings::instance().getCacheDirectory()).removeRecursively();
+ NexusInterface::instance(m_dialog.m_PluginContainer)->clearCache();
+}
+
+void NexusSettingsTab::on_associateButton_clicked()
+{
+ Settings::instance().registerAsNXMHandler(true);
+}
+
+void NexusSettingsTab::validateKey(const QString& key)
+{
+ if (!m_nexusValidator) {
+ m_nexusValidator.reset(new NexusKeyValidator(
+ *NexusInterface::instance(m_dialog.m_PluginContainer)->getAccessManager()));
+
+ m_nexusValidator->stateChanged = [&](auto&& s, auto&& e){
+ onValidatorStateChanged(s, e);
+ };
+
+ m_nexusValidator->finished = [&](auto&& user) {
+ onValidatorFinished(user);
+ };
+ }
+
+ addNexusLog(QObject::tr("Checking API key..."));
+ m_nexusValidator->start(key);
+}
+
+void NexusSettingsTab::onSSOKeyChanged(const QString& key)
+{
+ if (key.isEmpty()) {
+ clearKey();
+ } else {
+ addNexusLog(QObject::tr("Received API key."));
+ validateKey(key);
+ }
+}
+
+void NexusSettingsTab::onSSOStateChanged(NexusSSOLogin::States s, const QString& e)
+{
+ if (s != NexusSSOLogin::Finished) {
+ // finished state is handled in onSSOKeyChanged()
+ const auto log = NexusSSOLogin::stateToString(s, e);
+
+ for (auto&& line : log.split("\n")) {
+ addNexusLog(line);
+ }
+ }
+
+ updateNexusState();
+}
+
+void NexusSettingsTab::onValidatorStateChanged(
+ NexusKeyValidator::States s, const QString& e)
+{
+ if (s != NexusKeyValidator::Finished) {
+ // finished state is handled in onValidatorFinished()
+ const auto log = NexusKeyValidator::stateToString(s, e);
+
+ for (auto&& line : log.split("\n")) {
+ addNexusLog(line);
+ }
+ }
+
+ updateNexusState();
+}
+
+void NexusSettingsTab::onValidatorFinished(const APIUserAccount& user)
+{
+ NexusInterface::instance(m_dialog.m_PluginContainer)->setUserAccount(user);
+
+ if (!user.apiKey().isEmpty()) {
+ if (setKey(user.apiKey())) {
+ addNexusLog(QObject::tr("Linked with Nexus successfully."));
+ }
+ }
+}
+
+void NexusSettingsTab::addNexusLog(const QString& s)
+{
+ ui->nexusLog->addItem(s);
+ ui->nexusLog->scrollToBottom();
+}
+
+bool NexusSettingsTab::setKey(const QString& key)
+{
+ m_dialog.m_keyChanged = true;
+ const bool ret = m_parent->setNexusApiKey(key);
+ updateNexusState();
+ return ret;
+}
+
+bool NexusSettingsTab::clearKey()
+{
+ m_dialog.m_keyChanged = true;
+ const auto ret = m_parent->clearNexusApiKey();
+
+ NexusInterface::instance(m_dialog.m_PluginContainer)->getAccessManager()->clearApiKey();
+ updateNexusState();
+
+ return ret;
+}
+
+void NexusSettingsTab::updateNexusState()
+{
+ updateNexusButtons();
+ updateNexusData();
+}
+
+void NexusSettingsTab::updateNexusButtons()
+{
+ if (m_nexusLogin && m_nexusLogin->isActive()) {
+ // api key is in the process of being retrieved
+ ui->nexusConnect->setText(QObject::tr("Cancel"));
+ ui->nexusConnect->setEnabled(true);
+ ui->nexusDisconnect->setEnabled(false);
+ ui->nexusManualKey->setText(QObject::tr("Enter API Key Manually"));
+ ui->nexusManualKey->setEnabled(false);
+ }
+ else if (m_nexusValidator && m_nexusValidator->isActive()) {
+ // api key is in the process of being tested
+ ui->nexusConnect->setText(QObject::tr("Connect to Nexus"));
+ ui->nexusConnect->setEnabled(false);
+ ui->nexusDisconnect->setEnabled(false);
+ ui->nexusManualKey->setText(QObject::tr("Cancel"));
+ ui->nexusManualKey->setEnabled(true);
+ }
+ else if (m_parent->hasNexusApiKey()) {
+ // api key is present
+ ui->nexusConnect->setText(QObject::tr("Connect to Nexus"));
+ ui->nexusConnect->setEnabled(false);
+ ui->nexusDisconnect->setEnabled(true);
+ ui->nexusManualKey->setText(QObject::tr("Enter API Key Manually"));
+ ui->nexusManualKey->setEnabled(false);
+ } else {
+ // api key not present
+ ui->nexusConnect->setText(QObject::tr("Connect to Nexus"));
+ ui->nexusConnect->setEnabled(true);
+ ui->nexusDisconnect->setEnabled(false);
+ ui->nexusManualKey->setText(QObject::tr("Enter API Key Manually"));
+ ui->nexusManualKey->setEnabled(true);
+ }
+}
+
+void NexusSettingsTab::updateNexusData()
+{
+ const auto user = NexusInterface::instance(m_dialog.m_PluginContainer)
+ ->getAPIUserAccount();
+
+ if (user.isValid()) {
+ ui->nexusUserID->setText(user.id());
+ ui->nexusName->setText(user.name());
+ ui->nexusAccount->setText(localizedUserAccountType(user.type()));
+
+ ui->nexusDailyRequests->setText(QString("%1/%2")
+ .arg(user.limits().remainingDailyRequests)
+ .arg(user.limits().maxDailyRequests));
+
+ ui->nexusHourlyRequests->setText(QString("%1/%2")
+ .arg(user.limits().remainingHourlyRequests)
+ .arg(user.limits().maxHourlyRequests));
+ } else {
+ ui->nexusUserID->setText(QObject::tr("N/A"));
+ ui->nexusName->setText(QObject::tr("N/A"));
+ ui->nexusAccount->setText(QObject::tr("N/A"));
+ ui->nexusDailyRequests->setText(QObject::tr("N/A"));
+ ui->nexusHourlyRequests->setText(QObject::tr("N/A"));
+ }
+}
diff --git a/src/settingsdialognexus.h b/src/settingsdialognexus.h
new file mode 100644
index 00000000..5c01f61f
--- /dev/null
+++ b/src/settingsdialognexus.h
@@ -0,0 +1,40 @@
+#ifndef SETTINGSDIALOGNEXUS_H
+#define SETTINGSDIALOGNEXUS_H
+
+#include "settings.h"
+#include "settingsdialog.h"
+
+class NexusSettingsTab : public SettingsTab
+{
+public:
+ NexusSettingsTab(Settings *m_parent, SettingsDialog &m_dialog);
+ void update();
+
+private:
+ std::unique_ptr m_nexusLogin;
+ std::unique_ptr m_nexusValidator;
+
+ void on_nexusConnect_clicked();
+ void on_nexusManualKey_clicked();
+ void on_nexusDisconnect_clicked();
+ void on_clearCacheButton_clicked();
+ void on_associateButton_clicked();
+
+ void validateKey(const QString& key);
+ bool setKey(const QString& key);
+ bool clearKey();
+
+ void updateNexusState();
+ void updateNexusButtons();
+ void updateNexusData();
+
+ void onSSOKeyChanged(const QString& key);
+ void onSSOStateChanged(NexusSSOLogin::States s, const QString& e);
+
+ void onValidatorStateChanged(NexusKeyValidator::States s, const QString& e);
+ void onValidatorFinished(const APIUserAccount& user);
+
+ void addNexusLog(const QString& s);
+};
+
+#endif // SETTINGSDIALOGNEXUS_H
diff --git a/src/settingsdialogpaths.cpp b/src/settingsdialogpaths.cpp
index 303d1562..6e8fe994 100644
--- a/src/settingsdialogpaths.cpp
+++ b/src/settingsdialogpaths.cpp
@@ -3,7 +3,7 @@
#include "appconfig.h"
#include
-PathsTab::PathsTab(Settings *parent, SettingsDialog &dialog)
+PathsSettingsTab::PathsSettingsTab(Settings *parent, SettingsDialog &dialog)
: SettingsTab(parent, dialog)
{
ui->baseDirEdit->setText(m_parent->getBaseDirectory());
@@ -38,7 +38,7 @@ PathsTab::PathsTab(Settings *parent, SettingsDialog &dialog)
QObject::connect(ui->profilesDirEdit, &QLineEdit::editingFinished, [&]{ on_profilesDirEdit_editingFinished(); });
}
-void PathsTab::update()
+void PathsSettingsTab::update()
{
typedef std::tuple Directory;
@@ -91,7 +91,7 @@ void PathsTab::update()
}
}
-void PathsTab::on_browseBaseDirBtn_clicked()
+void PathsSettingsTab::on_browseBaseDirBtn_clicked()
{
QString temp = QFileDialog::getExistingDirectory(
parentWidget(), QObject::tr("Select base directory"), ui->baseDirEdit->text());
@@ -100,7 +100,7 @@ void PathsTab::on_browseBaseDirBtn_clicked()
}
}
-void PathsTab::on_browseDownloadDirBtn_clicked()
+void PathsSettingsTab::on_browseDownloadDirBtn_clicked()
{
QString searchPath = ui->downloadDirEdit->text();
searchPath.replace("%BASE_DIR%", ui->baseDirEdit->text());
@@ -111,7 +111,7 @@ void PathsTab::on_browseDownloadDirBtn_clicked()
}
}
-void PathsTab::on_browseModDirBtn_clicked()
+void PathsSettingsTab::on_browseModDirBtn_clicked()
{
QString searchPath = ui->modDirEdit->text();
searchPath.replace("%BASE_DIR%", ui->baseDirEdit->text());
@@ -122,7 +122,7 @@ void PathsTab::on_browseModDirBtn_clicked()
}
}
-void PathsTab::on_browseCacheDirBtn_clicked()
+void PathsSettingsTab::on_browseCacheDirBtn_clicked()
{
QString searchPath = ui->cacheDirEdit->text();
searchPath.replace("%BASE_DIR%", ui->baseDirEdit->text());
@@ -133,7 +133,7 @@ void PathsTab::on_browseCacheDirBtn_clicked()
}
}
-void PathsTab::on_browseProfilesDirBtn_clicked()
+void PathsSettingsTab::on_browseProfilesDirBtn_clicked()
{
QString searchPath = ui->profilesDirEdit->text();
searchPath.replace("%BASE_DIR%", ui->baseDirEdit->text());
@@ -144,7 +144,7 @@ void PathsTab::on_browseProfilesDirBtn_clicked()
}
}
-void PathsTab::on_browseOverwriteDirBtn_clicked()
+void PathsSettingsTab::on_browseOverwriteDirBtn_clicked()
{
QString searchPath = ui->overwriteDirEdit->text();
searchPath.replace("%BASE_DIR%", ui->baseDirEdit->text());
@@ -155,7 +155,7 @@ void PathsTab::on_browseOverwriteDirBtn_clicked()
}
}
-void PathsTab::on_browseGameDirBtn_clicked()
+void PathsSettingsTab::on_browseGameDirBtn_clicked()
{
QFileInfo oldGameExe(ui->managedGameDirEdit->text());
@@ -165,37 +165,37 @@ void PathsTab::on_browseGameDirBtn_clicked()
}
}
-void PathsTab::on_baseDirEdit_editingFinished()
+void PathsSettingsTab::on_baseDirEdit_editingFinished()
{
normalizePath(ui->baseDirEdit);
}
-void PathsTab::on_downloadDirEdit_editingFinished()
+void PathsSettingsTab::on_downloadDirEdit_editingFinished()
{
normalizePath(ui->downloadDirEdit);
}
-void PathsTab::on_modDirEdit_editingFinished()
+void PathsSettingsTab::on_modDirEdit_editingFinished()
{
normalizePath(ui->modDirEdit);
}
-void PathsTab::on_cacheDirEdit_editingFinished()
+void PathsSettingsTab::on_cacheDirEdit_editingFinished()
{
normalizePath(ui->cacheDirEdit);
}
-void PathsTab::on_profilesDirEdit_editingFinished()
+void PathsSettingsTab::on_profilesDirEdit_editingFinished()
{
normalizePath(ui->profilesDirEdit);
}
-void PathsTab::on_overwriteDirEdit_editingFinished()
+void PathsSettingsTab::on_overwriteDirEdit_editingFinished()
{
normalizePath(ui->overwriteDirEdit);
}
-void PathsTab::normalizePath(QLineEdit *lineEdit)
+void PathsSettingsTab::normalizePath(QLineEdit *lineEdit)
{
QString text = lineEdit->text();
while (text.endsWith('/') || text.endsWith('\\')) {
diff --git a/src/settingsdialogpaths.h b/src/settingsdialogpaths.h
index dac402b1..f661b624 100644
--- a/src/settingsdialogpaths.h
+++ b/src/settingsdialogpaths.h
@@ -4,10 +4,10 @@
#include "settings.h"
#include "settingsdialog.h"
-class PathsTab : public SettingsTab
+class PathsSettingsTab : public SettingsTab
{
public:
- PathsTab(Settings *parent, SettingsDialog &dialog);
+ PathsSettingsTab(Settings *parent, SettingsDialog &dialog);
void update();
--
cgit v1.3.1
From d91d0caba5fac3b2b27698a5e6ab4a9b60efbf53 Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Sat, 20 Jul 2019 09:47:09 -0400
Subject: removed incorrect warning that steam password is unencrypted split
steam tab
---
src/CMakeLists.txt | 3 +++
src/settings.cpp | 36 +++++-----------------------
src/settings.h | 13 ----------
src/settingsdialog.ui | 58 ++++++++++++++++-----------------------------
src/settingsdialogsteam.cpp | 17 +++++++++++++
src/settingsdialogsteam.h | 17 +++++++++++++
6 files changed, 64 insertions(+), 80 deletions(-)
create mode 100644 src/settingsdialogsteam.cpp
create mode 100644 src/settingsdialogsteam.h
(limited to 'src/settings.cpp')
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index b2407e17..a1adf2db 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -40,6 +40,7 @@ SET(organizer_SRCS
settingsdialoggeneral.cpp
settingsdialognexus.cpp
settingsdialogpaths.cpp
+ settingsdialogsteam.cpp
settings.cpp
selfupdater.cpp
selectiondialog.cpp
@@ -157,6 +158,7 @@ SET(organizer_HDRS
settingsdialoggeneral.h
settingsdialognexus.h
settingsdialogpaths.h
+ settingsdialogsteam.h
settings.h
selfupdater.h
selectiondialog.h
@@ -440,6 +442,7 @@ set(settings
settingsdialoggeneral
settingsdialognexus
settingsdialogpaths
+ settingsdialogsteam
)
set(utilities
diff --git a/src/settings.cpp b/src/settings.cpp
index bded470c..26c9720a 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -25,6 +25,7 @@ along with Mod Organizer. If not, see .
#include "settingsdialoggeneral.h"
#include "settingsdialognexus.h"
#include "settingsdialogpaths.h"
+#include "settingsdialogsteam.h"
#include "versioninfo.h"
#include "appconfig.h"
#include "organizercore.h"
@@ -391,15 +392,10 @@ bool Settings::hasNexusApiKey() const
bool Settings::getSteamLogin(QString &username, QString &password) const
{
- if (m_Settings.contains("Settings/steam_username")) {
- QString tempPass = deObfuscate("steam_password");
- if (!tempPass.isEmpty()) {
- username = m_Settings.value("Settings/steam_username").toString();
- password = tempPass;
- return true;
- }
- }
- return false;
+ username = m_Settings.value("Settings/steam_username", "").toString();
+ password = deObfuscate("steam_password");
+
+ return !username.isEmpty() && !password.isEmpty();
}
bool Settings::compactDownloads() const
{
@@ -680,7 +676,7 @@ void Settings::query(PluginContainer *pluginContainer, QWidget *parent)
tabs.push_back(std::unique_ptr(new PathsSettingsTab(this, dialog)));
tabs.push_back(std::unique_ptr(new DiagnosticsTab(this, dialog)));
tabs.push_back(std::unique_ptr(new NexusSettingsTab(this, dialog)));
- tabs.push_back(std::unique_ptr(new SteamTab(this, dialog)));
+ tabs.push_back(std::unique_ptr(new SteamSettingsTab(this, dialog)));
tabs.push_back(std::unique_ptr(new PluginsTab(this, dialog)));
tabs.push_back(std::unique_ptr(new WorkaroundsTab(this, dialog)));
@@ -770,26 +766,6 @@ void Settings::DiagnosticsTab::update()
}
-Settings::SteamTab::SteamTab(Settings *m_parent, SettingsDialog &m_dialog)
- : SettingsTab(m_parent, m_dialog)
- , m_steamUserEdit(m_dialog.findChild("steamUserEdit"))
- , m_steamPassEdit(m_dialog.findChild("steamPassEdit"))
-{
- if (m_Settings.contains("Settings/steam_username")) {
- m_steamUserEdit->setText(m_Settings.value("Settings/steam_username", "").toString());
- QString password = deObfuscate("steam_password");
- if (!password.isEmpty()) {
- m_steamPassEdit->setText(password);
- }
- }
-}
-
-void Settings::SteamTab::update()
-{
- //FIXME this should be inlined here?
- m_parent->setSteamLogin(m_steamUserEdit->text(), m_steamPassEdit->text());
-}
-
Settings::PluginsTab::PluginsTab(Settings *m_parent, SettingsDialog &m_dialog)
: SettingsTab(m_parent, m_dialog)
, m_pluginsList(m_dialog.findChild("pluginsList"))
diff --git a/src/settings.h b/src/settings.h
index b9383ce4..5bf705d1 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -461,19 +461,6 @@ private:
void setLevelsBox();
};
- /** Display/store the configuration in the 'steam' tab of the settings dialogue */
- class SteamTab : public SettingsTab
- {
- public:
- SteamTab(Settings *m_parent, SettingsDialog &m_dialog);
-
- void update();
-
- private:
- QLineEdit *m_steamUserEdit;
- QLineEdit *m_steamPassEdit;
- };
-
/** Display/store the configuration in the 'plugins' tab of the settings dialogue */
class PluginsTab : public SettingsTab
{
diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui
index 1e94bcde..3ad525e1 100644
--- a/src/settingsdialog.ui
+++ b/src/settingsdialog.ui
@@ -828,71 +828,55 @@ If you use pre-releases, never contact me directly by e-mail or via private mess
Steam
- -
+
-
Username
- -
-
-
- -
-
-
- Password
-
-
-
- -
-
-
- QLineEdit::Password
-
-
-
- -
-
+
-
+
Qt::Vertical
- QSizePolicy::Minimum
+ QSizePolicy::Expanding
20
- 40
+ 232
- -
+
-
+
+
+ -
- If you save your steam user ID and password here, they will be used when logging into steam. Note, however, your password will be stored unencrypted, so make sure your computer is secure.
+ <html><head/><body><p>If you save your steam user ID and password here, they will be used when logging into steam.</p></body></html>
true
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Expanding
+
-
+
+
+ Password
-
-
- 20
- 232
-
+
+
+ -
+
+
+ QLineEdit::Password
-
+
diff --git a/src/settingsdialogsteam.cpp b/src/settingsdialogsteam.cpp
new file mode 100644
index 00000000..34c2d76b
--- /dev/null
+++ b/src/settingsdialogsteam.cpp
@@ -0,0 +1,17 @@
+#include "settingsdialogsteam.h"
+#include "ui_settingsdialog.h"
+
+SteamSettingsTab::SteamSettingsTab(Settings *m_parent, SettingsDialog &m_dialog)
+ : SettingsTab(m_parent, m_dialog)
+{
+ QString username, password;
+ m_parent->getSteamLogin(username, password);
+
+ ui->steamUserEdit->setText(username);
+ ui->steamPassEdit->setText(password);
+}
+
+void SteamSettingsTab::update()
+{
+ m_parent->setSteamLogin(ui->steamUserEdit->text(), ui->steamPassEdit->text());
+}
diff --git a/src/settingsdialogsteam.h b/src/settingsdialogsteam.h
new file mode 100644
index 00000000..dbd85151
--- /dev/null
+++ b/src/settingsdialogsteam.h
@@ -0,0 +1,17 @@
+#ifndef SETTINGSDIALOGSTEAM_H
+#define SETTINGSDIALOGSTEAM_H
+
+#include "settings.h"
+#include "settingsdialog.h"
+
+class SteamSettingsTab : public SettingsTab
+{
+public:
+ SteamSettingsTab(Settings *m_parent, SettingsDialog &m_dialog);
+
+ void update();
+
+private:
+};
+
+#endif // SETTINGSDIALOGSTEAM_H
--
cgit v1.3.1
From 55eafd62dd3c96f363cde4537061e7f03ae8fd0a Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Sat, 20 Jul 2019 10:10:49 -0400
Subject: split plugins tab
---
src/CMakeLists.txt | 3 ++
src/settings.cpp | 54 +++------------------
src/settings.h | 25 +++-------
src/settingsdialog.cpp | 52 --------------------
src/settingsdialog.h | 4 --
src/settingsdialogplugins.cpp | 110 ++++++++++++++++++++++++++++++++++++++++++
src/settingsdialogplugins.h | 20 ++++++++
7 files changed, 146 insertions(+), 122 deletions(-)
create mode 100644 src/settingsdialogplugins.cpp
create mode 100644 src/settingsdialogplugins.h
(limited to 'src/settings.cpp')
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index a1adf2db..a8ded510 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -40,6 +40,7 @@ SET(organizer_SRCS
settingsdialoggeneral.cpp
settingsdialognexus.cpp
settingsdialogpaths.cpp
+ settingsdialogplugins.cpp
settingsdialogsteam.cpp
settings.cpp
selfupdater.cpp
@@ -158,6 +159,7 @@ SET(organizer_HDRS
settingsdialoggeneral.h
settingsdialognexus.h
settingsdialogpaths.h
+ settingsdialogplugins.h
settingsdialogsteam.h
settings.h
selfupdater.h
@@ -442,6 +444,7 @@ set(settings
settingsdialoggeneral
settingsdialognexus
settingsdialogpaths
+ settingsdialogplugins
settingsdialogsteam
)
diff --git a/src/settings.cpp b/src/settings.cpp
index 26c9720a..bc45b720 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -25,6 +25,7 @@ along with Mod Organizer. If not, see .
#include "settingsdialoggeneral.h"
#include "settingsdialognexus.h"
#include "settingsdialogpaths.h"
+#include "settingsdialogplugins.h"
#include "settingsdialogsteam.h"
#include "versioninfo.h"
#include "appconfig.h"
@@ -677,7 +678,7 @@ void Settings::query(PluginContainer *pluginContainer, QWidget *parent)
tabs.push_back(std::unique_ptr(new DiagnosticsTab(this, dialog)));
tabs.push_back(std::unique_ptr(new NexusSettingsTab(this, dialog)));
tabs.push_back(std::unique_ptr(new SteamSettingsTab(this, dialog)));
- tabs.push_back(std::unique_ptr(new PluginsTab(this, dialog)));
+ tabs.push_back(std::unique_ptr(new PluginsSettingsTab(this, dialog)));
tabs.push_back(std::unique_ptr(new WorkaroundsTab(this, dialog)));
@@ -687,6 +688,11 @@ void Settings::query(PluginContainer *pluginContainer, QWidget *parent)
}
if (dialog.exec() == QDialog::Accepted) {
+
+ for (auto&& tab : tabs) {
+ tab->closing();
+ }
+
// remember settings before change
QMap before;
m_Settings.beginGroup("Settings");
@@ -766,52 +772,6 @@ void Settings::DiagnosticsTab::update()
}
-Settings::PluginsTab::PluginsTab(Settings *m_parent, SettingsDialog &m_dialog)
- : SettingsTab(m_parent, m_dialog)
- , m_pluginsList(m_dialog.findChild("pluginsList"))
- , m_pluginBlacklistList(m_dialog.findChild("pluginBlacklist"))
-{
- // display plugin settings
- QSet handledNames;
- for (IPlugin *plugin : m_parent->m_Plugins) {
- if (handledNames.contains(plugin->name()))
- continue;
- QListWidgetItem *listItem = new QListWidgetItem(plugin->name(), m_pluginsList);
- listItem->setData(Qt::UserRole, QVariant::fromValue((void*)plugin));
- listItem->setData(Qt::UserRole + 1, m_parent->m_PluginSettings[plugin->name()]);
- listItem->setData(Qt::UserRole + 2, m_parent->m_PluginDescriptions[plugin->name()]);
- m_pluginsList->addItem(listItem);
- handledNames.insert(plugin->name());
- }
-
- // display plugin blacklist
- for (const QString &pluginName : m_parent->m_PluginBlacklist) {
- m_pluginBlacklistList->addItem(pluginName);
- }
-}
-
-void Settings::PluginsTab::update()
-{
- // transfer plugin settings to in-memory structure
- for (int i = 0; i < m_pluginsList->count(); ++i) {
- QListWidgetItem *item = m_pluginsList->item(i);
- m_parent->m_PluginSettings[item->text()] = item->data(Qt::UserRole + 1).toMap();
- }
- // store plugin settings on disc
- for (auto iterPlugins = m_parent->m_PluginSettings.begin(); iterPlugins != m_parent->m_PluginSettings.end(); ++iterPlugins) {
- for (auto iterSettings = iterPlugins->begin(); iterSettings != iterPlugins->end(); ++iterSettings) {
- m_Settings.setValue("Plugins/" + iterPlugins.key() + "/" + iterSettings.key(), iterSettings.value());
- }
- }
-
- // store plugin blacklist
- m_parent->m_PluginBlacklist.clear();
- for (QListWidgetItem *item : m_pluginBlacklistList->findItems("*", Qt::MatchWildcard)) {
- m_parent->m_PluginBlacklist.insert(item->text());
- }
- m_parent->writePluginBlacklist();
-}
-
Settings::WorkaroundsTab::WorkaroundsTab(Settings *m_parent,
SettingsDialog &m_dialog)
: SettingsTab(m_parent, m_dialog)
diff --git a/src/settings.h b/src/settings.h
index 5bf705d1..5298103a 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -70,6 +70,7 @@ public:
virtual ~SettingsTab();
virtual void update() = 0;
+ virtual void closing() {}
protected:
Settings *m_parent;
@@ -426,8 +427,13 @@ public:
*/
bool colorSeparatorScrollbar() const;
+ // temp
QSettings& settingsRef() { return m_Settings; }
MOBase::IPluginGame const *gamePlugin() { return m_GamePlugin; }
+ QMap m_PluginSettings;
+ QMap m_PluginDescriptions;
+ QSet m_PluginBlacklist;
+ void writePluginBlacklist();
public slots:
@@ -440,7 +446,6 @@ private:
static QString deObfuscate(const QString key);
void readPluginBlacklist();
- void writePluginBlacklist();
QString getConfigurablePath(const QString &key, const QString &def, bool resolve) const;
@@ -461,19 +466,6 @@ private:
void setLevelsBox();
};
- /** Display/store the configuration in the 'plugins' tab of the settings dialogue */
- class PluginsTab : public SettingsTab
- {
- public:
- PluginsTab(Settings *m_parent, SettingsDialog &m_dialog);
-
- void update();
-
- private:
- QListWidget *m_pluginsList;
- QListWidget *m_pluginBlacklistList;
- };
-
/** Display/store the configuration in the 'workarounds' tab of the settings dialogue */
class WorkaroundsTab : public SettingsTab
{
@@ -512,11 +504,6 @@ private:
std::vector m_Plugins;
- QMap m_PluginSettings;
- QMap m_PluginDescriptions;
-
- QSet m_PluginBlacklist;
-
};
#endif // SETTINGS_H
diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp
index 6d5a8cc0..f43f7ae8 100644
--- a/src/settingsdialog.cpp
+++ b/src/settingsdialog.cpp
@@ -99,7 +99,6 @@ void SettingsDialog::accept()
return;
}
- storeSettings(ui->pluginsList->currentItem());
TutorableDialog::accept();
}
@@ -149,57 +148,6 @@ void SettingsDialog::on_bsaDateBtn_clicked()
dir.absolutePath().toStdWString());
}
-void SettingsDialog::storeSettings(QListWidgetItem *pluginItem)
-{
- if (pluginItem != nullptr) {
- QVariantMap settings = pluginItem->data(Qt::UserRole + 1).toMap();
-
- for (int i = 0; i < ui->pluginSettingsList->topLevelItemCount(); ++i) {
- const QTreeWidgetItem *item = ui->pluginSettingsList->topLevelItem(i);
- settings[item->text(0)] = item->data(1, Qt::DisplayRole);
- }
-
- pluginItem->setData(Qt::UserRole + 1, settings);
- }
-}
-
-void SettingsDialog::on_pluginsList_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
-{
- storeSettings(previous);
-
- ui->pluginSettingsList->clear();
- IPlugin *plugin = static_cast(current->data(Qt::UserRole).value());
- ui->authorLabel->setText(plugin->author());
- ui->versionLabel->setText(plugin->version().canonicalString());
- ui->descriptionLabel->setText(plugin->description());
-
- QVariantMap settings = current->data(Qt::UserRole + 1).toMap();
- QVariantMap descriptions = current->data(Qt::UserRole + 2).toMap();
- ui->pluginSettingsList->setEnabled(settings.count() != 0);
- for (auto iter = settings.begin(); iter != settings.end(); ++iter) {
- QTreeWidgetItem *newItem = new QTreeWidgetItem(QStringList(iter.key()));
- QVariant value = *iter;
- QString description;
- {
- auto descriptionIter = descriptions.find(iter.key());
- if (descriptionIter != descriptions.end()) {
- description = descriptionIter->toString();
- }
- }
-
- ui->pluginSettingsList->setItemDelegateForColumn(0, new NoEditDelegate());
- newItem->setData(1, Qt::DisplayRole, value);
- newItem->setData(1, Qt::EditRole, value);
- newItem->setToolTip(1, description);
-
- newItem->setFlags(newItem->flags() | Qt::ItemIsEditable);
- ui->pluginSettingsList->addTopLevelItem(newItem);
- }
-
- ui->pluginSettingsList->resizeColumnToContents(0);
- ui->pluginSettingsList->resizeColumnToContents(1);
-}
-
void SettingsDialog::deleteBlacklistItem()
{
ui->pluginBlacklist->takeItem(ui->pluginBlacklist->currentIndex().row());
diff --git a/src/settingsdialog.h b/src/settingsdialog.h
index df5d0ad8..319e6ed8 100644
--- a/src/settingsdialog.h
+++ b/src/settingsdialog.h
@@ -62,9 +62,6 @@ public:
public slots:
virtual void accept();
-private:
- void storeSettings(QListWidgetItem *pluginItem);
-
public:
QString getExecutableBlacklist() { return m_ExecutableBlacklist; }
void setExecutableBlacklist(QString blacklist) { m_ExecutableBlacklist = blacklist; }
@@ -74,7 +71,6 @@ public:
private slots:
void on_bsaDateBtn_clicked();
void on_execBlacklistBtn_clicked();
- void on_pluginsList_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
void on_resetGeometryBtn_clicked();
void deleteBlacklistItem();
diff --git a/src/settingsdialogplugins.cpp b/src/settingsdialogplugins.cpp
new file mode 100644
index 00000000..32269344
--- /dev/null
+++ b/src/settingsdialogplugins.cpp
@@ -0,0 +1,110 @@
+#include "settingsdialogplugins.h"
+#include "ui_settingsdialog.h"
+#include "noeditdelegate.h"
+#include
+
+using MOBase::IPlugin;
+
+PluginsSettingsTab::PluginsSettingsTab(Settings *m_parent, SettingsDialog &m_dialog)
+ : SettingsTab(m_parent, m_dialog)
+{
+ // display plugin settings
+ QSet handledNames;
+ for (IPlugin *plugin : m_parent->plugins()) {
+ if (handledNames.contains(plugin->name()))
+ continue;
+ QListWidgetItem *listItem = new QListWidgetItem(plugin->name(), ui->pluginsList);
+ listItem->setData(Qt::UserRole, QVariant::fromValue((void*)plugin));
+ listItem->setData(Qt::UserRole + 1, m_parent->m_PluginSettings[plugin->name()]);
+ listItem->setData(Qt::UserRole + 2, m_parent->m_PluginDescriptions[plugin->name()]);
+ ui->pluginsList->addItem(listItem);
+ handledNames.insert(plugin->name());
+ }
+
+ // display plugin blacklist
+ for (const QString &pluginName : m_parent->m_PluginBlacklist) {
+ ui->pluginBlacklist->addItem(pluginName);
+ }
+
+ QObject::connect(
+ ui->pluginsList, &QListWidget::currentItemChanged,
+ [&](auto* current, auto* previous) { on_pluginsList_currentItemChanged(current, previous); });
+}
+
+void PluginsSettingsTab::update()
+{
+ // transfer plugin settings to in-memory structure
+ for (int i = 0; i < ui->pluginsList->count(); ++i) {
+ QListWidgetItem *item = ui->pluginsList->item(i);
+ m_parent->m_PluginSettings[item->text()] = item->data(Qt::UserRole + 1).toMap();
+ }
+ // store plugin settings on disc
+ for (auto iterPlugins = m_parent->m_PluginSettings.begin(); iterPlugins != m_parent->m_PluginSettings.end(); ++iterPlugins) {
+ for (auto iterSettings = iterPlugins->begin(); iterSettings != iterPlugins->end(); ++iterSettings) {
+ m_Settings.setValue("Plugins/" + iterPlugins.key() + "/" + iterSettings.key(), iterSettings.value());
+ }
+ }
+
+ // store plugin blacklist
+ m_parent->m_PluginBlacklist.clear();
+ for (QListWidgetItem *item : ui->pluginBlacklist->findItems("*", Qt::MatchWildcard)) {
+ m_parent->m_PluginBlacklist.insert(item->text());
+ }
+ m_parent->writePluginBlacklist();
+}
+
+void PluginsSettingsTab::closing()
+{
+ storeSettings(ui->pluginsList->currentItem());
+}
+
+void PluginsSettingsTab::on_pluginsList_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
+{
+ storeSettings(previous);
+
+ ui->pluginSettingsList->clear();
+ IPlugin *plugin = static_cast(current->data(Qt::UserRole).value());
+ ui->authorLabel->setText(plugin->author());
+ ui->versionLabel->setText(plugin->version().canonicalString());
+ ui->descriptionLabel->setText(plugin->description());
+
+ QVariantMap settings = current->data(Qt::UserRole + 1).toMap();
+ QVariantMap descriptions = current->data(Qt::UserRole + 2).toMap();
+ ui->pluginSettingsList->setEnabled(settings.count() != 0);
+ for (auto iter = settings.begin(); iter != settings.end(); ++iter) {
+ QTreeWidgetItem *newItem = new QTreeWidgetItem(QStringList(iter.key()));
+ QVariant value = *iter;
+ QString description;
+ {
+ auto descriptionIter = descriptions.find(iter.key());
+ if (descriptionIter != descriptions.end()) {
+ description = descriptionIter->toString();
+ }
+ }
+
+ ui->pluginSettingsList->setItemDelegateForColumn(0, new NoEditDelegate());
+ newItem->setData(1, Qt::DisplayRole, value);
+ newItem->setData(1, Qt::EditRole, value);
+ newItem->setToolTip(1, description);
+
+ newItem->setFlags(newItem->flags() | Qt::ItemIsEditable);
+ ui->pluginSettingsList->addTopLevelItem(newItem);
+ }
+
+ ui->pluginSettingsList->resizeColumnToContents(0);
+ ui->pluginSettingsList->resizeColumnToContents(1);
+}
+
+void PluginsSettingsTab::storeSettings(QListWidgetItem *pluginItem)
+{
+ if (pluginItem != nullptr) {
+ QVariantMap settings = pluginItem->data(Qt::UserRole + 1).toMap();
+
+ for (int i = 0; i < ui->pluginSettingsList->topLevelItemCount(); ++i) {
+ const QTreeWidgetItem *item = ui->pluginSettingsList->topLevelItem(i);
+ settings[item->text(0)] = item->data(1, Qt::DisplayRole);
+ }
+
+ pluginItem->setData(Qt::UserRole + 1, settings);
+ }
+}
diff --git a/src/settingsdialogplugins.h b/src/settingsdialogplugins.h
new file mode 100644
index 00000000..48d61858
--- /dev/null
+++ b/src/settingsdialogplugins.h
@@ -0,0 +1,20 @@
+#ifndef SETTINGSDIALOGPLUGINS_H
+#define SETTINGSDIALOGPLUGINS_H
+
+#include "settings.h"
+#include "settingsdialog.h"
+
+class PluginsSettingsTab : public SettingsTab
+{
+public:
+ PluginsSettingsTab(Settings *m_parent, SettingsDialog &m_dialog);
+
+ void update();
+ void closing() override;
+
+private:
+ void on_pluginsList_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
+ void storeSettings(QListWidgetItem *pluginItem);
+};
+
+#endif // SETTINGSDIALOGPLUGINS_H
--
cgit v1.3.1
From e4dcdb01ac2e3f99fea76b21e1acfd21d0de89c7 Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Sat, 20 Jul 2019 10:45:59 -0400
Subject: split workarounds tab
---
src/CMakeLists.txt | 3 ++
src/loadmechanism.cpp | 6 +--
src/loadmechanism.h | 6 +--
src/settings.cpp | 73 +-------------------------
src/settings.h | 20 +------
src/settingsdialog.cpp | 51 ------------------
src/settingsdialog.h | 14 +----
src/settingsdialogplugins.cpp | 9 ++++
src/settingsdialogplugins.h | 1 +
src/settingsdialogworkarounds.cpp | 108 ++++++++++++++++++++++++++++++++++++++
src/settingsdialogworkarounds.h | 25 +++++++++
11 files changed, 157 insertions(+), 159 deletions(-)
create mode 100644 src/settingsdialogworkarounds.cpp
create mode 100644 src/settingsdialogworkarounds.h
(limited to 'src/settings.cpp')
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index a8ded510..86ef9721 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -42,6 +42,7 @@ SET(organizer_SRCS
settingsdialogpaths.cpp
settingsdialogplugins.cpp
settingsdialogsteam.cpp
+ settingsdialogworkarounds.cpp
settings.cpp
selfupdater.cpp
selectiondialog.cpp
@@ -161,6 +162,7 @@ SET(organizer_HDRS
settingsdialogpaths.h
settingsdialogplugins.h
settingsdialogsteam.h
+ settingsdialogworkarounds.h
settings.h
selfupdater.h
selectiondialog.h
@@ -446,6 +448,7 @@ set(settings
settingsdialogpaths
settingsdialogplugins
settingsdialogsteam
+ settingsdialogworkarounds
)
set(utilities
diff --git a/src/loadmechanism.cpp b/src/loadmechanism.cpp
index 4d6cebd4..2d01562d 100644
--- a/src/loadmechanism.cpp
+++ b/src/loadmechanism.cpp
@@ -63,7 +63,7 @@ void LoadMechanism::removeHintFile(QDir targetDirectory)
}
-bool LoadMechanism::isDirectLoadingSupported()
+bool LoadMechanism::isDirectLoadingSupported() const
{
//FIXME: Seriously? isn't there a 'do i need steam' thing?
IPluginGame const *game = qApp->property("managed_game").value();
@@ -76,7 +76,7 @@ bool LoadMechanism::isDirectLoadingSupported()
}
}
-bool LoadMechanism::isScriptExtenderSupported()
+bool LoadMechanism::isScriptExtenderSupported() const
{
IPluginGame const *game = qApp->property("managed_game").value();
ScriptExtender *extender = game->feature();
@@ -85,7 +85,7 @@ bool LoadMechanism::isScriptExtenderSupported()
return extender != nullptr && extender->isInstalled();
}
-bool LoadMechanism::isProxyDLLSupported()
+bool LoadMechanism::isProxyDLLSupported() const
{
// using steam_api.dll as the proxy is way too game specific as many games will have different
// versions of that dll.
diff --git a/src/loadmechanism.h b/src/loadmechanism.h
index c04473ab..51fefaf9 100644
--- a/src/loadmechanism.h
+++ b/src/loadmechanism.h
@@ -68,21 +68,21 @@ public:
*
* @return true if the load mechanism is supported
**/
- bool isDirectLoadingSupported();
+ bool isDirectLoadingSupported() const;
/**
* @brief test whether the "Script Extender" load mechanism is supported for the current game
*
* @return true if the load mechanism is supported
**/
- bool isScriptExtenderSupported();
+ bool isScriptExtenderSupported() const;
/**
* @brief test whether the "Proxy DLL" load mechanism is supported for the current game
*
* @return true if the load mechanism is supported
**/
- bool isProxyDLLSupported();
+ bool isProxyDLLSupported() const;
private:
diff --git a/src/settings.cpp b/src/settings.cpp
index bc45b720..515ff907 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -27,6 +27,7 @@ along with Mod Organizer. If not, see .
#include "settingsdialogpaths.h"
#include "settingsdialogplugins.h"
#include "settingsdialogsteam.h"
+#include "settingsdialogworkarounds.h"
#include "versioninfo.h"
#include "appconfig.h"
#include "organizercore.h"
@@ -679,7 +680,7 @@ void Settings::query(PluginContainer *pluginContainer, QWidget *parent)
tabs.push_back(std::unique_ptr(new NexusSettingsTab(this, dialog)));
tabs.push_back(std::unique_ptr(new SteamSettingsTab(this, dialog)));
tabs.push_back(std::unique_ptr(new PluginsSettingsTab(this, dialog)));
- tabs.push_back(std::unique_ptr(new WorkaroundsTab(this, dialog)));
+ tabs.push_back(std::unique_ptr(new WorkaroundsSettingsTab(this, dialog)));
QString key = QString("geometry/%1").arg(dialog.objectName());
@@ -770,73 +771,3 @@ void Settings::DiagnosticsTab::update()
m_Settings.setValue("Settings/crash_dumps_type", m_dumpsTypeBox->currentIndex());
m_Settings.setValue("Settings/crash_dumps_max", m_dumpsMaxEdit->value());
}
-
-
-Settings::WorkaroundsTab::WorkaroundsTab(Settings *m_parent,
- SettingsDialog &m_dialog)
- : SettingsTab(m_parent, m_dialog)
- , m_appIDEdit(m_dialog.findChild("appIDEdit"))
- , m_mechanismBox(m_dialog.findChild("mechanismBox"))
- , m_hideUncheckedBox(m_dialog.findChild("hideUncheckedBox"))
- , m_forceEnableBox(m_dialog.findChild("forceEnableBox"))
- , m_displayForeignBox(m_dialog.findChild("displayForeignBox"))
- , m_lockGUIBox(m_dialog.findChild("lockGUIBox"))
- , m_enableArchiveParsingBox(m_dialog.findChild("enableArchiveParsingBox"))
- , m_resetGeometriesBtn(m_dialog.findChild("resetGeometryBtn"))
-{
- m_appIDEdit->setText(m_parent->getSteamAppID());
-
- LoadMechanism::EMechanism mechanismID = m_parent->getLoadMechanism();
- int index = 0;
-
- if (m_parent->m_LoadMechanism.isDirectLoadingSupported()) {
- m_mechanismBox->addItem(QObject::tr("Mod Organizer"), LoadMechanism::LOAD_MODORGANIZER);
- if (mechanismID == LoadMechanism::LOAD_MODORGANIZER) {
- index = m_mechanismBox->count() - 1;
- }
- }
-
- if (m_parent->m_LoadMechanism.isScriptExtenderSupported()) {
- m_mechanismBox->addItem(QObject::tr("Script Extender"), LoadMechanism::LOAD_SCRIPTEXTENDER);
- if (mechanismID == LoadMechanism::LOAD_SCRIPTEXTENDER) {
- index = m_mechanismBox->count() - 1;
- }
- }
-
- if (m_parent->m_LoadMechanism.isProxyDLLSupported()) {
- m_mechanismBox->addItem(QObject::tr("Proxy DLL"), LoadMechanism::LOAD_PROXYDLL);
- if (mechanismID == LoadMechanism::LOAD_PROXYDLL) {
- index = m_mechanismBox->count() - 1;
- }
- }
-
- m_mechanismBox->setCurrentIndex(index);
-
- m_hideUncheckedBox->setChecked(m_parent->hideUncheckedPlugins());
- m_forceEnableBox->setChecked(m_parent->forceEnableCoreFiles());
- m_displayForeignBox->setChecked(m_parent->displayForeign());
- m_lockGUIBox->setChecked(m_parent->lockGUI());
- m_enableArchiveParsingBox->setChecked(m_parent->archiveParsing());
-
- m_resetGeometriesBtn->setChecked(m_parent->directInterface().value("reset_geometry", false).toBool());
-
- m_dialog.setExecutableBlacklist(m_parent->executablesBlacklist());
-
-}
-
-void Settings::WorkaroundsTab::update()
-{
- if (m_appIDEdit->text() != m_parent->m_GamePlugin->steamAPPId()) {
- m_Settings.setValue("Settings/app_id", m_appIDEdit->text());
- } else {
- m_Settings.remove("Settings/app_id");
- }
- m_Settings.setValue("Settings/load_mechanism", m_mechanismBox->itemData(m_mechanismBox->currentIndex()).toInt());
- m_Settings.setValue("Settings/hide_unchecked_plugins", m_hideUncheckedBox->isChecked());
- m_Settings.setValue("Settings/force_enable_core_files", m_forceEnableBox->isChecked());
- m_Settings.setValue("Settings/display_foreign", m_displayForeignBox->isChecked());
- m_Settings.setValue("Settings/lock_gui", m_lockGUIBox->isChecked());
- m_Settings.setValue("Settings/archive_parsing_experimental", m_enableArchiveParsingBox->isChecked());
-
- m_Settings.setValue("Settings/executable_blacklist", m_dialog.getExecutableBlacklist());
-}
diff --git a/src/settings.h b/src/settings.h
index 5298103a..64068173 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -434,6 +434,7 @@ public:
QMap m_PluginDescriptions;
QSet m_PluginBlacklist;
void writePluginBlacklist();
+ const LoadMechanism& loadMechanism() const { return m_LoadMechanism; }
public slots:
@@ -466,25 +467,6 @@ private:
void setLevelsBox();
};
- /** Display/store the configuration in the 'workarounds' tab of the settings dialogue */
- class WorkaroundsTab : public SettingsTab
- {
- public:
- WorkaroundsTab(Settings *m_parent, SettingsDialog &m_dialog);
-
- void update();
-
- private:
- QLineEdit *m_appIDEdit;
- QComboBox *m_mechanismBox;
- QCheckBox *m_hideUncheckedBox;
- QCheckBox *m_forceEnableBox;
- QCheckBox *m_displayForeignBox;
- QCheckBox *m_lockGUIBox;
- QCheckBox *m_enableArchiveParsingBox;
- QPushButton *m_resetGeometriesBtn;
- };
-
private slots:
signals:
diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp
index f43f7ae8..76b0a146 100644
--- a/src/settingsdialog.cpp
+++ b/src/settingsdialog.cpp
@@ -58,10 +58,6 @@ SettingsDialog::SettingsDialog(PluginContainer *pluginContainer, Settings* setti
{
ui->setupUi(this);
ui->pluginSettingsList->setStyleSheet("QTreeWidget::item {padding-right: 10px;}");
-
- QShortcut *delShortcut = new QShortcut(
- QKeySequence(Qt::Key_Delete), ui->pluginBlacklist);
- connect(delShortcut, SIGNAL(activated()), this, SLOT(deleteBlacklistItem()));
}
SettingsDialog::~SettingsDialog()
@@ -111,50 +107,3 @@ bool SettingsDialog::getApiKeyChanged()
{
return m_keyChanged;
}
-
-void SettingsDialog::on_execBlacklistBtn_clicked()
-{
- bool ok = false;
- QString result = QInputDialog::getMultiLineText(
- this,
- tr("Executables Blacklist"),
- tr("Enter one executable per line to be blacklisted from the virtual file system.\n"
- "Mods and other virtualized files will not be visible to these executables and\n"
- "any executables launched by them.\n\n"
- "Example:\n"
- " Chrome.exe\n"
- " Firefox.exe"),
- m_ExecutableBlacklist.split(";").join("\n"),
- &ok
- );
- if (ok) {
- QStringList blacklist;
- for (auto exec : result.split("\n")) {
- if (exec.trimmed().endsWith(".exe", Qt::CaseInsensitive)) {
- blacklist << exec.trimmed();
- }
- }
- m_ExecutableBlacklist = blacklist.join(";");
- }
-}
-
-void SettingsDialog::on_bsaDateBtn_clicked()
-{
- IPluginGame const *game
- = qApp->property("managed_game").value();
- QDir dir = game->dataDirectory();
-
- Helper::backdateBSAs(qApp->applicationDirPath().toStdWString(),
- dir.absolutePath().toStdWString());
-}
-
-void SettingsDialog::deleteBlacklistItem()
-{
- ui->pluginBlacklist->takeItem(ui->pluginBlacklist->currentIndex().row());
-}
-
-void SettingsDialog::on_resetGeometryBtn_clicked()
-{
- m_GeometriesReset = true;
- ui->resetGeometryBtn->setChecked(true);
-}
diff --git a/src/settingsdialog.h b/src/settingsdialog.h
index 319e6ed8..81c17f44 100644
--- a/src/settingsdialog.h
+++ b/src/settingsdialog.h
@@ -57,30 +57,20 @@ public:
// temp
Ui::SettingsDialog *ui;
bool m_keyChanged;
+ bool m_GeometriesReset;
PluginContainer *m_PluginContainer;
public slots:
virtual void accept();
public:
- QString getExecutableBlacklist() { return m_ExecutableBlacklist; }
- void setExecutableBlacklist(QString blacklist) { m_ExecutableBlacklist = blacklist; }
- bool getResetGeometries();
bool getApiKeyChanged();
-
-private slots:
- void on_bsaDateBtn_clicked();
- void on_execBlacklistBtn_clicked();
- void on_resetGeometryBtn_clicked();
-
- void deleteBlacklistItem();
+ bool getResetGeometries();
private:
Settings* m_settings;
- bool m_GeometriesReset;
- QString m_ExecutableBlacklist;
};
#endif // SETTINGSDIALOG_H
diff --git a/src/settingsdialogplugins.cpp b/src/settingsdialogplugins.cpp
index 32269344..33bc1563 100644
--- a/src/settingsdialogplugins.cpp
+++ b/src/settingsdialogplugins.cpp
@@ -29,6 +29,10 @@ PluginsSettingsTab::PluginsSettingsTab(Settings *m_parent, SettingsDialog &m_dia
QObject::connect(
ui->pluginsList, &QListWidget::currentItemChanged,
[&](auto* current, auto* previous) { on_pluginsList_currentItemChanged(current, previous); });
+
+ QShortcut *delShortcut = new QShortcut(
+ QKeySequence(Qt::Key_Delete), ui->pluginBlacklist);
+ QObject::connect(delShortcut, &QShortcut::activated, parentWidget(), [&]{ deleteBlacklistItem(); });
}
void PluginsSettingsTab::update()
@@ -95,6 +99,11 @@ void PluginsSettingsTab::on_pluginsList_currentItemChanged(QListWidgetItem *curr
ui->pluginSettingsList->resizeColumnToContents(1);
}
+void PluginsSettingsTab::deleteBlacklistItem()
+{
+ ui->pluginBlacklist->takeItem(ui->pluginBlacklist->currentIndex().row());
+}
+
void PluginsSettingsTab::storeSettings(QListWidgetItem *pluginItem)
{
if (pluginItem != nullptr) {
diff --git a/src/settingsdialogplugins.h b/src/settingsdialogplugins.h
index 48d61858..9d21daa6 100644
--- a/src/settingsdialogplugins.h
+++ b/src/settingsdialogplugins.h
@@ -14,6 +14,7 @@ public:
private:
void on_pluginsList_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
+ void deleteBlacklistItem();
void storeSettings(QListWidgetItem *pluginItem);
};
diff --git a/src/settingsdialogworkarounds.cpp b/src/settingsdialogworkarounds.cpp
new file mode 100644
index 00000000..4cca5fd4
--- /dev/null
+++ b/src/settingsdialogworkarounds.cpp
@@ -0,0 +1,108 @@
+#include "settingsdialogworkarounds.h"
+#include "ui_settingsdialog.h"
+#include "helper.h"
+#include
+
+WorkaroundsSettingsTab::WorkaroundsSettingsTab(Settings *m_parent, SettingsDialog &m_dialog)
+ : SettingsTab(m_parent, m_dialog)
+{
+ ui->appIDEdit->setText(m_parent->getSteamAppID());
+
+ LoadMechanism::EMechanism mechanismID = m_parent->getLoadMechanism();
+ int index = 0;
+
+ if (m_parent->loadMechanism().isDirectLoadingSupported()) {
+ ui->mechanismBox->addItem(QObject::tr("Mod Organizer"), LoadMechanism::LOAD_MODORGANIZER);
+ if (mechanismID == LoadMechanism::LOAD_MODORGANIZER) {
+ index = ui->mechanismBox->count() - 1;
+ }
+ }
+
+ if (m_parent->loadMechanism().isScriptExtenderSupported()) {
+ ui->mechanismBox->addItem(QObject::tr("Script Extender"), LoadMechanism::LOAD_SCRIPTEXTENDER);
+ if (mechanismID == LoadMechanism::LOAD_SCRIPTEXTENDER) {
+ index = ui->mechanismBox->count() - 1;
+ }
+ }
+
+ if (m_parent->loadMechanism().isProxyDLLSupported()) {
+ ui->mechanismBox->addItem(QObject::tr("Proxy DLL"), LoadMechanism::LOAD_PROXYDLL);
+ if (mechanismID == LoadMechanism::LOAD_PROXYDLL) {
+ index = ui->mechanismBox->count() - 1;
+ }
+ }
+
+ ui->mechanismBox->setCurrentIndex(index);
+
+ ui->hideUncheckedBox->setChecked(m_parent->hideUncheckedPlugins());
+ ui->forceEnableBox->setChecked(m_parent->forceEnableCoreFiles());
+ ui->displayForeignBox->setChecked(m_parent->displayForeign());
+ ui->lockGUIBox->setChecked(m_parent->lockGUI());
+ ui->enableArchiveParsingBox->setChecked(m_parent->archiveParsing());
+
+ ui->resetGeometryBtn->setChecked(m_parent->directInterface().value("reset_geometry", false).toBool());
+
+ setExecutableBlacklist(m_parent->executablesBlacklist());
+
+ QObject::connect(ui->bsaDateBtn, &QPushButton::clicked, [&]{ on_bsaDateBtn_clicked(); });
+ QObject::connect(ui->execBlacklistBtn, &QPushButton::clicked, [&]{ on_execBlacklistBtn_clicked(); });
+ QObject::connect(ui->resetGeometryBtn, &QPushButton::clicked, [&]{ on_resetGeometryBtn_clicked(); });
+}
+
+void WorkaroundsSettingsTab::update()
+{
+ if (ui->appIDEdit->text() != m_parent->gamePlugin()->steamAPPId()) {
+ m_Settings.setValue("Settings/app_id", ui->appIDEdit->text());
+ } else {
+ m_Settings.remove("Settings/app_id");
+ }
+ m_Settings.setValue("Settings/load_mechanism", ui->mechanismBox->itemData(ui->mechanismBox->currentIndex()).toInt());
+ m_Settings.setValue("Settings/hide_unchecked_plugins", ui->hideUncheckedBox->isChecked());
+ m_Settings.setValue("Settings/force_enable_core_files", ui->forceEnableBox->isChecked());
+ m_Settings.setValue("Settings/display_foreign", ui->displayForeignBox->isChecked());
+ m_Settings.setValue("Settings/lock_gui", ui->lockGUIBox->isChecked());
+ m_Settings.setValue("Settings/archive_parsing_experimental", ui->enableArchiveParsingBox->isChecked());
+
+ m_Settings.setValue("Settings/executable_blacklist", getExecutableBlacklist());
+}
+
+void WorkaroundsSettingsTab::on_execBlacklistBtn_clicked()
+{
+ bool ok = false;
+ QString result = QInputDialog::getMultiLineText(
+ parentWidget(),
+ QObject::tr("Executables Blacklist"),
+ QObject::tr("Enter one executable per line to be blacklisted from the virtual file system.\n"
+ "Mods and other virtualized files will not be visible to these executables and\n"
+ "any executables launched by them.\n\n"
+ "Example:\n"
+ " Chrome.exe\n"
+ " Firefox.exe"),
+ m_ExecutableBlacklist.split(";").join("\n"),
+ &ok
+ );
+ if (ok) {
+ QStringList blacklist;
+ for (auto exec : result.split("\n")) {
+ if (exec.trimmed().endsWith(".exe", Qt::CaseInsensitive)) {
+ blacklist << exec.trimmed();
+ }
+ }
+ m_ExecutableBlacklist = blacklist.join(";");
+ }
+}
+
+void WorkaroundsSettingsTab::on_bsaDateBtn_clicked()
+{
+ const auto* game = qApp->property("managed_game").value();
+ QDir dir = game->dataDirectory();
+
+ Helper::backdateBSAs(qApp->applicationDirPath().toStdWString(),
+ dir.absolutePath().toStdWString());
+}
+
+void WorkaroundsSettingsTab::on_resetGeometryBtn_clicked()
+{
+ m_dialog.m_GeometriesReset = true;
+ ui->resetGeometryBtn->setChecked(true);
+}
diff --git a/src/settingsdialogworkarounds.h b/src/settingsdialogworkarounds.h
new file mode 100644
index 00000000..1687624b
--- /dev/null
+++ b/src/settingsdialogworkarounds.h
@@ -0,0 +1,25 @@
+#ifndef SETTINGSDIALOGWORKAROUNDS_H
+#define SETTINGSDIALOGWORKAROUNDS_H
+
+#include "settings.h"
+#include "settingsdialog.h"
+
+class WorkaroundsSettingsTab : public SettingsTab
+{
+public:
+ WorkaroundsSettingsTab(Settings *m_parent, SettingsDialog &m_dialog);
+
+ void update();
+
+private:
+ QString m_ExecutableBlacklist;
+
+ void on_bsaDateBtn_clicked();
+ void on_execBlacklistBtn_clicked();
+ void on_resetGeometryBtn_clicked();
+
+ QString getExecutableBlacklist() { return m_ExecutableBlacklist; }
+ void setExecutableBlacklist(QString blacklist) { m_ExecutableBlacklist = blacklist; }
+};
+
+#endif // SETTINGSDIALOGWORKAROUNDS_H
--
cgit v1.3.1
From e8d7930edacdc04a4607ecd59fc402f2f04ea39d Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Sat, 20 Jul 2019 10:59:07 -0400
Subject: split diagnostics tab fixed log and crash dump directory links in
label not working
---
src/CMakeLists.txt | 3 +++
src/settings.cpp | 32 ++------------------------------
src/settings.h | 18 ------------------
src/settingsdialog.ui | 3 +++
src/settingsdialogdiagnostics.cpp | 28 ++++++++++++++++++++++++++++
src/settingsdialogdiagnostics.h | 17 +++++++++++++++++
6 files changed, 53 insertions(+), 48 deletions(-)
create mode 100644 src/settingsdialogdiagnostics.cpp
create mode 100644 src/settingsdialogdiagnostics.h
(limited to 'src/settings.cpp')
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 86ef9721..d8316e7e 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -37,6 +37,7 @@ SET(organizer_SRCS
spawn.cpp
singleinstance.cpp
settingsdialog.cpp
+ settingsdialogdiagnostics.cpp
settingsdialoggeneral.cpp
settingsdialognexus.cpp
settingsdialogpaths.cpp
@@ -157,6 +158,7 @@ SET(organizer_HDRS
spawn.h
singleinstance.h
settingsdialog.h
+ settingsdialogdiagnostics.h
settingsdialoggeneral.h
settingsdialognexus.h
settingsdialogpaths.h
@@ -443,6 +445,7 @@ set(profiles
set(settings
settings
settingsdialog
+ settingsdialogdiagnostics
settingsdialoggeneral
settingsdialognexus
settingsdialogpaths
diff --git a/src/settings.cpp b/src/settings.cpp
index 515ff907..725b7e06 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -22,6 +22,7 @@ along with Mod Organizer. If not, see .
#include "pluginsetting.h"
#include "serverinfo.h"
#include "settingsdialog.h"
+#include "settingsdialogdiagnostics.h"
#include "settingsdialoggeneral.h"
#include "settingsdialognexus.h"
#include "settingsdialogpaths.h"
@@ -676,7 +677,7 @@ void Settings::query(PluginContainer *pluginContainer, QWidget *parent)
tabs.push_back(std::unique_ptr(new GeneralSettingsTab(this, dialog)));
tabs.push_back(std::unique_ptr(new PathsSettingsTab(this, dialog)));
- tabs.push_back(std::unique_ptr(new DiagnosticsTab(this, dialog)));
+ tabs.push_back(std::unique_ptr(new DiagnosticsSettingsTab(this, dialog)));
tabs.push_back(std::unique_ptr(new NexusSettingsTab(this, dialog)));
tabs.push_back(std::unique_ptr(new SteamSettingsTab(this, dialog)));
tabs.push_back(std::unique_ptr(new PluginsSettingsTab(this, dialog)));
@@ -742,32 +743,3 @@ void Settings::query(PluginContainer *pluginContainer, QWidget *parent)
}
}
-
-
-Settings::DiagnosticsTab::DiagnosticsTab(Settings *m_parent, SettingsDialog &m_dialog)
- : SettingsTab(m_parent, m_dialog)
- , m_logLevelBox(m_dialog.findChild("logLevelBox"))
- , m_dumpsTypeBox(m_dialog.findChild("dumpsTypeBox"))
- , m_dumpsMaxEdit(m_dialog.findChild("dumpsMaxEdit"))
- , m_diagnosticsExplainedLabel(m_dialog.findChild("diagnosticsExplainedLabel"))
-{
- setLevelsBox();
- m_dumpsTypeBox->setCurrentIndex(m_parent->crashDumpsType());
- m_dumpsMaxEdit->setValue(m_parent->crashDumpsMax());
- QString logsPath = qApp->property("dataPath").toString()
- + "/" + QString::fromStdWString(AppConfig::logPath());
- m_diagnosticsExplainedLabel->setText(
- m_diagnosticsExplainedLabel->text()
- .replace("LOGS_FULL_PATH", logsPath)
- .replace("LOGS_DIR", QString::fromStdWString(AppConfig::logPath()))
- .replace("DUMPS_FULL_PATH", QString::fromStdWString(OrganizerCore::crashDumpsPath()))
- .replace("DUMPS_DIR", QString::fromStdWString(AppConfig::dumpsDir()))
- );
-}
-
-void Settings::DiagnosticsTab::update()
-{
- m_Settings.setValue("Settings/log_level", m_logLevelBox->currentData().toInt());
- m_Settings.setValue("Settings/crash_dumps_type", m_dumpsTypeBox->currentIndex());
- m_Settings.setValue("Settings/crash_dumps_max", m_dumpsMaxEdit->value());
-}
diff --git a/src/settings.h b/src/settings.h
index 64068173..71fbcbc1 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -449,24 +449,6 @@ private:
void readPluginBlacklist();
QString getConfigurablePath(const QString &key, const QString &def, bool resolve) const;
-
-
- class DiagnosticsTab : public SettingsTab
- {
- public:
- DiagnosticsTab(Settings *parent, SettingsDialog &dialog);
-
- void update();
-
- private:
- QComboBox *m_logLevelBox;
- QComboBox *m_dumpsTypeBox;
- QSpinBox *m_dumpsMaxEdit;
- QLabel *m_diagnosticsExplainedLabel;
-
- void setLevelsBox();
- };
-
private slots:
signals:
diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui
index 3ad525e1..1deac400 100644
--- a/src/settingsdialog.ui
+++ b/src/settingsdialog.ui
@@ -1325,6 +1325,9 @@ programs you are intentionally running.
true
+
+ true
+
-
diff --git a/src/settingsdialogdiagnostics.cpp b/src/settingsdialogdiagnostics.cpp
new file mode 100644
index 00000000..2ea4d478
--- /dev/null
+++ b/src/settingsdialogdiagnostics.cpp
@@ -0,0 +1,28 @@
+#include "settingsdialogdiagnostics.h"
+#include "ui_settingsdialog.h"
+#include "appconfig.h"
+#include "organizercore.h"
+
+DiagnosticsSettingsTab::DiagnosticsSettingsTab(Settings *m_parent, SettingsDialog &m_dialog)
+ : SettingsTab(m_parent, m_dialog)
+{
+ ui->logLevelBox->setCurrentIndex(m_parent->logLevel());
+ ui->dumpsTypeBox->setCurrentIndex(m_parent->crashDumpsType());
+ ui->dumpsMaxEdit->setValue(m_parent->crashDumpsMax());
+ QString logsPath = qApp->property("dataPath").toString()
+ + "/" + QString::fromStdWString(AppConfig::logPath());
+ ui->diagnosticsExplainedLabel->setText(
+ ui->diagnosticsExplainedLabel->text()
+ .replace("LOGS_FULL_PATH", logsPath)
+ .replace("LOGS_DIR", QString::fromStdWString(AppConfig::logPath()))
+ .replace("DUMPS_FULL_PATH", QString::fromStdWString(OrganizerCore::crashDumpsPath()))
+ .replace("DUMPS_DIR", QString::fromStdWString(AppConfig::dumpsDir()))
+ );
+}
+
+void DiagnosticsSettingsTab::update()
+{
+ m_Settings.setValue("Settings/log_level", ui->logLevelBox->currentIndex());
+ m_Settings.setValue("Settings/crash_dumps_type", ui->dumpsTypeBox->currentIndex());
+ m_Settings.setValue("Settings/crash_dumps_max", ui->dumpsMaxEdit->value());
+}
diff --git a/src/settingsdialogdiagnostics.h b/src/settingsdialogdiagnostics.h
new file mode 100644
index 00000000..2341c253
--- /dev/null
+++ b/src/settingsdialogdiagnostics.h
@@ -0,0 +1,17 @@
+#ifndef SETTINGSDIALOGDIAGNOSTICS_H
+#define SETTINGSDIALOGDIAGNOSTICS_H
+
+#include "settings.h"
+#include "settingsdialog.h"
+
+class DiagnosticsSettingsTab : public SettingsTab
+{
+public:
+ DiagnosticsSettingsTab(Settings *parent, SettingsDialog &dialog);
+
+ void update();
+
+private:
+};
+
+#endif // SETTINGSDIALOGDIAGNOSTICS_H
--
cgit v1.3.1
From 107b396902be52f8ae305f58d4e7d85a86779051 Mon Sep 17 00:00:00 2001
From: isanae <14251494+isanae@users.noreply.github.com>
Date: Sat, 20 Jul 2019 11:12:28 -0400
Subject: moved tabs to SettingsDialog removed Settings::query(), main window
now deals with SettingsDialog directly
---
src/mainwindow.cpp | 5 +-
src/settings.cpp | 100 ----------------------------------------
src/settings.h | 55 +---------------------
src/settingsdialog.cpp | 105 +++++++++++++++++++++++++++++++++++++++++-
src/settingsdialog.h | 26 +++++++++--
src/settingsdialogplugins.cpp | 2 +
6 files changed, 133 insertions(+), 160 deletions(-)
(limited to 'src/settings.cpp')
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 7c73bc8a..28405819 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -72,6 +72,7 @@ along with Mod Organizer. If not, see .
#include "previewdialog.h"
#include "browserdialog.h"
#include "aboutdialog.h"
+#include "settingsdialog.h"
#include
#include "nxmaccessmanager.h"
#include "appconfig.h"
@@ -5217,7 +5218,9 @@ void MainWindow::on_actionSettings_triggered()
bool proxy = settings.useProxy();
DownloadManager *dlManager = m_OrganizerCore.downloadManager();
- settings.query(&m_PluginContainer, this);
+
+ SettingsDialog dialog(&m_PluginContainer, &settings, this);
+ dialog.exec();
if (oldManagedGameDirectory != settings.getManagedGameDirectory()) {
QMessageBox::about(this, tr("Restarting MO"),
diff --git a/src/settings.cpp b/src/settings.cpp
index 725b7e06..dc07e107 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -21,14 +21,6 @@ along with Mod Organizer. If not, see .
#include "pluginsetting.h"
#include "serverinfo.h"
-#include "settingsdialog.h"
-#include "settingsdialogdiagnostics.h"
-#include "settingsdialoggeneral.h"
-#include "settingsdialognexus.h"
-#include "settingsdialogpaths.h"
-#include "settingsdialogplugins.h"
-#include "settingsdialogsteam.h"
-#include "settingsdialogworkarounds.h"
#include "versioninfo.h"
#include "appconfig.h"
#include "organizercore.h"
@@ -75,23 +67,6 @@ along with Mod Organizer. If not, see .
using namespace MOBase;
-SettingsTab::SettingsTab(Settings *m_parent, SettingsDialog &m_dialog)
- : m_parent(m_parent)
- , m_Settings(m_parent->settingsRef())
- , m_dialog(m_dialog)
- , ui(m_dialog.ui)
-{
-}
-
-SettingsTab::~SettingsTab()
-{}
-
-QWidget* SettingsTab::parentWidget()
-{
- return &m_dialog;
-}
-
-
Settings *Settings::s_Instance = nullptr;
@@ -668,78 +643,3 @@ void Settings::writePluginBlacklist()
m_Settings.endArray();
}
-
-void Settings::query(PluginContainer *pluginContainer, QWidget *parent)
-{
- SettingsDialog dialog(pluginContainer, this, parent);
-
- std::vector> tabs;
-
- tabs.push_back(std::unique_ptr(new GeneralSettingsTab(this, dialog)));
- tabs.push_back(std::unique_ptr(new PathsSettingsTab(this, dialog)));
- tabs.push_back(std::unique_ptr(new DiagnosticsSettingsTab(this, dialog)));
- tabs.push_back(std::unique_ptr(new NexusSettingsTab(this, dialog)));
- tabs.push_back(std::unique_ptr(new SteamSettingsTab(this, dialog)));
- tabs.push_back(std::unique_ptr(new PluginsSettingsTab(this, dialog)));
- tabs.push_back(std::unique_ptr(new WorkaroundsSettingsTab(this, dialog)));
-
-
- QString key = QString("geometry/%1").arg(dialog.objectName());
- if (m_Settings.contains(key)) {
- dialog.restoreGeometry(m_Settings.value(key).toByteArray());
- }
-
- if (dialog.exec() == QDialog::Accepted) {
-
- for (auto&& tab : tabs) {
- tab->closing();
- }
-
- // remember settings before change
- QMap before;
- m_Settings.beginGroup("Settings");
- for (auto k : m_Settings.allKeys())
- before[k] = m_Settings.value(k).toString();
- m_Settings.endGroup();
-
- // transfer modified settings to configuration file
- for (std::unique_ptr const &tab: tabs) {
- tab->update();
- }
-
- // print "changed" settings
- m_Settings.beginGroup("Settings");
- bool first_update = true;
- for (auto k : m_Settings.allKeys())
- if (m_Settings.value(k).toString() != before[k] && !k.contains("username") && !k.contains("password"))
- {
- if (first_update) {
- log::debug("Changed settings:");
- first_update = false;
- }
- log::debug(" {}={}", k, m_Settings.value(k).toString());
- }
- m_Settings.endGroup();
- }
- m_Settings.setValue(key, dialog.saveGeometry());
-
- // These changes happen regardless of accepted or rejected
- bool restartNeeded = false;
- if (dialog.getApiKeyChanged()) {
- restartNeeded = true;
- }
- if (dialog.getResetGeometries()) {
- restartNeeded = true;
- m_Settings.setValue("reset_geometry", true);
- }
- if (restartNeeded) {
- if (QMessageBox::question(nullptr,
- tr("Restart Mod Organizer?"),
- tr("In order to finish configuration changes, MO must be restarted.\n"
- "Restart it now?"),
- QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
- qApp->exit(INT_MAX);
- }
- }
-
-}
diff --git a/src/settings.h b/src/settings.h
index 71fbcbc1..899baaa3 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -26,60 +26,21 @@ along with Mod Organizer. If not, see .
#include
#include
#include
-#include
#include
#include
#include
#include
#include
-#include
-
-#include //for uint
-
#include