diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp index 9cec81f76135944fd32d9842bb87c227165df1b6..aa7dab53ffe90edff3658b0e8b601e10a3dc0805 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp @@ -67,6 +67,7 @@ QmlProjectRunConfiguration::QmlProjectRunConfiguration(Internal::QmlProjectTarge m_isEnabled(false) { ctor(); + updateQtVersions(); } QmlProjectRunConfiguration::QmlProjectRunConfiguration(Internal::QmlProjectTarget *parent, QmlProjectRunConfiguration *source) : @@ -78,6 +79,7 @@ QmlProjectRunConfiguration::QmlProjectRunConfiguration(Internal::QmlProjectTarge { ctor(); setMainScript(source->m_scriptFile); + updateQtVersions(); } bool QmlProjectRunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration *bc) const @@ -158,6 +160,11 @@ QString QmlProjectRunConfiguration::workingDirectory() const return projectFile.absolutePath(); } +int QmlProjectRunConfiguration::qtVersionId() const +{ + return m_qtVersionId; +} + Qt4ProjectManager::QtVersion *QmlProjectRunConfiguration::qtVersion() const { if (m_qtVersionId == -1) diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h index 9cae93926283fb9ca1892b316df153a6b490907a..7381fa1b54586f49db6183fae68c3f846a026890 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h +++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h @@ -62,6 +62,9 @@ class QMLPROJECTMANAGER_EXPORT QmlProjectRunConfiguration : public ProjectExplor Q_OBJECT friend class Internal::QmlProjectRunConfigurationFactory; + // used in qmldumptool.cpp + Q_PROPERTY(int qtVersionId READ qtVersionId) + public: QmlProjectRunConfiguration(Internal::QmlProjectTarget *parent); virtual ~QmlProjectRunConfiguration(); @@ -74,6 +77,7 @@ public: QString observerPath() const; QStringList viewerArguments() const; QString workingDirectory() const; + int qtVersionId() const; Qt4ProjectManager::QtVersion *qtVersion() const; // RunConfiguration diff --git a/src/plugins/qt4projectmanager/qmldumptool.cpp b/src/plugins/qt4projectmanager/qmldumptool.cpp index 99e598c30af9352ff7418d5e0533a1ce487d9792..d0dddbe26ac9792c3dc4339f3965c0db7235946b 100644 --- a/src/plugins/qt4projectmanager/qmldumptool.cpp +++ b/src/plugins/qt4projectmanager/qmldumptool.cpp @@ -36,8 +36,10 @@ #include <projectexplorer/project.h> #include <projectexplorer/projectexplorer.h> +#include <projectexplorer/runconfiguration.h> #include <qtconcurrent/runextensions.h> #include <qmljs/qmljsmodelmanagerinterface.h> +#include <utils/qtcassert.h> #include <QDesktopServices> #include <QCoreApplication> #include <QDir> @@ -147,6 +149,17 @@ static QtVersion *qtVersionForProject(ProjectExplorer::Project *project) return 0; } + if (project && project->id() == QLatin1String("QmlProjectManager.QmlProject")) { + // We cannot access the QmlProject interfaces here, therefore use the metatype system + QTC_ASSERT(project->activeTarget() && project->activeTarget()->activeRunConfiguration(), return 0); + QVariant variant = project->activeTarget()->activeRunConfiguration()->property("qtVersionId"); + QTC_ASSERT(variant.isValid() && variant.canConvert(QVariant::Int), return 0); + QtVersion *version = QtVersionManager::instance()->version(variant.toInt()); + if (version && version->isValid()) + return version; + return 0; + } + // else, find any desktop Qt version that has qmldump, or - if there isn't any - // one that could build it QtVersion *desktopQt = 0;