McuSupport: Move kit methods out of McuSupportOptions

... and into McuKitManager

Task-number: QTCREATORBUG-26890
Change-Id: Ic5ed689458d3ef004ebb42a549c48a6326c2f45d
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Erik Verbruggen
2022-02-14 18:01:04 +01:00
committed by Christiaan Janssen
parent 01a0f41ed5
commit c755de0823
7 changed files with 116 additions and 99 deletions

View File

@@ -86,10 +86,6 @@ public:
const QString &environmentVariableName() const override; const QString &environmentVariableName() const override;
signals:
void changed();
void statusChanged();
private: private:
void updatePath(); void updatePath();
void updateStatusUi(); void updateStatusUi();

View File

@@ -307,13 +307,13 @@ void McuTarget::printPackageProblems() const
package->updateStatus(); package->updateStatus();
if (!package->validStatus()) if (!package->validStatus())
printMessage(tr("Error creating kit for target %1, package %2: %3") printMessage(tr("Error creating kit for target %1, package %2: %3")
.arg(McuSupportOptions::kitName(this), .arg(McuKitManager::kitName(this),
package->label(), package->label(),
package->statusText()), package->statusText()),
true); true);
if (package->status() == McuAbstractPackage::Status::ValidPackageMismatchedVersion) if (package->status() == McuAbstractPackage::Status::ValidPackageMismatchedVersion)
printMessage(tr("Warning creating kit for target %1, package %2: %3") printMessage(tr("Warning creating kit for target %1, package %2: %3")
.arg(McuSupportOptions::kitName(this), .arg(McuKitManager::kitName(this),
package->label(), package->label(),
package->statusText()), package->statusText()),
false); false);
@@ -412,9 +412,9 @@ void McuSupportOptions::setQulDir(const FilePath &dir)
if (qtForMCUsSdkPackage->validStatus()) if (qtForMCUsSdkPackage->validStatus())
Sdk::targetsAndPackages(dir, &sdkRepository); Sdk::targetsAndPackages(dir, &sdkRepository);
for (const auto &package : qAsConst(sdkRepository.packages)) for (const auto &package : qAsConst(sdkRepository.packages))
connect(package, &McuAbstractPackage::changed, this, &McuSupportOptions::changed); connect(package, &McuAbstractPackage::changed, this, &McuSupportOptions::packagesChanged);
emit changed(); emit packagesChanged();
} }
FilePath McuSupportOptions::qulDirFromSettings() FilePath McuSupportOptions::qulDirFromSettings()
@@ -647,7 +647,7 @@ static void setKitCMakeOptions(Kit *k, const McuTarget *mcuTarget, const FilePat
if (!cMakeToolchainFile.exists()) { if (!cMakeToolchainFile.exists()) {
printMessage(McuTarget::tr( printMessage(McuTarget::tr(
"Warning for target %1: missing CMake toolchain file expected at %2.") "Warning for target %1: missing CMake toolchain file expected at %2.")
.arg(McuSupportOptions::kitName(mcuTarget), .arg(McuKitManager::kitName(mcuTarget),
cMakeToolchainFile.toUserOutput()), cMakeToolchainFile.toUserOutput()),
false); false);
} }
@@ -657,7 +657,7 @@ static void setKitCMakeOptions(Kit *k, const McuTarget *mcuTarget, const FilePat
config.append(CMakeConfigItem("QUL_GENERATORS", generatorsPath.toString().toUtf8())); config.append(CMakeConfigItem("QUL_GENERATORS", generatorsPath.toString().toUtf8()));
if (!generatorsPath.exists()) { if (!generatorsPath.exists()) {
printMessage(McuTarget::tr("Warning for target %1: missing QulGenerators expected at %2.") printMessage(McuTarget::tr("Warning for target %1: missing QulGenerators expected at %2.")
.arg(McuSupportOptions::kitName(mcuTarget), generatorsPath.toUserOutput()), .arg(McuKitManager::kitName(mcuTarget), generatorsPath.toUserOutput()),
false); false);
} }
@@ -687,7 +687,7 @@ static void setKitQtVersionOptions(Kit *k)
// else: auto-select a Qt version // else: auto-select a Qt version
} }
QString McuSupportOptions::kitName(const McuTarget *mcuTarget) QString McuKitManager::kitName(const McuTarget *mcuTarget)
{ {
const McuToolChainPackage *tcPkg = mcuTarget->toolChainPackage(); const McuToolChainPackage *tcPkg = mcuTarget->toolChainPackage();
const QString compilerName = tcPkg && !tcPkg->isDesktopToolchain() const QString compilerName = tcPkg && !tcPkg->isDesktopToolchain()
@@ -708,7 +708,7 @@ QString McuSupportOptions::kitName(const McuTarget *mcuTarget)
compilerName); compilerName);
} }
QList<Kit *> McuSupportOptions::existingKits(const McuTarget *mcuTarget) QList<Kit *> McuKitManager::existingKits(const McuTarget *mcuTarget)
{ {
using namespace Constants; using namespace Constants;
return Utils::filtered(KitManager::kits(), [mcuTarget](Kit *kit) { return Utils::filtered(KitManager::kits(), [mcuTarget](Kit *kit) {
@@ -724,23 +724,23 @@ QList<Kit *> McuSupportOptions::existingKits(const McuTarget *mcuTarget)
}); });
} }
QList<Kit *> McuSupportOptions::matchingKits(const McuTarget *mcuTarget, QList<Kit *> McuKitManager::matchingKits(const McuTarget *mcuTarget,
const McuAbstractPackage *qtForMCUsSdkPackage) const McuAbstractPackage *qtForMCUsSdkPackage)
{ {
return Utils::filtered(existingKits(mcuTarget), [mcuTarget, qtForMCUsSdkPackage](Kit *kit) { return Utils::filtered(existingKits(mcuTarget), [mcuTarget, qtForMCUsSdkPackage](Kit *kit) {
return kitUpToDate(kit, mcuTarget, qtForMCUsSdkPackage); return kitIsUpToDate(kit, mcuTarget, qtForMCUsSdkPackage);
}); });
} }
QList<Kit *> McuSupportOptions::upgradeableKits(const McuTarget *mcuTarget, QList<Kit *> McuKitManager::upgradeableKits(const McuTarget *mcuTarget,
const McuAbstractPackage *qtForMCUsSdkPackage) const McuAbstractPackage *qtForMCUsSdkPackage)
{ {
return Utils::filtered(existingKits(mcuTarget), [mcuTarget, qtForMCUsSdkPackage](Kit *kit) { return Utils::filtered(existingKits(mcuTarget), [mcuTarget, qtForMCUsSdkPackage](Kit *kit) {
return !kitUpToDate(kit, mcuTarget, qtForMCUsSdkPackage); return !kitIsUpToDate(kit, mcuTarget, qtForMCUsSdkPackage);
}); });
} }
QList<Kit *> McuSupportOptions::kitsWithMismatchedDependencies(const McuTarget *mcuTarget) QList<Kit *> McuKitManager::kitsWithMismatchedDependencies(const McuTarget *mcuTarget)
{ {
return Utils::filtered(existingKits(mcuTarget), [mcuTarget](Kit *kit) { return Utils::filtered(existingKits(mcuTarget), [mcuTarget](Kit *kit) {
const auto environment = Utils::NameValueDictionary( const auto environment = Utils::NameValueDictionary(
@@ -754,7 +754,7 @@ QList<Kit *> McuSupportOptions::kitsWithMismatchedDependencies(const McuTarget *
}); });
} }
QList<Kit *> McuSupportOptions::outdatedKits() QList<Kit *> McuKitManager::outdatedKits()
{ {
return Utils::filtered(KitManager::kits(), [](Kit *kit) { return Utils::filtered(KitManager::kits(), [](Kit *kit) {
return !kit->value(Constants::KIT_MCUTARGET_VENDOR_KEY).isNull() return !kit->value(Constants::KIT_MCUTARGET_VENDOR_KEY).isNull()
@@ -762,13 +762,13 @@ QList<Kit *> McuSupportOptions::outdatedKits()
}); });
} }
void McuSupportOptions::removeOutdatedKits() void McuKitManager::removeOutdatedKits()
{ {
for (auto kit : McuSupportOptions::outdatedKits()) for (auto kit : outdatedKits())
KitManager::deregisterKit(kit); KitManager::deregisterKit(kit);
} }
Kit *McuSupportOptions::newKit(const McuTarget *mcuTarget, const McuAbstractPackage *qtForMCUsSdk) Kit *McuKitManager::newKit(const McuTarget *mcuTarget, const McuAbstractPackage *qtForMCUsSdk)
{ {
const auto init = [mcuTarget, qtForMCUsSdk](Kit *k) { const auto init = [mcuTarget, qtForMCUsSdk](Kit *k) {
KitGuard kitGuard(k); KitGuard kitGuard(k);
@@ -777,7 +777,7 @@ Kit *McuSupportOptions::newKit(const McuTarget *mcuTarget, const McuAbstractPack
setKitDevice(k, mcuTarget); setKitDevice(k, mcuTarget);
setKitToolchains(k, mcuTarget->toolChainPackage()); setKitToolchains(k, mcuTarget->toolChainPackage());
setKitDebugger(k, mcuTarget->toolChainPackage()); setKitDebugger(k, mcuTarget->toolChainPackage());
setKitEnvironment(k, mcuTarget, qtForMCUsSdk); McuSupportOptions::setKitEnvironment(k, mcuTarget, qtForMCUsSdk);
setKitDependencies(k, mcuTarget, qtForMCUsSdk); setKitDependencies(k, mcuTarget, qtForMCUsSdk);
setKitCMakeOptions(k, mcuTarget, qtForMCUsSdk->path()); setKitCMakeOptions(k, mcuTarget, qtForMCUsSdk->path());
setKitQtVersionOptions(k); setKitQtVersionOptions(k);
@@ -799,7 +799,7 @@ void printMessage(const QString &message, bool important)
Core::MessageManager::writeSilently(displayMessage); Core::MessageManager::writeSilently(displayMessage);
} }
QVersionNumber McuSupportOptions::kitQulVersion(const Kit *kit) QVersionNumber McuKitManager::kitQulVersion(const Kit *kit)
{ {
return QVersionNumber::fromString( return QVersionNumber::fromString(
kit->value(McuSupport::Constants::KIT_MCUTARGET_SDKVERSION_KEY).toString()); kit->value(McuSupport::Constants::KIT_MCUTARGET_SDKVERSION_KEY).toString());
@@ -814,7 +814,7 @@ static FilePath kitDependencyPath(const Kit *kit, const QString &variableName)
return FilePath(); return FilePath();
} }
bool McuSupportOptions::kitUpToDate(const Kit *kit, bool McuKitManager::kitIsUpToDate(const Kit *kit,
const McuTarget *mcuTarget, const McuTarget *mcuTarget,
const McuAbstractPackage *qtForMCUsSdkPackage) const McuAbstractPackage *qtForMCUsSdkPackage)
{ {
@@ -828,7 +828,7 @@ void McuSupportOptions::deletePackagesAndTargets()
sdkRepository.deletePackagesAndTargets(); sdkRepository.deletePackagesAndTargets();
} }
McuSupportOptions::UpgradeOption McuSupportOptions::askForKitUpgrades() McuKitManager::UpgradeOption McuKitManager::askForKitUpgrades()
{ {
QMessageBox upgradePopup(Core::ICore::dialogParent()); QMessageBox upgradePopup(Core::ICore::dialogParent());
upgradePopup.setStandardButtons(QMessageBox::Cancel); upgradePopup.setStandardButtons(QMessageBox::Cancel);
@@ -841,15 +841,15 @@ McuSupportOptions::UpgradeOption McuSupportOptions::askForKitUpgrades()
upgradePopup.exec(); upgradePopup.exec();
if (upgradePopup.clickedButton() == keepButton) if (upgradePopup.clickedButton() == keepButton)
return Keep; return UpgradeOption::Keep;
if (upgradePopup.clickedButton() == replaceButton) if (upgradePopup.clickedButton() == replaceButton)
return Replace; return UpgradeOption::Replace;
return Ignore; return UpgradeOption::Ignore;
} }
void McuSupportOptions::createAutomaticKits() void McuKitManager::createAutomaticKits()
{ {
auto qtForMCUsPackage = Sdk::createQtForMCUsPackage(); auto qtForMCUsPackage = Sdk::createQtForMCUsPackage();
@@ -929,15 +929,15 @@ void McuSupportOptions::checkUpgradeableKits()
return; return;
if (Utils::anyOf(sdkRepository.mcuTargets, [this](const McuTarget *target) { if (Utils::anyOf(sdkRepository.mcuTargets, [this](const McuTarget *target) {
return !upgradeableKits(target, this->qtForMCUsSdkPackage).empty() return !McuKitManager::upgradeableKits(target, this->qtForMCUsSdkPackage).empty()
&& matchingKits(target, this->qtForMCUsSdkPackage).empty(); && McuKitManager::matchingKits(target, this->qtForMCUsSdkPackage).empty();
})) }))
upgradeKits(askForKitUpgrades()); McuKitManager::upgradeKitsByCreatingNewPackage(McuKitManager::askForKitUpgrades());
} }
void McuSupportOptions::upgradeKits(UpgradeOption upgradeOption) void McuKitManager::upgradeKitsByCreatingNewPackage(UpgradeOption upgradeOption)
{ {
if (upgradeOption == Ignore) if (upgradeOption == UpgradeOption::Ignore)
return; return;
auto qtForMCUsPackage = Sdk::createQtForMCUsPackage(); auto qtForMCUsPackage = Sdk::createQtForMCUsPackage();
@@ -947,15 +947,16 @@ void McuSupportOptions::upgradeKits(UpgradeOption upgradeOption)
Sdk::targetsAndPackages(dir, &repo); Sdk::targetsAndPackages(dir, &repo);
for (const auto &target : qAsConst(repo.mcuTargets)) { for (const auto &target : qAsConst(repo.mcuTargets)) {
if (!matchingKits(target, qtForMCUsPackage).empty()) if (!McuKitManager::matchingKits(target, qtForMCUsPackage).empty())
// already up-to-date // already up-to-date
continue; continue;
const auto kits = upgradeableKits(target, qtForMCUsPackage); const auto kits = McuKitManager::upgradeableKits(target, qtForMCUsPackage);
if (!kits.empty()) { if (!kits.empty()) {
if (upgradeOption == Replace) if (upgradeOption == UpgradeOption::Replace) {
for (auto existingKit : kits) for (auto existingKit : kits)
KitManager::deregisterKit(existingKit); KitManager::deregisterKit(existingKit);
}
if (target->isValid()) if (target->isValid())
newKit(target, qtForMCUsPackage); newKit(target, qtForMCUsPackage);
@@ -967,16 +968,16 @@ void McuSupportOptions::upgradeKits(UpgradeOption upgradeOption)
delete qtForMCUsPackage; delete qtForMCUsPackage;
} }
void McuSupportOptions::upgradeKitInPlace(ProjectExplorer::Kit *kit, void McuKitManager::upgradeKitInPlace(ProjectExplorer::Kit *kit,
const McuTarget *mcuTarget, const McuTarget *mcuTarget,
const McuAbstractPackage *qtForMCUsSdk) const McuAbstractPackage *qtForMCUsSdk)
{ {
setKitProperties(kitName(mcuTarget), kit, mcuTarget, qtForMCUsSdk->path()); setKitProperties(kitName(mcuTarget), kit, mcuTarget, qtForMCUsSdk->path());
setKitEnvironment(kit, mcuTarget, qtForMCUsSdk); McuSupportOptions::setKitEnvironment(kit, mcuTarget, qtForMCUsSdk);
setKitDependencies(kit, mcuTarget, qtForMCUsSdk); setKitDependencies(kit, mcuTarget, qtForMCUsSdk);
} }
void McuSupportOptions::fixKitsDependencies() void McuKitManager::fixKitsDependencies()
{ {
auto qtForMCUsPackage = Sdk::createQtForMCUsPackage(); auto qtForMCUsPackage = Sdk::createQtForMCUsPackage();
@@ -986,7 +987,7 @@ void McuSupportOptions::fixKitsDependencies()
for (const auto &target : qAsConst(repo.mcuTargets)) { for (const auto &target : qAsConst(repo.mcuTargets)) {
if (target->isValid()) { if (target->isValid()) {
for (auto *kit : kitsWithMismatchedDependencies(target)) { for (auto *kit : kitsWithMismatchedDependencies(target)) {
updateKitEnvironment(kit, target); McuSupportOptions::updateKitEnvironment(kit, target);
} }
} }
} }
@@ -998,7 +999,7 @@ void McuSupportOptions::fixKitsDependencies()
/** /**
* @brief Fix/update existing kits if needed * @brief Fix/update existing kits if needed
*/ */
void McuSupportOptions::fixExistingKits() void McuKitManager::fixExistingKits()
{ {
for (Kit *kit : KitManager::kits()) { for (Kit *kit : KitManager::kits()) {
if (!kit->hasValue(Constants::KIT_MCUTARGET_KITVERSION_KEY)) if (!kit->hasValue(Constants::KIT_MCUTARGET_KITVERSION_KEY))

View File

@@ -26,6 +26,9 @@
#pragma once #pragma once
#include <utils/environmentfwd.h> #include <utils/environmentfwd.h>
#include "mcusupport_global.h"
#include <QCoreApplication>
#include <QObject> #include <QObject>
#include <QVector> #include <QVector>
#include <QVersionNumber> #include <QVersionNumber>
@@ -106,8 +109,6 @@ class McuSupportOptions : public QObject
Q_OBJECT Q_OBJECT
public: public:
enum UpgradeOption { Ignore, Keep, Replace };
explicit McuSupportOptions(QObject *parent = nullptr); explicit McuSupportOptions(QObject *parent = nullptr);
~McuSupportOptions() override; ~McuSupportOptions() override;
@@ -122,43 +123,60 @@ public:
static void remapQul2xCmakeVars(ProjectExplorer::Kit *, const Utils::EnvironmentItems &); static void remapQul2xCmakeVars(ProjectExplorer::Kit *, const Utils::EnvironmentItems &);
static Utils::FilePath qulDirFromSettings(); static Utils::FilePath qulDirFromSettings();
static QString kitName(const McuTarget *mcuTarget); static void registerQchFiles();
static void registerExamples();
static const QVersionNumber &minimalQulVersion();
void checkUpgradeableKits();
void populatePackagesAndTargets();
private:
void deletePackagesAndTargets();
signals:
void packagesChanged();
};
class McuKitManager
{
Q_DECLARE_TR_FUNCTIONS(McuSupport::Internal::McuKitManager)
public:
enum class UpgradeOption {
Ignore,
Keep,
Replace
};
// Creating kits:
static ProjectExplorer::Kit *newKit(const McuTarget *mcuTarget, const McuAbstractPackage *qtForMCUsSdk);
static void createAutomaticKits();
// Querying the kits:
static QList<ProjectExplorer::Kit *> existingKits(const McuTarget *mcuTarget); static QList<ProjectExplorer::Kit *> existingKits(const McuTarget *mcuTarget);
static QList<ProjectExplorer::Kit *> matchingKits(const McuTarget *mcuTarget, static QList<ProjectExplorer::Kit *> matchingKits(const McuTarget *mcuTarget,
const McuAbstractPackage *qtForMCUsSdkPackage); const McuAbstractPackage *qtForMCUsSdkPackage);
static QList<ProjectExplorer::Kit *> upgradeableKits( static QList<ProjectExplorer::Kit *> upgradeableKits(
const McuTarget *mcuTarget, const McuAbstractPackage *qtForMCUsSdkPackage); const McuTarget *mcuTarget, const McuAbstractPackage *qtForMCUsSdkPackage);
static QList<ProjectExplorer::Kit *> kitsWithMismatchedDependencies(const McuTarget *mcuTarget); static QList<ProjectExplorer::Kit *> kitsWithMismatchedDependencies(const McuTarget *mcuTarget);
// Upgrading kits:
static UpgradeOption askForKitUpgrades();
static void upgradeKitsByCreatingNewPackage(UpgradeOption upgradeOption);
static void upgradeKitInPlace(ProjectExplorer::Kit *kit, const McuTarget *mcuTarget, const McuAbstractPackage *qtForMCUsSdk);
// Fixing kits:
static void fixKitsDependencies();
static void fixExistingKits();
// Outdated kits:
static QList<ProjectExplorer::Kit *> outdatedKits(); static QList<ProjectExplorer::Kit *> outdatedKits();
static void removeOutdatedKits(); static void removeOutdatedKits();
static ProjectExplorer::Kit *newKit(const McuTarget *mcuTarget,
const McuAbstractPackage *qtForMCUsSdk);
static void createAutomaticKits();
static UpgradeOption askForKitUpgrades();
static void upgradeKits(UpgradeOption upgradeOption);
static void upgradeKitInPlace(ProjectExplorer::Kit *kit,
const McuTarget *mcuTarget,
const McuAbstractPackage *qtForMCUsSdk);
static void fixKitsDependencies();
void checkUpgradeableKits();
static void fixExistingKits();
void populatePackagesAndTargets();
static void registerQchFiles();
static void registerExamples();
static const QVersionNumber &minimalQulVersion();
// Querying kits:
static QString kitName(const McuTarget* mcuTarget);
static QVersionNumber kitQulVersion(const ProjectExplorer::Kit *kit); static QVersionNumber kitQulVersion(const ProjectExplorer::Kit *kit);
static bool kitUpToDate(const ProjectExplorer::Kit *kit, static bool kitIsUpToDate(const ProjectExplorer::Kit *kit, const McuTarget *mcuTarget, const McuAbstractPackage *qtForMCUsSdkPackage);
const McuTarget *mcuTarget,
const McuAbstractPackage *qtForMCUsSdkPackage);
private:
void deletePackagesAndTargets();
signals:
void changed();
}; };
} // namespace Internal } // namespace Internal

View File

@@ -160,16 +160,15 @@ McuSupportOptionsWidget::McuSupportOptionsWidget()
m_kitCreationPushButton = new QPushButton(tr("Create Kit")); m_kitCreationPushButton = new QPushButton(tr("Create Kit"));
m_kitCreationPushButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); m_kitCreationPushButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
connect(m_kitCreationPushButton, &QPushButton::clicked, this, [this] { connect(m_kitCreationPushButton, &QPushButton::clicked, this, [this] {
McuSupportOptions::newKit(currentMcuTarget(), m_options.qtForMCUsSdkPackage); McuKitManager::newKit(currentMcuTarget(), m_options.qtForMCUsSdkPackage);
McuSupportOptions::registerQchFiles(); McuSupportOptions::registerQchFiles();
updateStatus(); updateStatus();
}); });
m_kitUpdatePushButton = new QPushButton(tr("Update Kit")); m_kitUpdatePushButton = new QPushButton(tr("Update Kit"));
m_kitUpdatePushButton->setSizePolicy(m_kitCreationPushButton->sizePolicy()); m_kitUpdatePushButton->setSizePolicy(m_kitCreationPushButton->sizePolicy());
connect(m_kitUpdatePushButton, &QPushButton::clicked, this, [this] { connect(m_kitUpdatePushButton, &QPushButton::clicked, this, [this] {
for (auto kit : McuSupportOptions::upgradeableKits(currentMcuTarget(), for (auto kit: McuKitManager::upgradeableKits(currentMcuTarget(), m_options.qtForMCUsSdkPackage))
m_options.qtForMCUsSdkPackage)) McuKitManager::upgradeKitInPlace(kit, currentMcuTarget(), m_options.qtForMCUsSdkPackage);
m_options.upgradeKitInPlace(kit, currentMcuTarget(), m_options.qtForMCUsSdkPackage);
updateStatus(); updateStatus();
}); });
vLayout->addWidget(m_kitCreationPushButton); vLayout->addWidget(m_kitCreationPushButton);
@@ -178,7 +177,10 @@ McuSupportOptionsWidget::McuSupportOptionsWidget()
mainLayout->addStretch(); mainLayout->addStretch();
connect(&m_options, &McuSupportOptions::changed, this, &McuSupportOptionsWidget::updateStatus); connect(&m_options,
&McuSupportOptions::packagesChanged,
this,
&McuSupportOptionsWidget::updateStatus);
showMcuTargetPackages(); showMcuTargetPackages();
} }
@@ -216,13 +218,11 @@ void McuSupportOptionsWidget::updateStatus()
m_kitCreationPushButton->setVisible(mcuTargetValid); m_kitCreationPushButton->setVisible(mcuTargetValid);
m_kitUpdatePushButton->setVisible(mcuTargetValid); m_kitUpdatePushButton->setVisible(mcuTargetValid);
if (mcuTargetValid) { if (mcuTargetValid) {
const bool hasMatchingKits const bool hasMatchingKits = !McuKitManager::matchingKits(
= !McuSupportOptions::matchingKits(mcuTarget, m_options.qtForMCUsSdkPackage) mcuTarget, m_options.qtForMCUsSdkPackage).isEmpty();
.isEmpty(); const bool hasUpgradeableKits = !hasMatchingKits &&
const bool hasUpgradeableKits !McuKitManager::upgradeableKits(
= !hasMatchingKits mcuTarget, m_options.qtForMCUsSdkPackage).isEmpty();
&& !McuSupportOptions::upgradeableKits(mcuTarget, m_options.qtForMCUsSdkPackage)
.isEmpty();
m_kitCreationPushButton->setEnabled(!hasMatchingKits); m_kitCreationPushButton->setEnabled(!hasMatchingKits);
m_kitUpdatePushButton->setEnabled(hasUpgradeableKits); m_kitUpdatePushButton->setEnabled(hasUpgradeableKits);
@@ -305,7 +305,7 @@ void McuSupportOptionsWidget::apply()
if (pathsChanged) { if (pathsChanged) {
m_options.checkUpgradeableKits(); m_options.checkUpgradeableKits();
m_options.fixKitsDependencies(); McuKitManager::fixKitsDependencies();
} }
} }
@@ -314,8 +314,9 @@ void McuSupportOptionsWidget::populateMcuTargetsComboBox()
m_options.populatePackagesAndTargets(); m_options.populatePackagesAndTargets();
m_mcuTargetsComboBox->clear(); m_mcuTargetsComboBox->clear();
m_mcuTargetsComboBox->addItems( m_mcuTargetsComboBox->addItems(
Utils::transform<QStringList>(m_options.sdkRepository.mcuTargets, Utils::transform<QStringList>(m_options.sdkRepository.mcuTargets, [](McuTarget *t) {
[](McuTarget *t) { return McuSupportOptions::kitName(t); })); return McuKitManager::kitName(t);
}));
updateStatus(); updateStatus();
} }

View File

@@ -93,9 +93,9 @@ void McuSupportPlugin::extensionsInitialized()
ProjectExplorer::DeviceManager::instance()->addDevice(McuSupportDevice::create()); ProjectExplorer::DeviceManager::instance()->addDevice(McuSupportDevice::create());
connect(KitManager::instance(), &KitManager::kitsLoaded, []() { connect(KitManager::instance(), &KitManager::kitsLoaded, []() {
McuSupportOptions::removeOutdatedKits(); McuKitManager::removeOutdatedKits();
McuSupportOptions::createAutomaticKits(); McuKitManager::createAutomaticKits();
McuSupportOptions::fixExistingKits(); McuKitManager::fixExistingKits();
McuSupportPlugin::askUserAboutMcuSupportKitsSetup(); McuSupportPlugin::askUserAboutMcuSupportKitsSetup();
}); });
} }
@@ -106,7 +106,7 @@ void McuSupportPlugin::askUserAboutMcuSupportKitsSetup()
if (!ICore::infoBar()->canInfoBeAdded(setupMcuSupportKits) if (!ICore::infoBar()->canInfoBeAdded(setupMcuSupportKits)
|| McuSupportOptions::qulDirFromSettings().isEmpty() || McuSupportOptions::qulDirFromSettings().isEmpty()
|| !McuSupportOptions::existingKits(nullptr).isEmpty()) || !McuKitManager::existingKits(nullptr).isEmpty())
return; return;
Utils::InfoBarEntry info(setupMcuSupportKits, Utils::InfoBarEntry info(setupMcuSupportKits,
@@ -130,18 +130,19 @@ void McuSupportPlugin::askUserAboutMcuSupportKitsUpgrade()
Utils::InfoBarEntry info(upgradeMcuSupportKits, Utils::InfoBarEntry info(upgradeMcuSupportKits,
tr("New version of Qt for MCUs detected. Upgrade existing Kits?"), tr("New version of Qt for MCUs detected. Upgrade existing Kits?"),
Utils::InfoBarEntry::GlobalSuppression::Enabled); Utils::InfoBarEntry::GlobalSuppression::Enabled);
static McuKitManager::UpgradeOption selectedOption = McuKitManager::UpgradeOption::Keep;
static McuSupportOptions::UpgradeOption selectedOption;
const QStringList options = { tr("Create new kits"), tr("Replace existing kits") }; const QStringList options = { tr("Create new kits"), tr("Replace existing kits") };
selectedOption = McuSupportOptions::UpgradeOption::Keep;
info.setComboInfo(options, [options](const QString &selected) { info.setComboInfo(options, [options](const QString &selected) {
selectedOption = options.indexOf(selected) == 0 ? McuSupportOptions::UpgradeOption::Keep selectedOption = options.indexOf(selected) == 0 ? McuKitManager::UpgradeOption::Keep
: McuSupportOptions::UpgradeOption::Replace; : McuKitManager::UpgradeOption::Replace;
}); });
info.addCustomButton(tr("Proceed"), [upgradeMcuSupportKits] { info.addCustomButton(tr("Proceed"), [upgradeMcuSupportKits] {
ICore::infoBar()->removeInfo(upgradeMcuSupportKits); ICore::infoBar()->removeInfo(upgradeMcuSupportKits);
QTimer::singleShot(0, []() { McuSupportOptions::upgradeKits(selectedOption); }); QTimer::singleShot(0, []() {
McuKitManager::upgradeKitsByCreatingNewPackage(selectedOption);
});
}); });
ICore::infoBar()->addInfo(info); ICore::infoBar()->addInfo(info);

View File

@@ -791,7 +791,7 @@ void targetsAndPackages(const Utils::FilePath &dir, McuSdkRepository *repo)
std::sort(repo->mcuTargets.begin(), std::sort(repo->mcuTargets.begin(),
repo->mcuTargets.end(), repo->mcuTargets.end(),
[](const McuTarget *lhs, const McuTarget *rhs) { [](const McuTarget *lhs, const McuTarget *rhs) {
return McuSupportOptions::kitName(lhs) < McuSupportOptions::kitName(rhs); return McuKitManager::kitName(lhs) < McuKitManager::kitName(rhs);
}); });
} }

View File

@@ -65,7 +65,7 @@ void McuSupportTest::test_addNewKit()
QSignalSpy kitAddedSpy(&kitManager, &KitManager::kitAdded); QSignalSpy kitAddedSpy(&kitManager, &KitManager::kitAdded);
auto *newKit{McuSupportOptions::newKit(&mcuTarget, &freeRtosPackage)}; auto *newKit{McuKitManager::newKit(&mcuTarget, &freeRtosPackage)};
QVERIFY(newKit != nullptr); QVERIFY(newKit != nullptr);
QCOMPARE(kitAddedSpy.count(), 1); QCOMPARE(kitAddedSpy.count(), 1);