summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-08-03 02:30:20 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-08-04 06:09:48 -0400
commite4418b95fa24f9caea32adfe9d957ce37e46f127 (patch)
tree0c987b752f3c0890ce4fe8a0978bb5cebe1ac65a /src
parent07f1ac7a96dcf4c91a24bb1d30af92851ecda78f (diff)
moved settings updates to Settings::processUpdates()
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp2
-rw-r--r--src/mainwindow.cpp44
-rw-r--r--src/mainwindow.h2
-rw-r--r--src/settings.cpp46
-rw-r--r--src/settings.h7
5 files changed, 67 insertions, 34 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 3e26ea17..506c6270 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -739,7 +739,7 @@ int runApplication(MOApplication &application, SingleInstance &instance,
QObject::connect(&instance, SIGNAL(messageSent(QString)), &organizer,
SLOT(externalMessage(QString)));
- mainWindow.processUpdates();
+ mainWindow.processUpdates(settings);
// this must be before readSettings(), see DockFixer in mainwindow.cpp
splash.finish(&mainWindow);
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index e77d08b1..0618f949 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -2280,11 +2280,15 @@ void MainWindow::readSettings(const Settings& settings)
DockFixer::restore(this, settings);
}
-void MainWindow::processUpdates() {
- QSettings settings(qApp->property("dataPath").toString() + "/" + QString::fromStdWString(AppConfig::iniFileName()), QSettings::IniFormat);
- QVersionNumber lastVersion = QVersionNumber::fromString(settings.value("version", "2.1.2").toString()).normalized();
- QVersionNumber currentVersion = QVersionNumber::fromString(m_OrganizerCore.getVersion().displayString()).normalized();
- if (!m_OrganizerCore.settings().directInterface().value("first_start", true).toBool()) {
+void MainWindow::processUpdates(Settings& settings) {
+ const auto earliest = QVersionNumber::fromString("2.1.2").normalized();
+
+ const auto lastVersion = settings.getVersion().value_or(earliest);
+ const auto currentVersion = m_OrganizerCore.getVersion().asQVersionNumber();
+
+ settings.processUpdates(currentVersion, lastVersion);
+
+ if (!settings.getFirstStart()) {
if (lastVersion < QVersionNumber(2, 1, 3)) {
bool lastHidden = true;
for (int i = ModList::COL_GAME; i < ui->modList->model()->columnCount(); ++i) {
@@ -2293,41 +2297,20 @@ void MainWindow::processUpdates() {
lastHidden = hidden;
}
}
+
if (lastVersion < QVersionNumber(2, 1, 6)) {
ui->modList->header()->setSectionHidden(ModList::COL_NOTES, true);
}
- if (lastVersion < QVersionNumber(2, 2, 0)) {
- QSettings &instance = Settings::instance().directInterface();
- instance.beginGroup("Settings");
- instance.remove("steam_password");
- instance.remove("nexus_username");
- instance.remove("nexus_password");
- instance.remove("nexus_login");
- instance.remove("nexus_api_key");
- instance.remove("ask_for_nexuspw");
- instance.remove("nmm_version");
- instance.endGroup();
- instance.beginGroup("Servers");
- instance.remove("");
- instance.endGroup();
- }
+
if (lastVersion < QVersionNumber(2, 2, 1)) {
// hide new columns by default
for (int i=DownloadList::COL_MODNAME; i<DownloadList::COL_COUNT; ++i) {
ui->downloadView->header()->hideSection(i);
}
}
- if (lastVersion < QVersionNumber(2, 2, 2)) {
- QSettings &instance = Settings::instance().directInterface();
-
- // log splitter is gone, it's a dock now
- instance.remove("log_split");
- }
}
- if (currentVersion > lastVersion) {
- //NOP
- } else if (currentVersion < lastVersion) {
+ if (currentVersion < lastVersion) {
const auto text = tr(
"Notice: Your current MO version (%1) is lower than the previously used one (%2). "
"The GUI may not downgrade gracefully, so you may experience oddities. "
@@ -2337,9 +2320,6 @@ void MainWindow::processUpdates() {
log::warn("{}", text);
}
-
- //save version in all case
- settings.setValue("version", currentVersion.toString());
}
void MainWindow::storeSettings(Settings& s) {
diff --git a/src/mainwindow.h b/src/mainwindow.h
index d4513c0f..e8f60211 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -121,7 +121,7 @@ public:
void storeSettings(Settings& settings) override;
void readSettings(const Settings& settings);
- void processUpdates();
+ void processUpdates(Settings& settings);
virtual ILockedWaitingForProcess* lock() override;
virtual void unlock() override;
diff --git a/src/settings.cpp b/src/settings.cpp
index d843a0db..35be1298 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -97,6 +97,38 @@ Settings &Settings::instance()
return *s_Instance;
}
+void Settings::processUpdates(
+ const QVersionNumber& currentVersion, const QVersionNumber& lastVersion)
+{
+ if (getFirstStart()) {
+ return;
+ }
+
+ if (lastVersion < QVersionNumber(2, 2, 0)) {
+ m_Settings.beginGroup("Settings");
+ m_Settings.remove("steam_password");
+ m_Settings.remove("nexus_username");
+ m_Settings.remove("nexus_password");
+ m_Settings.remove("nexus_login");
+ m_Settings.remove("nexus_api_key");
+ m_Settings.remove("ask_for_nexuspw");
+ m_Settings.remove("nmm_version");
+ m_Settings.endGroup();
+
+ m_Settings.beginGroup("Servers");
+ m_Settings.remove("");
+ m_Settings.endGroup();
+ }
+
+ if (lastVersion < QVersionNumber(2, 2, 2)) {
+ // log splitter is gone, it's a dock now
+ m_Settings.remove("log_split");
+ }
+
+ //save version in all case
+ m_Settings.setValue("version", currentVersion.toString());
+}
+
QString Settings::getFilename() const
{
return m_Settings.fileName();
@@ -397,6 +429,20 @@ std::optional<bool> Settings::getUseProxy() const
return getOptional<bool>(m_Settings, "Settings/use_proxy");
}
+std::optional<QVersionNumber> Settings::getVersion() const
+{
+ if (auto v=getOptional<QString>(m_Settings, "version")) {
+ return QVersionNumber::fromString(*v).normalized();
+ }
+
+ return {};
+}
+
+bool Settings::getFirstStart() const
+{
+ return getOptional<bool>(m_Settings, "first_start").value_or(true);
+}
+
QString Settings::getProfileDirectory(bool resolve) const
{
return getConfigurablePath("profiles_directory", ToQString(AppConfig::profilesPath()), resolve);
diff --git a/src/settings.h b/src/settings.h
index 066843c2..bf66c0dd 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -72,6 +72,9 @@ public:
static Settings &instance();
+ void processUpdates(
+ const QVersionNumber& currentVersion, const QVersionNumber& lastVersion);
+
QString getFilename() const;
/**
@@ -169,9 +172,13 @@ public:
std::optional<int> getSelectedExecutable() const;
std::optional<bool> getUseProxy() const;
+ std::optional<QVersionNumber> getVersion() const;
+ bool getFirstStart() const;
+
GeometrySettings& geometry();
const GeometrySettings& geometry() const;
+
/**
* retrieve the directory where profiles stored (with native separators)
**/