QtSupport: Clean up QtProjectImporter definition

Change-Id: I199c489a5cc7bb96723723992467d5d940e85f77
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2024-09-04 07:58:23 +02:00
parent 5c159641e6
commit 740483cd8b
2 changed files with 36 additions and 41 deletions

View File

@@ -23,11 +23,43 @@ using namespace Utils;
namespace QtSupport {
QtProjectImporter::QtProjectImporter(const Utils::FilePath &path) : ProjectImporter(path)
static QtVersion *versionFromVariant(const QVariant &v)
{
useTemporaryKitAspect(QtKitAspect::id(),
[this](Kit *k, const QVariantList &vl) {cleanupTemporaryQt(k, vl);},
[this](Kit *k, const QVariantList &vl) {persistTemporaryQt(k, vl);});
bool ok;
const int qtId = v.toInt(&ok);
QTC_ASSERT(ok, return nullptr);
return QtVersionManager::version(qtId);
}
static void cleanupTemporaryQt(Kit *k, const QVariantList &vl)
{
if (vl.isEmpty())
return; // No temporary Qt
QTC_ASSERT(vl.count() == 1, return);
QtVersion *version = versionFromVariant(vl.at(0));
QTC_ASSERT(version, return);
QtVersionManager::removeVersion(version);
QtKitAspect::setQtVersion(k, nullptr); // Always mark Kit as not using this Qt
}
static void persistTemporaryQt(Kit *k, const QVariantList &vl)
{
if (vl.isEmpty())
return; // No temporary Qt
QTC_ASSERT(vl.count() == 1, return);
const QVariant data = vl.at(0);
QtVersion *tmpVersion = versionFromVariant(data);
QtVersion *actualVersion = QtKitAspect::qtVersion(k);
// User changed Kit away from temporary Qt that was set up:
if (tmpVersion && actualVersion != tmpVersion)
QtVersionManager::removeVersion(tmpVersion);
}
QtProjectImporter::QtProjectImporter(const FilePath &path)
: ProjectImporter(path)
{
useTemporaryKitAspect(QtKitAspect::id(), &cleanupTemporaryQt, &persistTemporaryQt);
}
QtProjectImporter::QtVersionData
@@ -71,39 +103,6 @@ Kit *QtProjectImporter::createTemporaryKit(const QtVersionData &versionData,
});
}
static QtVersion *versionFromVariant(const QVariant &v)
{
bool ok;
const int qtId = v.toInt(&ok);
QTC_ASSERT(ok, return nullptr);
return QtVersionManager::version(qtId);
}
void QtProjectImporter::cleanupTemporaryQt(Kit *k, const QVariantList &vl)
{
if (vl.isEmpty())
return; // No temporary Qt
QTC_ASSERT(vl.count() == 1, return);
QtVersion *version = versionFromVariant(vl.at(0));
QTC_ASSERT(version, return);
QtVersionManager::removeVersion(version);
QtKitAspect::setQtVersion(k, nullptr); // Always mark Kit as not using this Qt
}
void QtProjectImporter::persistTemporaryQt(Kit *k, const QVariantList &vl)
{
if (vl.isEmpty())
return; // No temporary Qt
QTC_ASSERT(vl.count() == 1, return);
const QVariant data = vl.at(0);
QtVersion *tmpVersion = versionFromVariant(data);
QtVersion *actualVersion = QtKitAspect::qtVersion(k);
// User changed Kit away from temporary Qt that was set up:
if (tmpVersion && actualVersion != tmpVersion)
QtVersionManager::removeVersion(tmpVersion);
}
} // namespace QtSupport
#if WITH_TESTS

View File

@@ -28,10 +28,6 @@ protected:
QtVersionData findOrCreateQtVersion(const Utils::FilePath &qmakePath) const;
ProjectExplorer::Kit *createTemporaryKit(const QtVersionData &versionData,
const KitSetupFunction &setup) const;
private:
void cleanupTemporaryQt(ProjectExplorer::Kit *k, const QVariantList &vl);
void persistTemporaryQt(ProjectExplorer::Kit *k, const QVariantList &vl);
};
#ifdef WITH_TESTS