summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2021-01-29 20:03:47 +0100
committerMikaël Capelle <capelle.mikael@gmail.com>2021-01-29 20:03:47 +0100
commit7610e3139408a8947795140a14a6bd396d4e0f71 (patch)
treeec329fd049debd8f71e278ebba3280c6fe2270ce /src
parentd0796b4ab23122d5f01378743d93f8c75b19c35c (diff)
Reorganize settingsdialog classes to match UI.
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt4
-rw-r--r--src/settingsdialog.cpp8
-rw-r--r--src/settingsdialoggeneral.cpp74
-rw-r--r--src/settingsdialoggeneral.h4
-rw-r--r--src/settingsdialogmodlist.cpp (renamed from src/settingsdialoguserinterface.cpp)30
-rw-r--r--src/settingsdialogmodlist.h (renamed from src/settingsdialoguserinterface.h)8
-rw-r--r--src/settingsdialognexus.cpp8
-rw-r--r--src/settingsdialogsteam.cpp17
-rw-r--r--src/settingsdialogsteam.h14
-rw-r--r--src/settingsdialogtheme.cpp82
-rw-r--r--src/settingsdialogtheme.h24
-rw-r--r--src/settingsdialogworkarounds.cpp35
12 files changed, 170 insertions, 138 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index e8c52721..393ee79a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -202,9 +202,9 @@ add_filter(NAME src/settingsdialog GROUPS
settingsdialognexus
settingsdialogpaths
settingsdialogplugins
- settingsdialogsteam
settingsdialogworkarounds
- settingsdialoguserinterface
+ settingsdialogmodlist
+ settingsdialogtheme
disableproxyplugindialog
)
diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp
index d6b7ceec..b14deafa 100644
--- a/src/settingsdialog.cpp
+++ b/src/settingsdialog.cpp
@@ -24,8 +24,8 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "settingsdialognexus.h"
#include "settingsdialogpaths.h"
#include "settingsdialogplugins.h"
-#include "settingsdialogsteam.h"
-#include "settingsdialoguserinterface.h"
+#include "settingsdialogmodlist.h"
+#include "settingsdialogtheme.h"
#include "settingsdialogworkarounds.h"
using namespace MOBase;
@@ -40,11 +40,11 @@ SettingsDialog::SettingsDialog(PluginContainer *pluginContainer, Settings& setti
ui->setupUi(this);
m_tabs.push_back(std::unique_ptr<SettingsTab>(new GeneralSettingsTab(settings, *this)));
- m_tabs.push_back(std::unique_ptr<SettingsTab>(new UserInterfaceSettingsTab(settings, *this)));
+ m_tabs.push_back(std::unique_ptr<SettingsTab>(new ThemeSettingsTab(settings, *this)));
+ m_tabs.push_back(std::unique_ptr<SettingsTab>(new ModListSettingsTab(settings, *this)));
m_tabs.push_back(std::unique_ptr<SettingsTab>(new PathsSettingsTab(settings, *this)));
m_tabs.push_back(std::unique_ptr<SettingsTab>(new DiagnosticsSettingsTab(settings, *this)));
m_tabs.push_back(std::unique_ptr<SettingsTab>(new NexusSettingsTab(settings, *this)));
- m_tabs.push_back(std::unique_ptr<SettingsTab>(new SteamSettingsTab(settings, *this)));
m_tabs.push_back(std::unique_ptr<SettingsTab>(new PluginsSettingsTab(settings, m_pluginContainer, *this)));
m_tabs.push_back(std::unique_ptr<SettingsTab>(new WorkaroundsSettingsTab(settings, *this)));
}
diff --git a/src/settingsdialoggeneral.cpp b/src/settingsdialoggeneral.cpp
index 11294d2a..30039575 100644
--- a/src/settingsdialoggeneral.cpp
+++ b/src/settingsdialoggeneral.cpp
@@ -11,19 +11,23 @@ using namespace MOBase;
GeneralSettingsTab::GeneralSettingsTab(Settings& s, SettingsDialog& d)
: SettingsTab(s, d)
{
+ // language
addLanguages();
selectLanguage();
- addStyles();
- selectStyle();
+ // download list
+ ui->compactBox->setChecked(settings().interface().compactDownloads());
+ ui->showMetaBox->setChecked(settings().interface().metaDownloads());
+ ui->hideDownloadInstallBox->setChecked(settings().interface().hideDownloadsAfterInstallation());
- ui->centerDialogs->setChecked(settings().geometry().centerDialogs());
- ui->changeGameConfirmation->setChecked(settings().interface().showChangeGameConfirmation());
- ui->doubleClickPreviews->setChecked(settings().interface().doubleClicksOpenPreviews());
+ // updates
ui->checkForUpdates->setChecked(settings().checkForUpdates());
ui->usePrereleaseBox->setChecked(settings().usePrereleases());
- QObject::connect(ui->exploreStyles, &QPushButton::clicked, [&]{ onExploreStyles(); });
+ // miscellaneous
+ ui->centerDialogs->setChecked(settings().geometry().centerDialogs());
+ ui->changeGameConfirmation->setChecked(settings().interface().showChangeGameConfirmation());
+ ui->doubleClickPreviews->setChecked(settings().interface().doubleClicksOpenPreviews());
QObject::connect(
ui->categoriesBtn, &QPushButton::clicked, [&]{ onEditCategories(); });
@@ -34,6 +38,7 @@ GeneralSettingsTab::GeneralSettingsTab(Settings& s, SettingsDialog& d)
void GeneralSettingsTab::update()
{
+ // language
const QString oldLanguage = settings().interface().language();
const QString newLanguage = ui->languageBox->itemData(
ui->languageBox->currentIndex()).toString();
@@ -43,20 +48,19 @@ void GeneralSettingsTab::update()
emit settings().languageChanged(newLanguage);
}
- const QString oldStyle = settings().interface().styleName().value_or("");
- const QString newStyle = ui->styleBox->itemData(
- ui->styleBox->currentIndex()).toString();
+ // download list
+ settings().interface().setCompactDownloads(ui->compactBox->isChecked());
+ settings().interface().setMetaDownloads(ui->showMetaBox->isChecked());
+ settings().interface().setHideDownloadsAfterInstallation(ui->hideDownloadInstallBox->isChecked());
- if (oldStyle != newStyle) {
- settings().interface().setStyleName(newStyle);
- emit settings().styleChanged(newStyle);
- }
+ // updates
+ settings().setCheckForUpdates(ui->checkForUpdates->isChecked());
+ settings().setUsePrereleases(ui->usePrereleaseBox->isChecked());
+ // miscellaneous
settings().geometry().setCenterDialogs(ui->centerDialogs->isChecked());
settings().interface().setShowChangeGameConfirmation(ui->changeGameConfirmation->isChecked());
settings().interface().setDoubleClicksOpenPreviews(ui->doubleClickPreviews->isChecked());
- settings().setCheckForUpdates(ui->checkForUpdates->isChecked());
- settings().setUsePrereleases(ui->usePrereleaseBox->isChecked());
}
void GeneralSettingsTab::addLanguages()
@@ -127,52 +131,12 @@ void GeneralSettingsTab::selectLanguage()
}
}
-void GeneralSettingsTab::addStyles()
-{
- ui->styleBox->addItem("None", "");
- for (auto&& key : QStyleFactory::keys()) {
- ui->styleBox->addItem(key, key);
- }
-
- ui->styleBox->insertSeparator(ui->styleBox->count());
-
- QDirIterator iter(
- QCoreApplication::applicationDirPath() + "/" +
- QString::fromStdWString(AppConfig::stylesheetsPath()),
- QStringList("*.qss"),
- QDir::Files);
-
- while (iter.hasNext()) {
- iter.next();
-
- ui->styleBox->addItem(
- iter.fileInfo().completeBaseName(),
- iter.fileName());
- }
-}
-
-void GeneralSettingsTab::selectStyle()
-{
- const int currentID = ui->styleBox->findData(
- settings().interface().styleName().value_or(""));
-
- if (currentID != -1) {
- ui->styleBox->setCurrentIndex(currentID);
- }
-}
-
void GeneralSettingsTab::resetDialogs()
{
settings().widgets().resetQuestionButtons();
GlobalSettings::resetDialogs();
}
-void GeneralSettingsTab::onExploreStyles()
-{
- QString ssPath = QCoreApplication::applicationDirPath() + "/" + ToQString(AppConfig::stylesheetsPath());
- shell::Explore(ssPath);
-}
-
void GeneralSettingsTab::onEditCategories()
{
CategoriesDialog dialog(&dialog());
diff --git a/src/settingsdialoggeneral.h b/src/settingsdialoggeneral.h
index 51e0dc72..8d82564d 100644
--- a/src/settingsdialoggeneral.h
+++ b/src/settingsdialoggeneral.h
@@ -15,12 +15,8 @@ private:
void addLanguages();
void selectLanguage();
- void addStyles();
- void selectStyle();
-
void resetDialogs();
- void onExploreStyles();
void onEditCategories();
void onResetDialogs();
};
diff --git a/src/settingsdialoguserinterface.cpp b/src/settingsdialogmodlist.cpp
index 503e0feb..4c04e3f5 100644
--- a/src/settingsdialoguserinterface.cpp
+++ b/src/settingsdialogmodlist.cpp
@@ -1,4 +1,4 @@
-#include "settingsdialoguserinterface.h"
+#include "settingsdialogmodlist.h"
#include "ui_settingsdialog.h"
#include "shared/appconfig.h"
#include "categoriesdialog.h"
@@ -9,7 +9,7 @@
using namespace MOBase;
-UserInterfaceSettingsTab::UserInterfaceSettingsTab(Settings& s, SettingsDialog& d)
+ModListSettingsTab::ModListSettingsTab(Settings& s, SettingsDialog& d)
: SettingsTab(s, d),
m_columnToBox{
{ ModList::COL_CONFLICTFLAGS, ui->collapsibleSeparatorsIconsConflictsBox },
@@ -18,14 +18,12 @@ UserInterfaceSettingsTab::UserInterfaceSettingsTab(Settings& s, SettingsDialog&
{ ModList::COL_VERSION, ui->collapsibleSeparatorsIconsVersionBox }
}
{
-
// connect before setting to trigger
QObject::connect(ui->collapsibleSeparatorsAscBox, &QCheckBox::toggled, [=] { updateCollapsibleSeparatorsGroup(); });
QObject::connect(ui->collapsibleSeparatorsDscBox, &QCheckBox::toggled, [=] { updateCollapsibleSeparatorsGroup(); });
- // mod list
- ui->displayForeignBox->setChecked(settings().interface().displayForeign());
ui->colorSeparatorsBox->setChecked(settings().colors().colorSeparatorScrollbar());
+ ui->displayForeignBox->setChecked(settings().interface().displayForeign());
ui->collapsibleSeparatorsAscBox->setChecked(settings().interface().collapsibleSeparators(Qt::AscendingOrder));
ui->collapsibleSeparatorsDscBox->setChecked(settings().interface().collapsibleSeparators(Qt::DescendingOrder));
ui->collapsibleSeparatorsHighlightFromBox->setChecked(settings().interface().collapsibleSeparatorsHighlightFrom());
@@ -39,19 +37,9 @@ UserInterfaceSettingsTab::UserInterfaceSettingsTab(Settings& s, SettingsDialog&
p.second->setChecked(settings().interface().collapsibleSeparatorsIcons(p.first));
}
- // download list
- ui->compactBox->setChecked(settings().interface().compactDownloads());
- ui->showMetaBox->setChecked(settings().interface().metaDownloads());
- ui->hideDownloadInstallBox->setChecked(settings().interface().hideDownloadsAfterInstallation());
-
- // colors
- ui->colorTable->load(s);
-
- QObject::connect(ui->resetColorsBtn, &QPushButton::clicked, [&] { ui->colorTable->resetColors(); });
-
}
-void UserInterfaceSettingsTab::update()
+void ModListSettingsTab::update()
{
// mod list
settings().colors().setColorSeparatorScrollbar(ui->colorSeparatorsBox->isChecked());
@@ -68,17 +56,9 @@ void UserInterfaceSettingsTab::update()
for (auto& p : m_columnToBox) {
settings().interface().setCollapsibleSeparatorsIcons(p.first, p.second->isChecked());
}
-
- // download list
- settings().interface().setCompactDownloads(ui->compactBox->isChecked());
- settings().interface().setMetaDownloads(ui->showMetaBox->isChecked());
- settings().interface().setHideDownloadsAfterInstallation(ui->hideDownloadInstallBox->isChecked());
-
- // colors
- ui->colorTable->commitColors();
}
-void UserInterfaceSettingsTab::updateCollapsibleSeparatorsGroup()
+void ModListSettingsTab::updateCollapsibleSeparatorsGroup()
{
const auto checked = ui->collapsibleSeparatorsAscBox->isChecked() ||
ui->collapsibleSeparatorsDscBox->isChecked();
diff --git a/src/settingsdialoguserinterface.h b/src/settingsdialogmodlist.h
index 0c3c7fb7..0c0510b5 100644
--- a/src/settingsdialoguserinterface.h
+++ b/src/settingsdialogmodlist.h
@@ -1,15 +1,15 @@
-#ifndef SETTINGSDIALOGUSERINTERFACE_H
-#define SETTINGSDIALOGUSERINTERFACE_H
+#ifndef SETTINGSDIALOGMODLIST_H
+#define SETTINGSDIALOGMODLIST_H
#include <QCheckBox>
#include "settingsdialog.h"
#include "settings.h"
-class UserInterfaceSettingsTab : public SettingsTab
+class ModListSettingsTab : public SettingsTab
{
public:
- UserInterfaceSettingsTab(Settings& settings, SettingsDialog& dialog);
+ ModListSettingsTab(Settings& settings, SettingsDialog& dialog);
void update() override;
diff --git a/src/settingsdialognexus.cpp b/src/settingsdialognexus.cpp
index 48827a0e..364c6aa7 100644
--- a/src/settingsdialognexus.cpp
+++ b/src/settingsdialognexus.cpp
@@ -295,13 +295,9 @@ void NexusConnectionUI::updateState()
NexusSettingsTab::NexusSettingsTab(Settings& s, SettingsDialog& d)
: SettingsTab(s, d)
{
- ui->offlineBox->setChecked(settings().network().offlineMode());
- ui->proxyBox->setChecked(settings().network().useProxy());
ui->endorsementBox->setChecked(settings().nexus().endorsementIntegration());
ui->trackedBox->setChecked(settings().nexus().trackedIntegration());
ui->hideAPICounterBox->setChecked(settings().interface().hideAPICounter());
- ui->useCustomBrowser->setChecked(settings().network().useCustomBrowser());
- ui->browserCommand->setText(settings().network().customBrowserCommand());
// display server preferences
for (const auto& server : s.network().servers()) {
@@ -358,13 +354,9 @@ NexusSettingsTab::NexusSettingsTab(Settings& s, SettingsDialog& d)
void NexusSettingsTab::update()
{
- settings().network().setOfflineMode(ui->offlineBox->isChecked());
- settings().network().setUseProxy(ui->proxyBox->isChecked());
settings().nexus().setEndorsementIntegration(ui->endorsementBox->isChecked());
settings().nexus().setTrackedIntegration(ui->trackedBox->isChecked());
settings().interface().setHideAPICounter(ui->hideAPICounterBox->isChecked());
- settings().network().setUseCustomBrowser(ui->useCustomBrowser->isChecked());
- settings().network().setCustomBrowserCommand(ui->browserCommand->text());
auto servers = settings().network().servers();
diff --git a/src/settingsdialogsteam.cpp b/src/settingsdialogsteam.cpp
deleted file mode 100644
index 3c4c5de6..00000000
--- a/src/settingsdialogsteam.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-#include "settingsdialogsteam.h"
-#include "ui_settingsdialog.h"
-
-SteamSettingsTab::SteamSettingsTab(Settings& s, SettingsDialog& d)
- : SettingsTab(s, d)
-{
- QString username, password;
- settings().steam().login(username, password);
-
- ui->steamUserEdit->setText(username);
- ui->steamPassEdit->setText(password);
-}
-
-void SteamSettingsTab::update()
-{
- settings().steam().setLogin(ui->steamUserEdit->text(), ui->steamPassEdit->text());
-}
diff --git a/src/settingsdialogsteam.h b/src/settingsdialogsteam.h
deleted file mode 100644
index 6a3d75f4..00000000
--- a/src/settingsdialogsteam.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef SETTINGSDIALOGSTEAM_H
-#define SETTINGSDIALOGSTEAM_H
-
-#include "settings.h"
-#include "settingsdialog.h"
-
-class SteamSettingsTab : public SettingsTab
-{
-public:
- SteamSettingsTab(Settings& settings, SettingsDialog& dialog);
- void update();
-};
-
-#endif // SETTINGSDIALOGSTEAM_H
diff --git a/src/settingsdialogtheme.cpp b/src/settingsdialogtheme.cpp
new file mode 100644
index 00000000..9b32773b
--- /dev/null
+++ b/src/settingsdialogtheme.cpp
@@ -0,0 +1,82 @@
+#include "settingsdialogtheme.h"
+#include "ui_settingsdialog.h"
+#include "shared/appconfig.h"
+#include "categoriesdialog.h"
+#include "colortable.h"
+#include "modlist.h"
+#include <utility.h>
+#include <questionboxmemory.h>
+
+using namespace MOBase;
+
+ThemeSettingsTab::ThemeSettingsTab(Settings& s, SettingsDialog& d)
+ : SettingsTab(s, d)
+{
+ // style
+ addStyles();
+ selectStyle();
+
+ // colors
+ ui->colorTable->load(s);
+
+ QObject::connect(ui->resetColorsBtn, &QPushButton::clicked, [&] { ui->colorTable->resetColors(); });
+
+ QObject::connect(ui->exploreStyles, &QPushButton::clicked, [&] { onExploreStyles(); });
+}
+
+void ThemeSettingsTab::update()
+{
+ // style
+ const QString oldStyle = settings().interface().styleName().value_or("");
+ const QString newStyle = ui->styleBox->itemData(
+ ui->styleBox->currentIndex()).toString();
+
+ if (oldStyle != newStyle) {
+ settings().interface().setStyleName(newStyle);
+ emit settings().styleChanged(newStyle);
+ }
+
+ // colors
+ ui->colorTable->commitColors();
+}
+
+void ThemeSettingsTab::addStyles()
+{
+ ui->styleBox->addItem("None", "");
+ for (auto&& key : QStyleFactory::keys()) {
+ ui->styleBox->addItem(key, key);
+ }
+
+ ui->styleBox->insertSeparator(ui->styleBox->count());
+
+ QDirIterator iter(
+ QCoreApplication::applicationDirPath() + "/" +
+ QString::fromStdWString(AppConfig::stylesheetsPath()),
+ QStringList("*.qss"),
+ QDir::Files);
+
+ while (iter.hasNext()) {
+ iter.next();
+
+ ui->styleBox->addItem(
+ iter.fileInfo().completeBaseName(),
+ iter.fileName());
+ }
+}
+
+void ThemeSettingsTab::selectStyle()
+{
+ const int currentID = ui->styleBox->findData(
+ settings().interface().styleName().value_or(""));
+
+ if (currentID != -1) {
+ ui->styleBox->setCurrentIndex(currentID);
+ }
+}
+
+void ThemeSettingsTab::onExploreStyles()
+{
+ QString ssPath = QCoreApplication::applicationDirPath() + "/" + ToQString(AppConfig::stylesheetsPath());
+ shell::Explore(ssPath);
+}
+
diff --git a/src/settingsdialogtheme.h b/src/settingsdialogtheme.h
new file mode 100644
index 00000000..61334c0b
--- /dev/null
+++ b/src/settingsdialogtheme.h
@@ -0,0 +1,24 @@
+#ifndef SETTINGSDIALOGTHEME_H
+#define SETTINGSDIALOGTHEME_H
+
+#include <QCheckBox>
+
+#include "settingsdialog.h"
+#include "settings.h"
+
+class ThemeSettingsTab : public SettingsTab
+{
+public:
+ ThemeSettingsTab(Settings& settings, SettingsDialog& dialog);
+
+ void update() override;
+
+private:
+
+ void addStyles();
+ void selectStyle();
+ void onExploreStyles();
+
+};
+
+#endif // SETTINGSDIALOGGENERAL_H
diff --git a/src/settingsdialogworkarounds.cpp b/src/settingsdialogworkarounds.cpp
index 5a4b15ca..17b2259b 100644
--- a/src/settingsdialogworkarounds.cpp
+++ b/src/settingsdialogworkarounds.cpp
@@ -8,12 +8,26 @@
WorkaroundsSettingsTab::WorkaroundsSettingsTab(Settings& s, SettingsDialog& d)
: SettingsTab(s, d)
{
- ui->appIDEdit->setText(settings().steam().appID());
-
+ // options
ui->forceEnableBox->setChecked(settings().game().forceEnableCoreFiles());
ui->lockGUIBox->setChecked(settings().interface().lockGUI());
ui->enableArchiveParsingBox->setChecked(settings().archiveParsing());
+ // steam
+ QString username, password;
+ settings().steam().login(username, password);
+
+ ui->appIDEdit->setText(settings().steam().appID());
+ ui->steamUserEdit->setText(username);
+ ui->steamPassEdit->setText(password);
+
+ // network
+ ui->offlineBox->setChecked(settings().network().offlineMode());
+ ui->proxyBox->setChecked(settings().network().useProxy());
+ ui->useCustomBrowser->setChecked(settings().network().useCustomBrowser());
+ ui->browserCommand->setText(settings().network().customBrowserCommand());
+
+ // buttons
m_ExecutableBlacklist = settings().executablesBlacklist();
QObject::connect(ui->bsaDateBtn, &QPushButton::clicked, [&]{ on_bsaDateBtn_clicked(); });
@@ -23,15 +37,26 @@ WorkaroundsSettingsTab::WorkaroundsSettingsTab(Settings& s, SettingsDialog& d)
void WorkaroundsSettingsTab::update()
{
+ // options
+ settings().game().setForceEnableCoreFiles(ui->forceEnableBox->isChecked());
+ settings().interface().setLockGUI(ui->lockGUIBox->isChecked());
+ settings().setArchiveParsing(ui->enableArchiveParsingBox->isChecked());
+
+ // steam
if (ui->appIDEdit->text() != settings().game().plugin()->steamAPPId()) {
settings().steam().setAppID(ui->appIDEdit->text());
} else {
settings().steam().setAppID("");
}
+ settings().steam().setLogin(ui->steamUserEdit->text(), ui->steamPassEdit->text());
- settings().game().setForceEnableCoreFiles(ui->forceEnableBox->isChecked());
- settings().interface().setLockGUI(ui->lockGUIBox->isChecked());
- settings().setArchiveParsing(ui->enableArchiveParsingBox->isChecked());
+ // network
+ settings().network().setOfflineMode(ui->offlineBox->isChecked());
+ settings().network().setUseProxy(ui->proxyBox->isChecked());
+ settings().network().setUseCustomBrowser(ui->useCustomBrowser->isChecked());
+ settings().network().setCustomBrowserCommand(ui->browserCommand->text());
+
+ // buttons
settings().setExecutablesBlacklist(m_ExecutableBlacklist);
}