From 44f12ba7f01a0d16a61beed483465161488ba72d Mon Sep 17 00:00:00 2001 From: Neil Horne Date: Fri, 4 Feb 2022 11:50:22 +1100 Subject: [PATCH] feat: Improve searching for previous versions of companion app settings (#1540) --- companion/src/storage/appdata.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/companion/src/storage/appdata.cpp b/companion/src/storage/appdata.cpp index 34a5aea6e..fa7ec4470 100644 --- a/companion/src/storage/appdata.cpp +++ b/companion/src/storage/appdata.cpp @@ -470,14 +470,13 @@ void AppData::clearUnusedSettings(QSettings & settings) bool AppData::findPreviousVersionSettings(QString * version) const { - // TODO need a more dynamic method since ETX moves so quickly - static const QStringList versList({QStringLiteral("2.6"), QStringLiteral("2.5"), QStringLiteral("2.4")}); + int vmaj = VERSION_MAJOR; + int vmin = VERSION_MINOR - 1; // make sure we do not try to import from ourselves otherwise settings WILL get corrupted - for (const QString &ver : versList) { - const QString prod("Companion " % ver); - // make sure we do not try to import from ourselves otherwise settings WILL get corrupted - if (prod == PRODUCT) - continue; + for (;(vmaj << 8 | vmin) >= (2 << 8 | 4);) { // 2.4 earliest EdgeTX version + const QString ver = QString("%1.%2").arg(vmaj).arg(vmin); + const QString prod = QString("Companion %1").arg(ver); + qDebug() << "Searching for previous version" << ver; QSettings settings(COMPANY, prod); if (settings.contains(SETTINGS_VERSION_KEY)) { *version = ver; @@ -486,6 +485,12 @@ bool AppData::findPreviousVersionSettings(QString * version) const else { settings.clear(); } + + --vmin; + if (vmin < 0) { + vmin = 30; // abitary maximum minor version for earlier major versions + --vmaj; + } } return false;