diff --git a/src/plugins/qtsupport/qtprojectimporter.cpp b/src/plugins/qtsupport/qtprojectimporter.cpp index f0a44f9d684..f2ebcfacf73 100644 --- a/src/plugins/qtsupport/qtprojectimporter.cpp +++ b/src/plugins/qtsupport/qtprojectimporter.cpp @@ -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 diff --git a/src/plugins/qtsupport/qtprojectimporter.h b/src/plugins/qtsupport/qtprojectimporter.h index f3dd1bf0a78..042aa3c6154 100644 --- a/src/plugins/qtsupport/qtprojectimporter.h +++ b/src/plugins/qtsupport/qtprojectimporter.h @@ -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