diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | src/settingsdialog.cpp | 8 | ||||
| -rw-r--r-- | src/settingsdialoggeneral.cpp | 74 | ||||
| -rw-r--r-- | src/settingsdialoggeneral.h | 4 | ||||
| -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.cpp | 8 | ||||
| -rw-r--r-- | src/settingsdialogsteam.cpp | 17 | ||||
| -rw-r--r-- | src/settingsdialogsteam.h | 14 | ||||
| -rw-r--r-- | src/settingsdialogtheme.cpp | 82 | ||||
| -rw-r--r-- | src/settingsdialogtheme.h | 24 | ||||
| -rw-r--r-- | src/settingsdialogworkarounds.cpp | 35 |
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); } |
