diff options
author | Fawzi Mohamed <fawzi.mohamed@digia.com> | 2014-04-08 11:36:03 +0200 |
---|---|---|
committer | Fawzi Mohamed <fawzi.mohamed@digia.com> | 2014-04-30 15:12:54 +0200 |
commit | de594fdee0974f6566ed1afec757abf8ff2b0873 (patch) | |
tree | e7580de31a617f7cb85895f3463d25154176355f /src/libs/qmljs/qmljsmodelmanagerinterface.cpp | |
parent | 0e43633183ad9bbf90424faef51dc7af952687d8 (diff) | |
download | qt-creator-de594fdee0974f6566ed1afec757abf8ff2b0873.tar.gz |
qmljs: split scan function
allows to more easily scan the various qml dialects
Change-Id: I9f8c44459e05e4658d3814c624e0f07762c83279
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
Diffstat (limited to 'src/libs/qmljs/qmljsmodelmanagerinterface.cpp')
-rw-r--r-- | src/libs/qmljs/qmljsmodelmanagerinterface.cpp | 66 |
1 files changed, 36 insertions, 30 deletions
diff --git a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp index c7acf47495..84ad6ad0ce 100644 --- a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp +++ b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp @@ -963,6 +963,41 @@ QmlLanguageBundles ModelManagerInterface::extendedBundles() const return m_extendedBundles; } +void ModelManagerInterface::maybeScan(const QStringList &importPaths, + Language::Enum defaultLanguage) +{ + QStringList pathToScan; + { + QMutexLocker l(&m_mutex); + foreach (QString importPath, importPaths) + if (!m_scannedPaths.contains(importPath)) { + pathToScan.append(importPath); + } + } + + if (pathToScan.count() > 1) { + QFuture<void> result = QtConcurrent::run(&ModelManagerInterface::importScan, + workingCopyInternal(), pathToScan, + this, defaultLanguage, + true); + + if (m_synchronizer.futures().size() > 10) { + QList<QFuture<void> > futures = m_synchronizer.futures(); + + m_synchronizer.clearFutures(); + + foreach (const QFuture<void> &future, futures) { + if (! (future.isFinished() || future.isCanceled())) + m_synchronizer.addFuture(future); + } + } + + m_synchronizer.addFuture(result); + + addTaskInternal(result, tr("QML import scan"), Constants::TASK_IMPORT_SCAN); + } +} + void ModelManagerInterface::updateImportPaths() { QStringList allImportPaths; @@ -1026,36 +1061,7 @@ void ModelManagerInterface::updateImportPaths() if (!m_shouldScanImports) return; - QStringList pathToScan; - { - QMutexLocker l(&m_mutex); - foreach (QString importPath, allImportPaths) - if (!m_scannedPaths.contains(importPath)) { - pathToScan.append(importPath); - } - } - - if (pathToScan.count() > 1) { - QFuture<void> result = QtConcurrent::run(&ModelManagerInterface::importScan, - workingCopyInternal(), pathToScan, - this, Language::Qml, - true); - - if (m_synchronizer.futures().size() > 10) { - QList<QFuture<void> > futures = m_synchronizer.futures(); - - m_synchronizer.clearFutures(); - - foreach (const QFuture<void> &future, futures) { - if (! (future.isFinished() || future.isCanceled())) - m_synchronizer.addFuture(future); - } - } - - m_synchronizer.addFuture(result); - - addTaskInternal(result, tr("QML import scan"), Constants::TASK_IMPORT_SCAN); - } + maybeScan(allImportPaths, Language::Qml); } ModelManagerInterface::ProjectInfo ModelManagerInterface::defaultProjectInfo() const |