diff --git a/src/plugins/qtsupport/qtkitinformation.cpp b/src/plugins/qtsupport/qtkitinformation.cpp index a4643a838f7c2d21f57d8a8b716c2627fbe6a033..cd5da5fc104ac2f99a9aa7eaa0b4a5d1cc7d7237 100644 --- a/src/plugins/qtsupport/qtkitinformation.cpp +++ b/src/plugins/qtsupport/qtkitinformation.cpp @@ -35,6 +35,7 @@ #include "qtparser.h" #include <utils/environment.h> +#include <utils/qtcassert.h> namespace QtSupport { namespace Internal { @@ -44,10 +45,8 @@ const char QT_INFORMATION[] = "QtSupport.QtInformation"; QtKitInformation::QtKitInformation() { setObjectName(QLatin1String("QtKitInformation")); - connect(QtVersionManager::instance(), SIGNAL(qtVersionsChanged(QList<int>,QList<int>,QList<int>)), - this, SIGNAL(validationNeeded())); - connect(QtVersionManager::instance(), SIGNAL(qtVersionsChanged(QList<int>,QList<int>,QList<int>)), - this, SLOT(qtVersionsChanged(QList<int>,QList<int>,QList<int>))); + connect(ProjectExplorer::KitManager::instance(), SIGNAL(kitsLoaded()), + this, SLOT(kitsWereLoaded())); } Core::Id QtKitInformation::dataId() const @@ -89,14 +88,17 @@ QVariant QtKitInformation::defaultValue(ProjectExplorer::Kit *k) const QList<ProjectExplorer::Task> QtKitInformation::validate(const ProjectExplorer::Kit *k) const { + QList<ProjectExplorer::Task> result; + QTC_ASSERT(QtVersionManager::instance()->isLoaded(), return result); BaseQtVersion *version = qtVersion(k); if (!version) - return QList<ProjectExplorer::Task>(); + return result; return version->validateKit(k); } void QtKitInformation::fix(ProjectExplorer::Kit *k) { + QTC_ASSERT(QtVersionManager::instance()->isLoaded(), return); BaseQtVersion *version = qtVersion(k); if (!version) setQtVersionId(k, -1); @@ -187,6 +189,15 @@ void QtKitInformation::qtVersionsChanged(const QList<int> &addedIds, notifyAboutUpdate(k); } +void QtKitInformation::kitsWereLoaded() +{ + foreach (ProjectExplorer::Kit *k, ProjectExplorer::KitManager::instance()->kits()) + fix(k); + + connect(QtVersionManager::instance(), SIGNAL(qtVersionsChanged(QList<int>,QList<int>,QList<int>)), + this, SLOT(qtVersionsChanged(QList<int>,QList<int>,QList<int>))); +} + QtPlatformKitMatcher::QtPlatformKitMatcher(const QString &platform) : m_platform(platform) { } diff --git a/src/plugins/qtsupport/qtkitinformation.h b/src/plugins/qtsupport/qtkitinformation.h index 5efca50a5918e7f60987941da2541ca097c1e2ba..e4b59fbf99fac42caeae5165369debc60cd7bd7d 100644 --- a/src/plugins/qtsupport/qtkitinformation.h +++ b/src/plugins/qtsupport/qtkitinformation.h @@ -72,6 +72,7 @@ private slots: void qtVersionsChanged(const QList<int> &addedIds, const QList<int> &removedIds, const QList<int> &changedIds); + void kitsWereLoaded(); }; class QTSUPPORT_EXPORT QtPlatformKitMatcher : public ProjectExplorer::KitMatcher diff --git a/src/plugins/qtsupport/qtsupportplugin.cpp b/src/plugins/qtsupport/qtsupportplugin.cpp index cedb4773486d9fa3f7e42b90905cb133b926b557..793ae378f2576dc094e6b0d6f179c4655e81ab85 100644 --- a/src/plugins/qtsupport/qtsupportplugin.cpp +++ b/src/plugins/qtsupport/qtsupportplugin.cpp @@ -83,6 +83,8 @@ bool QtSupportPlugin::initialize(const QStringList &arguments, QString *errorMes addAutoReleasedObject(new CustomExecutableRunConfigurationFactory); + ProjectExplorer::KitManager::instance()->registerKitInformation(new QtKitInformation); + return true; } @@ -98,7 +100,6 @@ void QtSupportPlugin::extensionsInitialized() this, SLOT(updateVariable(QByteArray))); QtVersionManager::instance()->extensionsInitialized(); - ProjectExplorer::KitManager::instance()->registerKitInformation(new QtKitInformation); } bool QtSupportPlugin::delayedInitialize()