From f5716f05b77ee00c34218cde249c24f00b2df3a5 Mon Sep 17 00:00:00 2001 From: Kai Koehne <kai.koehne@nokia.com> Date: Wed, 6 Oct 2010 10:03:51 +0200 Subject: [PATCH] QmlDump: Get right Qt version for .qmlproject We're using a QObject property to get the Qt Version Id: QmlDumpTool is in Qt4ProjectManager, which shouldn't have a dependency to QmlProjectManager. Reviewed-by: Christian Kamm --- .../qmlprojectrunconfiguration.cpp | 7 +++++++ .../qmlprojectmanager/qmlprojectrunconfiguration.h | 4 ++++ src/plugins/qt4projectmanager/qmldumptool.cpp | 13 +++++++++++++ 3 files changed, 24 insertions(+) diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp index 9cec81f7613..aa7dab53ffe 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 9cae9392628..7381fa1b545 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 99e598c30af..d0dddbe26ac 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; -- GitLab