summaryrefslogtreecommitdiff
path: root/src/plugins/qmlprojectmanager
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2018-02-07 11:58:23 +0100
committerEike Ziller <eike.ziller@qt.io>2018-02-07 11:58:23 +0100
commit5432dd1f5c43d9859e08e6e3a33baf600b33950d (patch)
treecdfa0d672607bfa86fae687e774338bc5066bf94 /src/plugins/qmlprojectmanager
parentd3bb3c09535963eb8b711edb08ee79b7dcc9a393 (diff)
parent631d9cd711ed348699bb265b7c9333600c8636e3 (diff)
downloadqt-creator-5432dd1f5c43d9859e08e6e3a33baf600b33950d.tar.gz
Merge remote-tracking branch 'origin/4.6'
Conflicts: src/plugins/coreplugin/locator/locator.cpp src/plugins/imageviewer/imageviewerplugin.cpp src/plugins/remotelinux/remotelinuxplugin.cpp src/tools/clangbackend/source/tokeninfo.cpp tests/unit/unittest/data/highlightingmarks.cpp Change-Id: I74cc3ba3a2836cb9d0e65d3380d8c4f88d720c67
Diffstat (limited to 'src/plugins/qmlprojectmanager')
-rw-r--r--src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp7
-rw-r--r--src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.cpp10
-rw-r--r--src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.h6
-rw-r--r--src/plugins/qmlprojectmanager/qmlproject.cpp7
-rw-r--r--src/plugins/qmlprojectmanager/qmlproject.h4
-rw-r--r--src/plugins/qmlprojectmanager/qmlprojectenvironmentaspect.cpp6
6 files changed, 40 insertions, 0 deletions
diff --git a/src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp b/src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp
index 6154ecd3d7..01054df127 100644
--- a/src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp
+++ b/src/plugins/qmlprojectmanager/fileformat/qmlprojectfileformat.cpp
@@ -127,6 +127,13 @@ QmlProjectItem *QmlProjectFileFormat::parseProjectFile(const Utils::FileName &fi
OtherFileFilterItem *otherFileFilterItem = new OtherFileFilterItem(projectItem);
setupFileFilterItem(otherFileFilterItem, childNode);
projectItem->appendContent(otherFileFilterItem);
+ } else if (childNode->name() == "Environment") {
+ const auto properties = childNode->properties();
+ auto i = properties.constBegin();
+ while (i != properties.constEnd()) {
+ projectItem->addToEnviroment(i.key(), i.value().toString());
+ ++i;
+ }
} else {
qWarning() << "Unknown type:" << childNode->name();
}
diff --git a/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.cpp b/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.cpp
index 8e9e99475f..b462bf48b8 100644
--- a/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.cpp
+++ b/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.cpp
@@ -106,4 +106,14 @@ bool QmlProjectItem::matchesFile(const QString &filePath) const
return false;
}
+QList<Utils::EnvironmentItem> QmlProjectItem::environment() const
+{
+ return m_environment;
+}
+
+void QmlProjectItem::addToEnviroment(const QString &key, const QString &value)
+{
+ m_environment.append(Utils::EnvironmentItem(key, value));
+}
+
} // namespace QmlProjectManager
diff --git a/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.h b/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.h
index 757e571468..e3c65e7ef1 100644
--- a/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.h
+++ b/src/plugins/qmlprojectmanager/fileformat/qmlprojectitem.h
@@ -25,6 +25,8 @@
#pragma once
+#include <utils/environment.h>
+
#include <QObject>
#include <QSet>
#include <QStringList>
@@ -60,6 +62,9 @@ public:
void appendContent(QmlProjectContentItem *item) { m_content.append(item); }
+ QList<Utils::EnvironmentItem> environment() const;
+ void addToEnviroment(const QString &key, const QString &value);
+
signals:
void qmlFilesChanged(const QSet<QString> &, const QSet<QString> &);
@@ -69,6 +74,7 @@ protected:
QStringList m_importPaths;
QStringList m_absoluteImportPaths;
QString m_mainFile;
+ QList<Utils::EnvironmentItem> m_environment;
QList<QmlProjectContentItem *> m_content; // content property
};
diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp
index 2f9ab498da..471ef4a13b 100644
--- a/src/plugins/qmlprojectmanager/qmlproject.cpp
+++ b/src/plugins/qmlprojectmanager/qmlproject.cpp
@@ -213,6 +213,13 @@ Utils::FileName QmlProject::targetFile(const Utils::FileName &sourceFile,
return Utils::FileName::fromString(QDir::cleanPath(targetDir.absoluteFilePath(relative)));
}
+QList<Utils::EnvironmentItem> QmlProject::environment() const
+{
+ if (m_projectItem)
+ return m_projectItem.data()->environment();
+ return {};
+}
+
bool QmlProject::validProjectFile() const
{
return !m_projectItem.isNull();
diff --git a/src/plugins/qmlprojectmanager/qmlproject.h b/src/plugins/qmlprojectmanager/qmlproject.h
index c1b667d21a..4ecd7b226e 100644
--- a/src/plugins/qmlprojectmanager/qmlproject.h
+++ b/src/plugins/qmlprojectmanager/qmlproject.h
@@ -30,6 +30,8 @@
#include <projectexplorer/project.h>
+#include <utils/environment.h>
+
#include <QPointer>
namespace ProjectExplorer { class RunConfiguration; }
@@ -65,6 +67,8 @@ public:
Utils::FileName targetDirectory(const ProjectExplorer::Target *target) const;
Utils::FileName targetFile(const Utils::FileName &sourceFile,
const ProjectExplorer::Target *target) const;
+
+ QList<Utils::EnvironmentItem> environment() const;
QStringList customImportPaths() const;
bool addFiles(const QStringList &filePaths);
diff --git a/src/plugins/qmlprojectmanager/qmlprojectenvironmentaspect.cpp b/src/plugins/qmlprojectmanager/qmlprojectenvironmentaspect.cpp
index 626c889551..5cc6fe9988 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectenvironmentaspect.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectenvironmentaspect.cpp
@@ -25,6 +25,8 @@
#include "qmlprojectenvironmentaspect.h"
+#include "qmlproject.h"
+
#include <projectexplorer/target.h>
#include <projectexplorer/kit.h>
#include <utils/qtcassert.h>
@@ -57,6 +59,10 @@ Utils::Environment QmlProjectEnvironmentAspect::baseEnvironment() const
if (base == static_cast<int>(KitEnvironmentBase))
runConfiguration()->target()->kit()->addToEnvironment(env);
+ QmlProject *project = qobject_cast<QmlProject *>(runConfiguration()->target()->project());
+ if (project)
+ env.modify(project->environment());
+
return env;
}