Make (and return) more properties as const-ref in McuPackage

This implies that those properties are now passed into the constructor,
and their setters are removed.

Change-Id: I34b4d9d7450897e6a7a72b8edaffdc05961546d1
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: <piotr.mucko@qt.io>
This commit is contained in:
Erik Verbruggen
2022-02-01 16:07:50 +01:00
committed by piotr.mucko
parent 6b6b35f59e
commit 32f8ed7b66
5 changed files with 89 additions and 110 deletions

View File

@@ -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)
{
}

View File

@@ -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
);

View File

@@ -269,7 +269,7 @@ McuTarget::McuTarget(const QVersionNumber &qulVersion,
{
}
QVector<McuPackage *> McuTarget::packages() const
const QVector<McuPackage *> &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;
}

View File

@@ -75,10 +75,10 @@ public:
const QVector<McuPackage *> &packages,
const McuToolChainPackage *toolChainPackage);
QVersionNumber qulVersion() const;
QVector<McuPackage *> packages() const;
const QVersionNumber &qulVersion() const;
const QVector<McuPackage *> &packages() const;
const McuToolChainPackage *toolChainPackage() const;
Platform platform() const;
const Platform &platform() const;
OS os() const;
void setColorDepth(int colorDepth);
int colorDepth() const;

View File

@@ -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"),
return new McuToolChainPackage(McuPackage::tr("GNU Arm Embedded Toolchain"),
defaultPath,
detectionPath,
"GNUArmEmbeddedToolchain",
"GNUArmEmbeddedToolchain", // settingsKey
McuToolChainPackage::TypeArmGcc,
envVar,
versionDetector);
result->setEnvironmentVariableName(envVar);
return result;
}
static McuToolChainPackage *createGhsToolchainPackage()
@@ -137,15 +133,14 @@ static McuToolChainPackage *createGhsToolchainPackage()
"\\bv(\\d+\\.\\d+\\.\\d+)\\b"
);
auto result = new McuToolChainPackage(
"Green Hills Compiler",
return new McuToolChainPackage("Green Hills Compiler",
defaultPath,
Utils::HostOsInfo::withExecutableSuffix("ccv850"),
"GHSToolchain",
Utils::HostOsInfo::withExecutableSuffix(
"ccv850"), // detectionPath
"GHSToolchain", // settingsKey
McuToolChainPackage::TypeGHS,
envVar,
versionDetector);
result->setEnvironmentVariableName(envVar);
return result;
}
static McuToolChainPackage *createGhsArmToolchainPackage()
@@ -160,15 +155,13 @@ static McuToolChainPackage *createGhsArmToolchainPackage()
"\\bv(\\d+\\.\\d+\\.\\d+)\\b"
);
auto result = new McuToolChainPackage(
"Green Hills Compiler for ARM",
return new McuToolChainPackage("Green Hills Compiler for ARM",
defaultPath,
Utils::HostOsInfo::withExecutableSuffix("cxarm"),
"GHSArmToolchain",
Utils::HostOsInfo::withExecutableSuffix("cxarm"), // detectionPath
"GHSArmToolchain", // settingsKey
McuToolChainPackage::TypeGHSArm,
envVar,
versionDetector);
result->setEnvironmentVariableName(envVar);
return result;
}
static McuToolChainPackage *createIarToolChainPackage()
@@ -196,15 +189,13 @@ static McuToolChainPackage *createIarToolChainPackage()
"\\bV(\\d+\\.\\d+\\.\\d+)\\.\\d+\\b"
);
auto result = new McuToolChainPackage(
"IAR ARM Compiler",
return new McuToolChainPackage("IAR ARM Compiler",
defaultPath,
detectionPath,
"IARToolchain",
"IARToolchain", // settings key
McuToolChainPackage::TypeIAR,
envVar,
versionDetector);
result->setEnvironmentVariableName(envVar);
return result;
}
static McuPackage *createRGLPackage()
@@ -225,13 +216,11 @@ static McuPackage *createRGLPackage()
}
}
auto result = new McuPackage(
"Renesas Graphics Library",
return new McuPackage("Renesas Graphics Library",
defaultPath,
{},
"RGL");
result->setEnvironmentVariableName(envVar);
return result;
{}, // 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"),
auto result
= new McuPackage(McuPackage::tr("STM32CubeProgrammer"),
defaultPath,
QLatin1String(Utils::HostOsInfo::isWindowsHost() ? "/bin/STM32_Programmer_CLI.exe"
: "/bin/STM32_Programmer.sh"),
"Stm32CubeProgrammer");
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",
return 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;
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,
return new McuPackage(sdkName,
defaultPath,
{},
desc.boardSdk.envVar,
{}, // detection path
desc.boardSdk.envVar, // settings key
desc.boardSdk.envVar, // env var
{}, // download URL
versionDetector);
result->setEnvironmentVariableName(desc.boardSdk.envVar);
return result;
}
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),
return 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;
QString::fromLatin1("FreeRTOSSourcePackage_%1").arg(envVarPrefix),
envVar,
"https://freertos.org");
}
struct McuTargetFactory