diff --git a/src/plugins/mcusupport/mcupackage.cpp b/src/plugins/mcusupport/mcupackage.cpp index d8f5a2aeb00..31d70b34b5e 100644 --- a/src/plugins/mcusupport/mcupackage.cpp +++ b/src/plugins/mcusupport/mcupackage.cpp @@ -52,12 +52,15 @@ static bool automaticKitCreationFromSettings(QSettings::Scope scope = QSettings: McuPackage::McuPackage(const QString &label, const FilePath &defaultPath, const QString &detectionPath, const QString &settingsKey, + const QString &envVarName, const QString &downloadUrl, const McuPackageVersionDetector *versionDetector) : m_label(label) , m_defaultPath(Sdk::packagePathFromSettings(settingsKey, QSettings::SystemScope, defaultPath)) , m_detectionPath(detectionPath) , m_settingsKey(settingsKey) , m_versionDetector(versionDetector) + , m_environmentVariableName(envVarName) + , m_downloadUrl(downloadUrl) { m_path = Sdk::packagePathFromSettings(settingsKey, QSettings::UserScope, m_defaultPath); m_automaticKitCreation = automaticKitCreationFromSettings(QSettings::UserScope); @@ -144,17 +147,7 @@ bool McuPackage::validStatus() const return m_status == McuPackage::ValidPackage || m_status == McuPackage::ValidPackageMismatchedVersion; } -void McuPackage::setDownloadUrl(const QString &url) -{ - m_downloadUrl = url; -} - -void McuPackage::setEnvironmentVariableName(const QString &name) -{ - m_environmentVariableName = name; -} - -QString McuPackage::environmentVariableName() const +const QString &McuPackage::environmentVariableName() const { return m_environmentVariableName; } @@ -295,9 +288,9 @@ McuToolChainPackage::McuToolChainPackage(const QString &label, const FilePath &defaultPath, const QString &detectionPath, const QString &settingsKey, - McuToolChainPackage::Type type, + McuToolChainPackage::Type type, const QString &envVarName, const McuPackageVersionDetector *versionDetector) - : McuPackage(label, defaultPath, detectionPath, settingsKey, versionDetector) + : McuPackage(label, defaultPath, detectionPath, settingsKey, envVarName, {}, versionDetector) , m_type(type) { } diff --git a/src/plugins/mcusupport/mcupackage.h b/src/plugins/mcusupport/mcupackage.h index b14236f8e5e..ced8ff1d0ce 100644 --- a/src/plugins/mcusupport/mcupackage.h +++ b/src/plugins/mcusupport/mcupackage.h @@ -61,6 +61,7 @@ public: McuPackage(const QString &label, const Utils::FilePath &defaultPath, const QString &detectionPath, const QString &settingsKey, + const QString &envVarName = {}, const QString &downloadUrl = {}, const McuPackageVersionDetector *versionDetector = nullptr); virtual ~McuPackage() = default; @@ -74,8 +75,6 @@ public: Status status() const; bool validStatus() const; - void setDownloadUrl(const QString &url); - void setEnvironmentVariableName(const QString &name); void setAddToPath(bool addToPath); bool addToPath() const; void writeGeneralSettings() const; @@ -88,7 +87,7 @@ public: QWidget *widget(); - QString environmentVariableName() const; + const QString &environmentVariableName() const; signals: void changed(); @@ -112,8 +111,8 @@ private: QString m_relativePathModifier; // relative path to m_path to be returned by path() QString m_detectedVersion; QStringList m_versions; - QString m_downloadUrl; - QString m_environmentVariableName; + const QString m_environmentVariableName; + const QString m_downloadUrl; bool m_addToPath = false; bool m_automaticKitCreation = true; @@ -139,6 +138,7 @@ public: const QString &detectionPath, const QString &settingsKey, Type type, + const QString &envVarName = {}, const McuPackageVersionDetector *versionDetector = nullptr ); diff --git a/src/plugins/mcusupport/mcusupportoptions.cpp b/src/plugins/mcusupport/mcusupportoptions.cpp index cda32cac65b..fb874a0d153 100644 --- a/src/plugins/mcusupport/mcusupportoptions.cpp +++ b/src/plugins/mcusupport/mcusupportoptions.cpp @@ -269,7 +269,7 @@ McuTarget::McuTarget(const QVersionNumber &qulVersion, { } -QVector McuTarget::packages() const +const QVector &McuTarget::packages() const { return m_packages; } @@ -284,7 +284,7 @@ McuTarget::OS McuTarget::os() const return m_os; } -McuTarget::Platform McuTarget::platform() const +const McuTarget::Platform &McuTarget::platform() const { return m_platform; } @@ -316,7 +316,7 @@ void McuTarget::printPackageProblems() const } } -QVersionNumber McuTarget::qulVersion() const +const QVersionNumber &McuTarget::qulVersion() const { return m_qulVersion; } diff --git a/src/plugins/mcusupport/mcusupportoptions.h b/src/plugins/mcusupport/mcusupportoptions.h index baefd8aaa3d..1b957d4e169 100644 --- a/src/plugins/mcusupport/mcusupportoptions.h +++ b/src/plugins/mcusupport/mcusupportoptions.h @@ -75,10 +75,10 @@ public: const QVector &packages, const McuToolChainPackage *toolChainPackage); - QVersionNumber qulVersion() const; - QVector packages() const; + const QVersionNumber &qulVersion() const; + const QVector &packages() const; const McuToolChainPackage *toolChainPackage() const; - Platform platform() const; + const Platform &platform() const; OS os() const; void setColorDepth(int colorDepth); int colorDepth() const; diff --git a/src/plugins/mcusupport/mcusupportsdk.cpp b/src/plugins/mcusupport/mcusupportsdk.cpp index 353944a907d..88b410f974d 100644 --- a/src/plugins/mcusupport/mcusupportsdk.cpp +++ b/src/plugins/mcusupport/mcusupportsdk.cpp @@ -65,13 +65,11 @@ static FilePath findInProgramFiles(const QString &folder) McuPackage *createQtForMCUsPackage() { - auto result = new McuPackage( - McuPackage::tr("Qt for MCUs SDK"), - FileUtils::homePath(), - FilePath("bin/qmltocpp").withExecutableSuffix().toString(), - Constants::SETTINGS_KEY_PACKAGE_QT_FOR_MCUS_SDK); - result->setEnvironmentVariableName("Qul_DIR"); - return result; + return new McuPackage(McuPackage::tr("Qt for MCUs SDK"), + FileUtils::homePath(), // defaultPath + FilePath("bin/qmltocpp").withExecutableSuffix().toString(), // detectionPath + Constants::SETTINGS_KEY_PACKAGE_QT_FOR_MCUS_SDK, // settingsKey + QStringLiteral("Qul_DIR")); // envVarName } static McuToolChainPackage *createMsvcToolChainPackage() @@ -114,15 +112,13 @@ static McuToolChainPackage *createArmGccPackage() "\\b(\\d+\\.\\d+\\.\\d+)\\b" ); - auto result = new McuToolChainPackage( - McuPackage::tr("GNU Arm Embedded Toolchain"), - defaultPath, - detectionPath, - "GNUArmEmbeddedToolchain", - McuToolChainPackage::TypeArmGcc, - versionDetector); - result->setEnvironmentVariableName(envVar); - return result; + return new McuToolChainPackage(McuPackage::tr("GNU Arm Embedded Toolchain"), + defaultPath, + detectionPath, + "GNUArmEmbeddedToolchain", // settingsKey + McuToolChainPackage::TypeArmGcc, + envVar, + versionDetector); } static McuToolChainPackage *createGhsToolchainPackage() @@ -137,15 +133,14 @@ static McuToolChainPackage *createGhsToolchainPackage() "\\bv(\\d+\\.\\d+\\.\\d+)\\b" ); - auto result = new McuToolChainPackage( - "Green Hills Compiler", - defaultPath, - Utils::HostOsInfo::withExecutableSuffix("ccv850"), - "GHSToolchain", - McuToolChainPackage::TypeGHS, - versionDetector); - result->setEnvironmentVariableName(envVar); - return result; + return new McuToolChainPackage("Green Hills Compiler", + defaultPath, + Utils::HostOsInfo::withExecutableSuffix( + "ccv850"), // detectionPath + "GHSToolchain", // settingsKey + McuToolChainPackage::TypeGHS, + envVar, + versionDetector); } static McuToolChainPackage *createGhsArmToolchainPackage() @@ -160,15 +155,13 @@ static McuToolChainPackage *createGhsArmToolchainPackage() "\\bv(\\d+\\.\\d+\\.\\d+)\\b" ); - auto result = new McuToolChainPackage( - "Green Hills Compiler for ARM", - defaultPath, - Utils::HostOsInfo::withExecutableSuffix("cxarm"), - "GHSArmToolchain", - McuToolChainPackage::TypeGHSArm, - versionDetector); - result->setEnvironmentVariableName(envVar); - return result; + return new McuToolChainPackage("Green Hills Compiler for ARM", + defaultPath, + Utils::HostOsInfo::withExecutableSuffix("cxarm"), // detectionPath + "GHSArmToolchain", // settingsKey + McuToolChainPackage::TypeGHSArm, + envVar, + versionDetector); } static McuToolChainPackage *createIarToolChainPackage() @@ -196,15 +189,13 @@ static McuToolChainPackage *createIarToolChainPackage() "\\bV(\\d+\\.\\d+\\.\\d+)\\.\\d+\\b" ); - auto result = new McuToolChainPackage( - "IAR ARM Compiler", - defaultPath, - detectionPath, - "IARToolchain", - McuToolChainPackage::TypeIAR, - versionDetector); - result->setEnvironmentVariableName(envVar); - return result; + return new McuToolChainPackage("IAR ARM Compiler", + defaultPath, + detectionPath, + "IARToolchain", // settings key + McuToolChainPackage::TypeIAR, + envVar, + versionDetector); } static McuPackage *createRGLPackage() @@ -225,13 +216,11 @@ static McuPackage *createRGLPackage() } } - auto result = new McuPackage( - "Renesas Graphics Library", - defaultPath, - {}, - "RGL"); - result->setEnvironmentVariableName(envVar); - return result; + return new McuPackage("Renesas Graphics Library", + defaultPath, + {}, // detection path + "RGL", + envVar); } static McuPackage *createStm32CubeProgrammerPackage() @@ -247,15 +236,16 @@ static McuPackage *createStm32CubeProgrammerPackage() if (programPath.exists()) defaultPath = programPath; } - auto result = new McuPackage( - McuPackage::tr("STM32CubeProgrammer"), - defaultPath, - QLatin1String(Utils::HostOsInfo::isWindowsHost() ? "/bin/STM32_Programmer_CLI.exe" - : "/bin/STM32_Programmer.sh"), - "Stm32CubeProgrammer"); + auto result + = new McuPackage(McuPackage::tr("STM32CubeProgrammer"), + defaultPath, + QLatin1String(Utils::HostOsInfo::isWindowsHost() + ? "/bin/STM32_Programmer_CLI.exe" + : "/bin/STM32_Programmer.sh"), // detection path + "Stm32CubeProgrammer", + {}, // env var + "https://www.st.com/en/development-tools/stm32cubeprog.html"); // download url result->setRelativePathModifier("/bin"); - result->setDownloadUrl( - "https://www.st.com/en/development-tools/stm32cubeprog.html"); result->setAddToPath(true); return result; } @@ -283,14 +273,13 @@ static McuPackage *createMcuXpressoIdePackage() defaultPath = programPath; } - auto result = new McuPackage( - "MCUXpresso IDE", - defaultPath, - Utils::HostOsInfo::withExecutableSuffix("ide/binaries/crt_emu_cm_redlink"), - "MCUXpressoIDE"); - result->setDownloadUrl("https://www.nxp.com/mcuxpresso/ide"); - result->setEnvironmentVariableName(envVar); - return result; + return new McuPackage("MCUXpresso IDE", + defaultPath, + Utils::HostOsInfo::withExecutableSuffix( + "ide/binaries/crt_emu_cm_redlink"), // detection path + "MCUXpressoIDE", // settings key + envVar, + "https://www.nxp.com/mcuxpresso/ide"); // download url } static McuPackage *createCypressProgrammerPackage() @@ -315,8 +304,8 @@ static McuPackage *createCypressProgrammerPackage() "Cypress Auto Flash Utility", defaultPath, Utils::HostOsInfo::withExecutableSuffix("/bin/openocd"), - "CypressAutoFlashUtil"); - result->setEnvironmentVariableName(envVar); + "CypressAutoFlashUtil", + envVar); return result; } @@ -342,8 +331,8 @@ static McuPackage *createRenesasProgrammerPackage() "Renesas Flash Programmer", defaultPath, Utils::HostOsInfo::withExecutableSuffix("rfp-cli"), - "RenesasFlashProgrammer"); - result->setEnvironmentVariableName(envVar); + "RenesasFlashProgrammer", + envVar); return result; } @@ -422,14 +411,13 @@ static McuPackage *createBoardSdkPackage(const McuTargetDescription& desc) const auto versionDetector = generatePackageVersionDetector(desc.boardSdk.envVar); - auto result = new McuPackage( - sdkName, - defaultPath, - {}, - desc.boardSdk.envVar, - versionDetector); - result->setEnvironmentVariableName(desc.boardSdk.envVar); - return result; + return new McuPackage(sdkName, + defaultPath, + {}, // detection path + desc.boardSdk.envVar, // settings key + desc.boardSdk.envVar, // env var + {}, // download URL + versionDetector); } static McuPackage *createFreeRTOSSourcesPackage(const QString &envVar, const FilePath &boardSdkDir, @@ -443,14 +431,12 @@ static McuPackage *createFreeRTOSSourcesPackage(const QString &envVar, const Fil else if (!boardSdkDir.isEmpty() && !freeRTOSBoardSdkSubDir.isEmpty()) defaultPath = boardSdkDir / freeRTOSBoardSdkSubDir; - auto result = new McuPackage( - QString::fromLatin1("FreeRTOS Sources (%1)").arg(envVarPrefix), - defaultPath, - {}, - QString::fromLatin1("FreeRTOSSourcePackage_%1").arg(envVarPrefix)); - result->setDownloadUrl("https://freertos.org"); - result->setEnvironmentVariableName(envVar); - return result; + return new McuPackage(QString::fromLatin1("FreeRTOS Sources (%1)").arg(envVarPrefix), + defaultPath, + {}, + QString::fromLatin1("FreeRTOSSourcePackage_%1").arg(envVarPrefix), + envVar, + "https://freertos.org"); } struct McuTargetFactory