diff --git a/companion/src/companion.cpp b/companion/src/companion.cpp index 864438fda..ee3964a1d 100644 --- a/companion/src/companion.cpp +++ b/companion/src/companion.cpp @@ -71,6 +71,20 @@ int main(int argc, char *argv[]) CustomDebug::setFilterRules(); + if (!g.hasCurrentSettings()) { + QString previousVersion; + if (g.findPreviousVersionSettings(&previousVersion)) { + QMessageBox msgBox; + msgBox.setText(QObject::tr("We have found existing settings for Companion version: %1.\nDo you want to import them?").arg(previousVersion)); + msgBox.setIcon(QMessageBox::Information); + msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); + msgBox.setDefaultButton(QMessageBox::Yes); + int ret = msgBox.exec(); + + if (ret == QMessageBox::Yes) + g.importSettings(previousVersion); + } + } g.init(); QStringList strl = QApplication::arguments(); diff --git a/companion/src/storage/appdata.cpp b/companion/src/storage/appdata.cpp index 3a16b0e11..a50f9fde4 100644 --- a/companion/src/storage/appdata.cpp +++ b/companion/src/storage/appdata.cpp @@ -538,12 +538,10 @@ void AppData::init() qRegisterMetaTypeStreamOperators("SimulatorOptions"); firstUse = false; - upgradeFromVersion = ""; QSettings settings(COMPANY, PRODUCT); if (!settings.contains("settings_version")) { - if (!importSettings(settings)) - firstUse = true; + firstUse = true; } convertSettings(settings); @@ -652,14 +650,24 @@ void AppData::convertSettings(QSettings & settings) } } -bool AppData::importSettings(QSettings & toSettings) +bool AppData::hasCurrentSettings() +{ + QSettings settings(COMPANY, PRODUCT); + if (!settings.contains("settings_version")) { + return false; + } + return true; +} + +bool AppData::findPreviousVersionSettings(QString * version) { QSettings * fromSettings = NULL; + *version = ""; QSettings settings21("OpenTX", "Companion 2.1"); if (settings21.contains("settings_version")) { fromSettings = &settings21; - upgradeFromVersion = "2.1"; + *version = "2.1"; } else { settings21.clear(); @@ -669,7 +677,7 @@ bool AppData::importSettings(QSettings & toSettings) if (settings20.contains("settings_version")) { if (!fromSettings) { fromSettings = &settings20; - upgradeFromVersion = "2.0"; + *version = "2.0"; } } else { @@ -680,27 +688,47 @@ bool AppData::importSettings(QSettings & toSettings) if (settings16.contains("settings_version")) { if (!fromSettings) { fromSettings = &settings16; - upgradeFromVersion = "1.x"; + *version = "1.x"; } } else { settings16.clear(); } - QSettings settings9x("companion9x", "companion9x"); - if (settings9x.contains("default_mode")) { - if (!fromSettings) { - fromSettings = &settings9x; - upgradeFromVersion = "Companion9X"; - } - } - else { - settings9x.clear(); - } - if (!fromSettings) return false; + return true; +} + +bool AppData::importSettings(QString fromVersion) +{ + QSettings toSettings(COMPANY, PRODUCT); + + QString fromCompany; + QString fromProduct; + + upgradeFromVersion = ""; + + if (fromVersion == "2.1") { + fromCompany = "OpenTX"; + fromProduct = "Companion 2.1"; + } + else if (fromVersion == "2.0") { + fromCompany = "OpenTX"; + fromProduct = "Companion 2.0"; + } + else if (fromVersion == "1.x") { + fromCompany = "OpenTX"; + fromProduct = "OpenTX Companion"; + } + else + return false; + + upgradeFromVersion = fromVersion; + + QSettings fromSettings(fromCompany, fromProduct); + // do not copy these settings QStringList excludeKeys = QStringList() << "compilation-server"; #ifdef WIN32 @@ -711,59 +739,11 @@ bool AppData::importSettings(QSettings & toSettings) #endif // import settings - foreach (const QString & key, fromSettings->allKeys()) { - if (fromSettings->value(key).isValid() && !excludeKeys.contains(key)) { - toSettings.setValue(key, fromSettings->value(key)); + foreach (const QString & key, fromSettings.allKeys()) { + if (fromSettings.value(key).isValid() && !excludeKeys.contains(key)) { + toSettings.setValue(key, fromSettings.value(key)); } } - // Additional adjustments for companion9x settings - if (fromSettings->applicationName() == "companion9x") { - // Store old values in new locations - autoCheckApp(toSettings.value("startup_check_companion9x", true).toBool()); - toSettings.setValue("useWizard", toSettings.value("wizardEnable", true)); - - // Convert and store the firmware type - QString fwType = toSettings.value("firmware", "").toString(); - fwType.replace("open9x", "opentx"); - fwType.replace("x9da", "x9d"); - - profile[0].init( 0 ); - profile[0].fwType( fwType ); - // Move the Companion9x profile settings to profile0, the new default profile - profile[0].name( toSettings.value( "Name", "My Radio").toString()); - profile[0].sdPath( toSettings.value( "sdPath", "" ).toString()); - profile[0].splashFile( toSettings.value( "SplashFileName", "" ).toString()); - profile[0].burnFirmware( toSettings.value( "burnFirmware", false ).toBool()); - profile[0].renameFwFiles( toSettings.value( "rename_firmware_files", false ).toBool()); - profile[0].channelOrder( toSettings.value( "default_channel_order", "0" ).toInt()); - profile[0].defaultMode( toSettings.value( "default_mode", "1" ).toInt()); - - // Ensure that the default profile has a name - if ( profile[0].name().isEmpty() ) - profile[0].name("My Radio"); - - // Delete obsolete settings fields from companion9x - toSettings.remove("ActiveProfile"); - toSettings.remove("burnFirmware"); - toSettings.remove("custom_id"); - toSettings.remove("default_channel_order"); - toSettings.remove("default_mode"); - toSettings.remove("firmware"); - toSettings.remove("lastFw"); - toSettings.remove("modelEditTab"); - toSettings.remove("Name"); - toSettings.remove("patchImage"); - toSettings.remove("rename_firmware_files"); - toSettings.remove("sdPath"); - toSettings.remove("SplashFileName"); - toSettings.remove("startup_check_companion9x"); - toSettings.remove("warningId"); - toSettings.remove("wizardEnable"); - - // Select the new default profile as current profile - id( 0 ); - } - return true; } diff --git a/companion/src/storage/appdata.h b/companion/src/storage/appdata.h index 8603b46f3..0c8df68a8 100644 --- a/companion/src/storage/appdata.h +++ b/companion/src/storage/appdata.h @@ -419,10 +419,12 @@ class AppData: protected CompStoreObj QMap getActiveProfiles(); inline bool isFirstUse() const { return firstUse; } inline QString previousVersion() const { return upgradeFromVersion; } + bool hasCurrentSettings(); + bool findPreviousVersionSettings(QString * version); + bool importSettings(QString fromVersion); protected: void convertSettings(QSettings & settings); - bool importSettings(QSettings & toSettings); bool firstUse; QString upgradeFromVersion; diff --git a/companion/targets/windows/companion-vs.nsi.in b/companion/targets/windows/companion-vs.nsi.in index 5464a1259..3ec3030ee 100644 --- a/companion/targets/windows/companion-vs.nsi.in +++ b/companion/targets/windows/companion-vs.nsi.in @@ -77,13 +77,13 @@ !define MUI_FINISHPAGE_NOAUTOCLOSE !define MUI_FINISHPAGE_RUN !define MUI_FINISHPAGE_RUN_CHECKED - !define MUI_FINISHPAGE_RUN_TEXT "Launch OpenTX Companion @VERSION_FAMILY@" !define MUI_FINISHPAGE_RUN_FUNCTION "LaunchLink" # !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED # !define MUI_FINISHPAGE_SHOWREADME $INSTDIR\readme.txt !insertmacro MUI_PAGE_FINISH !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_COMPONENTS !insertmacro MUI_UNPAGE_INSTFILES ;-------------------------------- @@ -95,7 +95,7 @@ ;-------------------------------- ;Installer Sections -Section "OpenTX Companion" SecDummy +Section "OpenTX Companion @VERSION_FAMILY@" SecDummy Delete "$INSTDIR\opentx-*-simulator.dll" Delete "$INSTDIR\lang\*.*" @@ -189,7 +189,9 @@ SectionEnd ;-------------------------------- ;Uninstaller Section -Section "Uninstall" +Section "un.OpenTX Companion @VERSION_FAMILY@" + + SectionIn RO ; Not deselectable ;ADD YOUR OWN FILES HERE... @@ -243,9 +245,11 @@ Section "Uninstall" Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall Companion @VERSION_FAMILY@.lnk" RMDir "$SMPROGRAMS\$StartMenuFolder" - DeleteRegKey /ifempty HKCU "Software\OpenTX Companion @VERSION_FAMILY@" DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenTX Companion @VERSION_FAMILY@" +SectionEnd +Section /o "un.Settings" + DeleteRegKey HKCU "Software\OpenTX\Companion @VERSION_FAMILY@" SectionEnd Function LaunchLink