forked from qt-creator/qt-creator
		
	qmljs: add infrastructure handling qml dialects better
QmlBundles enables us to treat the different qml dialects differently. Add imports completion. Change-log: [Qml/JS Support] Corrected handling of QtQuick2 only features. Change-log: [Qml/JS Support] Added import completion in editor. Task-number: QTCREATORBUG-8750 Task-number: QTCREATORBUG-8624 Task-number: QTCREATORBUG-8584 Task-number: QTCREATORBUG-8583 Task-number: QTCREATORBUG-8429 Change-Id: I1384b1b23136a85b4d077895ea86f92960da9e71 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
This commit is contained in:
		@@ -51,6 +51,7 @@
 | 
			
		||||
#include <extensionsystem/pluginmanager.h>
 | 
			
		||||
#include <cpptools/ModelManagerInterface.h>
 | 
			
		||||
#include <qmljs/qmljsmodelmanagerinterface.h>
 | 
			
		||||
#include <qmljstools/qmljsmodelmanager.h>
 | 
			
		||||
#include <projectexplorer/buildtargetinfo.h>
 | 
			
		||||
#include <projectexplorer/deploymentdata.h>
 | 
			
		||||
#include <projectexplorer/toolchain.h>
 | 
			
		||||
@@ -592,8 +593,8 @@ void Qt4Project::updateQmlJSCodeModel()
 | 
			
		||||
    if (!modelManager)
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
    QmlJS::ModelManagerInterface::ProjectInfo projectInfo = modelManager->projectInfo(this);
 | 
			
		||||
    projectInfo.sourceFiles = m_projectFiles->files[QMLType];
 | 
			
		||||
    QmlJS::ModelManagerInterface::ProjectInfo projectInfo =
 | 
			
		||||
            QmlJSTools::defaultProjectInfoForProject(this);
 | 
			
		||||
 | 
			
		||||
    FindQt4ProFiles findQt4ProFiles;
 | 
			
		||||
    QList<Qt4ProFileNode *> proFiles = findQt4ProFiles(rootProjectNode());
 | 
			
		||||
@@ -616,47 +617,12 @@ void Qt4Project::updateQmlJSCodeModel()
 | 
			
		||||
    // This assumption fails when there are no QDeclarativeEngine/QDeclarativeView (QtQuick 1)
 | 
			
		||||
    // or QQmlEngine/QQuickView (QtQuick 2) instances.
 | 
			
		||||
    Core::Context pl(ProjectExplorer::Constants::LANG_CXX);
 | 
			
		||||
    if (projectInfo.sourceFiles.count() && hasQmlLib)
 | 
			
		||||
    if (m_projectFiles->files[QMLType].count() && hasQmlLib)
 | 
			
		||||
        pl.add(ProjectExplorer::Constants::LANG_QMLJS);
 | 
			
		||||
    setProjectLanguages(pl);
 | 
			
		||||
 | 
			
		||||
    bool preferDebugDump = false;
 | 
			
		||||
    projectInfo.tryQmlDump = false;
 | 
			
		||||
 | 
			
		||||
    ProjectExplorer::Target *t = activeTarget();
 | 
			
		||||
    ProjectExplorer::Kit *k = t ? t->kit() : ProjectExplorer::KitManager::instance()->defaultKit();
 | 
			
		||||
    QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitInformation::qtVersion(k);
 | 
			
		||||
 | 
			
		||||
    if (t) {
 | 
			
		||||
        if (Qt4BuildConfiguration *bc = qobject_cast<Qt4BuildConfiguration *>(t->activeBuildConfiguration()))
 | 
			
		||||
            preferDebugDump = bc->qmakeBuildConfiguration() & QtSupport::BaseQtVersion::DebugBuild;
 | 
			
		||||
    } else {
 | 
			
		||||
        if (qtVersion)
 | 
			
		||||
            preferDebugDump = qtVersion->defaultBuildConfig() & QtSupport::BaseQtVersion::DebugBuild;
 | 
			
		||||
    }
 | 
			
		||||
    if (qtVersion && qtVersion->isValid()) {
 | 
			
		||||
        projectInfo.tryQmlDump = qtVersion->type() == QLatin1String(QtSupport::Constants::DESKTOPQT)
 | 
			
		||||
                || qtVersion->type() == QLatin1String(QtSupport::Constants::SIMULATORQT);
 | 
			
		||||
        projectInfo.qtQmlPath = qtVersion->qmakeProperty("QT_INSTALL_QML");
 | 
			
		||||
        if (!projectInfo.qtQmlPath.isEmpty())
 | 
			
		||||
            projectInfo.importPaths += projectInfo.qtQmlPath;
 | 
			
		||||
        projectInfo.qtImportsPath = qtVersion->qmakeProperty("QT_INSTALL_IMPORTS");
 | 
			
		||||
        if (!projectInfo.qtImportsPath.isEmpty())
 | 
			
		||||
            projectInfo.importPaths += projectInfo.qtImportsPath;
 | 
			
		||||
        projectInfo.qtVersionString = qtVersion->qtVersionString();
 | 
			
		||||
    }
 | 
			
		||||
    projectInfo.importPaths.removeDuplicates();
 | 
			
		||||
 | 
			
		||||
    if (projectInfo.tryQmlDump) {
 | 
			
		||||
        QtSupport::QmlDumpTool::pathAndEnvironment(this, qtVersion,
 | 
			
		||||
                                                   ToolChainKitInformation::toolChain(k),
 | 
			
		||||
                                                   preferDebugDump, &projectInfo.qmlDumpPath,
 | 
			
		||||
                                                   &projectInfo.qmlDumpEnvironment);
 | 
			
		||||
    } else {
 | 
			
		||||
        projectInfo.qmlDumpPath.clear();
 | 
			
		||||
        projectInfo.qmlDumpEnvironment.clear();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    modelManager->updateProjectInfo(projectInfo);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user