forked from qt-creator/qt-creator
QmlDesigner: Allow adding of file imports
All the functionality to support file imports in the import manager is already there. We just have to add the file imports as possible imports. We only include direct sub directories that contain at least one qml file, but no qmldir file. Task-number: QTCREATORBUG-12126 Task-number: QTCREATORBUG-11518 Change-Id: I1b606ae11682886f430794f451177980b9c5f9aa Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
committed by
Tim Jenssen
parent
f38a719615
commit
088972dd29
@@ -819,7 +819,23 @@ static void removeUsedImports(QHash<QString, ImportKey> &filteredPossibleImportK
|
||||
filteredPossibleImportKeys.remove(import.info.path());
|
||||
}
|
||||
|
||||
static QList<QmlDesigner::Import> generatePossibleImports(const QHash<QString, ImportKey> &filteredPossibleImportKeys)
|
||||
static QList<QmlDesigner::Import> generatePossibleFileImports(const QString &path)
|
||||
{
|
||||
QList<QmlDesigner::Import> possibleImports;
|
||||
|
||||
foreach (const QString &subDir, QDir(path).entryList(QDir::Dirs | QDir::NoDot | QDir::NoDotDot)) {
|
||||
QDir dir(path + "/" + subDir);
|
||||
if (!dir.entryInfoList(QStringList("*.qml"), QDir::Files).isEmpty()
|
||||
&& dir.entryInfoList(QStringList("qmldir"), QDir::Files).isEmpty()) {
|
||||
QmlDesigner::Import import = QmlDesigner::Import::createFileImport(subDir);
|
||||
possibleImports.append(import);
|
||||
}
|
||||
}
|
||||
|
||||
return possibleImports;
|
||||
}
|
||||
|
||||
static QList<QmlDesigner::Import> generatePossibleLibraryImports(const QHash<QString, ImportKey> &filteredPossibleImportKeys)
|
||||
{
|
||||
QList<QmlDesigner::Import> possibleImports;
|
||||
|
||||
@@ -842,7 +858,9 @@ void TextToModelMerger::setupPossibleImports(const QmlJS::Snapshot &snapshot, co
|
||||
|
||||
removeUsedImports(filteredPossibleImportKeys, m_scopeChain->context()->imports(m_document.data())->all());
|
||||
|
||||
QList<QmlDesigner::Import> possibleImports = generatePossibleImports(filteredPossibleImportKeys);
|
||||
QList<QmlDesigner::Import> possibleImports = generatePossibleLibraryImports(filteredPossibleImportKeys);
|
||||
|
||||
possibleImports.append(generatePossibleFileImports(document()->path()));
|
||||
|
||||
if (m_rewriterView->isAttached())
|
||||
m_rewriterView->model()->setPossibleImports(possibleImports);
|
||||
|
Reference in New Issue
Block a user