diff --git a/src/plugins/qt4projectmanager/Qt4ProjectManager.pluginspec b/src/plugins/qt4projectmanager/Qt4ProjectManager.pluginspec index fd8fd1f2263abc0ddab994c1995439a81f2a32e5..906f6c3ece3645b73435d2d4122ad508f8260673 100644 --- a/src/plugins/qt4projectmanager/Qt4ProjectManager.pluginspec +++ b/src/plugins/qt4projectmanager/Qt4ProjectManager.pluginspec @@ -18,6 +18,7 @@ Alternatively, this plugin may be used under the terms of the GNU Lesser General <dependency name="ProjectExplorer" version="2.0.90"/> <dependency name="CppTools" version="2.0.90"/> <dependency name="CppEditor" version="2.0.90"/> + <dependency name="QmlJSEditor" version="2.0.90"/> <dependency name="Designer" version="2.0.90"/> <dependency name="Debugger" version="2.0.90"/> </dependencyList> diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index 25199985fb5c6fe3f333cafca70ef2c26ad8b8e0..888c45f26524710eec649affc5b140467e0f8c41 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -1591,6 +1591,8 @@ void Qt4ProFileNode::applyEvaluate(bool parseResult, bool async) 0); newVarValues[LibDirectoriesVar] = libDirectories(m_readerExact); newVarValues[ConfigVar] = m_readerExact->values(QLatin1String("CONFIG")); + newVarValues[QmlImportPathVar] = m_readerExact->absolutePathValues( + QLatin1String("QML_IMPORT_PATH"), m_projectDir); if (m_varValues != newVarValues) { m_varValues = newVarValues; diff --git a/src/plugins/qt4projectmanager/qt4nodes.h b/src/plugins/qt4projectmanager/qt4nodes.h index 371de843b6c81f4a60e4fcd2a2edd7fed51253df..f9bdfd29c50c33633ca86646a3a8fd9a34d029d5 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.h +++ b/src/plugins/qt4projectmanager/qt4nodes.h @@ -94,7 +94,8 @@ enum Qt4Variable { PkgConfigVar, PrecompiledHeaderVar, LibDirectoriesVar, - ConfigVar + ConfigVar, + QmlImportPathVar }; class Qt4PriFileNode; diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index 69df3c5ebb7acd58d84b9fb1ce257a60ce3b4587..907276b280e460b609d5967138e3e75098aad1be 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -47,6 +47,7 @@ #include <coreplugin/progressmanager/progressmanager.h> #include <extensionsystem/pluginmanager.h> #include <cpptools/cppmodelmanagerinterface.h> +#include <qmljs/qmljsmodelmanagerinterface.h> #include <projectexplorer/buildenvironmentwidget.h> #include <projectexplorer/customexecutablerunconfiguration.h> #include <utils/qtcassert.h> @@ -318,7 +319,7 @@ bool Qt4Project::fromMap(const QVariantMap &map) update(); updateFileList(); // This might be incorrect, need a full update - updateCodeModel(); + updateCodeModels(); createApplicationProjects(); @@ -395,7 +396,7 @@ bool Qt4Project::equalFileList(const QStringList &a, const QStringList &b) return (ait == aend && bit == bend); } -void Qt4Project::updateCodeModel() +void Qt4Project::updateCodeModels() { if (debug) qDebug()<<"Qt4Project::updateCodeModel()"; @@ -403,6 +404,12 @@ void Qt4Project::updateCodeModel() if (!activeTarget() || !activeTarget()->activeBuildConfiguration()) return; + updateCppCodeModel(); + updateQmlJSCodeModel(); +} + +void Qt4Project::updateCppCodeModel() +{ Qt4BuildConfiguration *activeBC = activeTarget()->activeBuildConfiguration(); CppTools::CppModelManagerInterface *modelmanager = @@ -575,6 +582,28 @@ void Qt4Project::updateCodeModel() } } +void Qt4Project::updateQmlJSCodeModel() +{ + QmlJS::ModelManagerInterface *modelManager = QmlJS::ModelManagerInterface::instance(); + if (!modelManager) + return; + + QmlJS::ModelManagerInterface::ProjectInfo projectInfo = modelManager->projectInfo(this); + + // Not essential since the QmlJS engine parses required files on demand. + //projectInfo.sourceFiles = ... + + FindQt4ProFiles findQt4ProFiles; + QList<Qt4ProFileNode *> proFiles = findQt4ProFiles(rootProjectNode()); + + foreach (Qt4ProFileNode *node, proFiles) { + projectInfo.importPaths.append(node->variableValue(QmlImportPathVar)); + } + projectInfo.importPaths.removeDuplicates(); + + modelManager->updateProjectInfo(projectInfo); +} + void Qt4Project::qtVersionsChanged() { setSupportedTargetIds(QtVersionManager::instance()->supportedTargetIds()); @@ -751,7 +780,7 @@ void Qt4Project::decrementPendingEvaluateFutures() } else if (m_asyncUpdateState != ShuttingDown){ // After beeing done, we need to call: updateFileList(); - updateCodeModel(); + updateCodeModels(); if (debug) qDebug()<<" Setting state to Base"; m_asyncUpdateState = Base; diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h index 25e550a7fe9747a9e179d887efb00a49f66dd33c..c39215911c04a89dea867f39e64fb729f2ab0c71 100644 --- a/src/plugins/qt4projectmanager/qt4project.h +++ b/src/plugins/qt4projectmanager/qt4project.h @@ -217,7 +217,9 @@ private: void scheduleAsyncUpdate(); void createApplicationProjects(); - void updateCodeModel(); + void updateCodeModels(); + void updateCppCodeModel(); + void updateQmlJSCodeModel(); void updateFileList(); static void collectLeafProFiles(QList<Internal::Qt4ProFileNode *> &list, Internal::Qt4ProFileNode *node); diff --git a/src/plugins/qt4projectmanager/qt4projectmanager_dependencies.pri b/src/plugins/qt4projectmanager/qt4projectmanager_dependencies.pri index e40eac29c4b6c236e180e6f5931f337c005d6880..7d2124fdded3258bf448f8fdafb1f38ca090055f 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanager_dependencies.pri +++ b/src/plugins/qt4projectmanager/qt4projectmanager_dependencies.pri @@ -1,6 +1,7 @@ include(../../plugins/projectexplorer/projectexplorer.pri) include(../../plugins/cpptools/cpptools.pri) include(../../plugins/cppeditor/cppeditor.pri) +include(../../plugins/qmljseditor/qmljseditor.pri) include(../../plugins/designer/designer.pri) include(../../plugins/debugger/debugger.pri) include(../../libs/symbianutils/symbianutils.pri)