QmlDesigner: Do not require a qmake project for designer import paths

Let's enable all build system plugins to provide this information.

Task-number: QTCREATORBUG-20810
Change-Id: I0ef953e3c2c9a2be1fc4187e93232e9a2aeacafd
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Christian Kandeler
2018-08-20 14:03:01 +02:00
parent 3336baad12
commit 2485eb1a8c
7 changed files with 30 additions and 8 deletions

View File

@@ -855,6 +855,13 @@ Utils::MacroExpander *Project::macroExpander() const
return &d->m_macroExpander; return &d->m_macroExpander;
} }
QVariant Project::additionalData(Core::Id id, const Target *target) const
{
Q_UNUSED(id);
Q_UNUSED(target);
return QVariant();
}
bool Project::isParsing() const bool Project::isParsing() const
{ {
return d->m_isParsing; return d->m_isParsing;

View File

@@ -166,6 +166,8 @@ public:
void setup(const QList<const BuildInfo *> &infoList); void setup(const QList<const BuildInfo *> &infoList);
Utils::MacroExpander *macroExpander() const; Utils::MacroExpander *macroExpander() const;
virtual QVariant additionalData(Core::Id id, const Target *target) const;
bool isParsing() const; bool isParsing() const;
bool hasParsingData() const; bool hasParsingData() const;

View File

@@ -673,6 +673,11 @@ void Target::setNamedSettings(const QString &name, const QVariant &value)
d->m_pluginSettings.insert(name, value); d->m_pluginSettings.insert(name, value);
} }
QVariant Target::additionalData(Core::Id id) const
{
return project()->additionalData(id, this);
}
void Target::updateDeviceState() void Target::updateDeviceState()
{ {
IDevice::ConstPtr current = DeviceKitInformation::device(kit()); IDevice::ConstPtr current = DeviceKitInformation::device(kit());

View File

@@ -120,6 +120,8 @@ public:
QVariant namedSettings(const QString &name) const; QVariant namedSettings(const QString &name) const;
void setNamedSettings(const QString &name, const QVariant &value); void setNamedSettings(const QString &name, const QVariant &value);
QVariant additionalData(Core::Id id) const;
template<typename S, typename R, typename T> template<typename S, typename R, typename T>
void subscribeSignal(void (S::*sig)(), R*recv, T (R::*sl)()) { void subscribeSignal(void (S::*sig)(), R*recv, T (R::*sl)()) {
new Internal::TargetSubscription([sig, recv, sl, this](ProjectConfiguration *pc) { new Internal::TargetSubscription([sig, recv, sl, this](ProjectConfiguration *pc) {

View File

@@ -1378,6 +1378,13 @@ QString QmakeProject::mapProFilePathToTarget(const FileName &proFilePath)
return pro ? pro->targetInformation().target : QString(); return pro ? pro->targetInformation().target : QString();
} }
QVariant QmakeProject::additionalData(Core::Id id, const Target *target) const
{
if (id == "QmlDesignerImportPath")
return rootProjectNode()->variableValue(Variable::QmlDesignerImportPath);
return Project::additionalData(id, target);
}
} // namespace QmakeProjectManager } // namespace QmakeProjectManager
#include "qmakeproject.moc" #include "qmakeproject.moc"

View File

@@ -111,6 +111,8 @@ public:
QString mapProFilePathToTarget(const Utils::FileName &proFilePath); QString mapProFilePathToTarget(const Utils::FileName &proFilePath);
QVariant additionalData(Core::Id id, const ProjectExplorer::Target *target) const final;
signals: signals:
void proFileUpdated(QmakeProjectManager::QmakeProFile *pro, bool, bool); void proFileUpdated(QmakeProjectManager::QmakeProFile *pro, bool, bool);
void buildDirectoryInitialized(); void buildDirectoryInitialized();

View File

@@ -39,9 +39,8 @@
#include <projectexplorer/kit.h> #include <projectexplorer/kit.h>
#include <projectexplorer/project.h> #include <projectexplorer/project.h>
#include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/target.h>
#include <projectexplorer/toolchain.h> #include <projectexplorer/toolchain.h>
#include <qmakeprojectmanager/qmakeproject.h>
#include <qmakeprojectmanager/qmakenodes.h>
#include <coreplugin/messagebox.h> #include <coreplugin/messagebox.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <qtsupport/baseqtversion.h> #include <qtsupport/baseqtversion.h>
@@ -468,12 +467,10 @@ QProcessEnvironment PuppetCreator::processEnvironment() const
if (!styleConfigFileName.isEmpty()) if (!styleConfigFileName.isEmpty())
environment.appendOrSet("QT_QUICK_CONTROLS_CONF", styleConfigFileName); environment.appendOrSet("QT_QUICK_CONTROLS_CONF", styleConfigFileName);
if (m_currentProject) { if (m_currentProject && m_currentProject->activeTarget()) {
auto qmakeProject = qobject_cast<QmakeProjectManager::QmakeProject *>(m_currentProject); QStringList designerImports = m_currentProject->activeTarget()
if (qmakeProject) { ->additionalData("QmlDesignerImportPath").toStringList();
QStringList designerImports = qmakeProject->rootProjectNode()->variableValue(QmakeProjectManager::Variable::QmlDesignerImportPath); importPaths.append(designerImports);
importPaths.append(designerImports);
}
} }
if (m_availablePuppetType == FallbackPuppet) if (m_availablePuppetType == FallbackPuppet)