From e37e9b6a8448837844dd32a1c418f6462f1504c9 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 9 Apr 2025 19:46:04 +0200 Subject: [PATCH] QmlDesigner: Create directory imports on demand This function is only used on demand in the item library. Task-number: QDS-15165 Change-Id: I784d15f1cf6be37885336259a434abe7dfe09b66 Reviewed-by: Marco Bubke --- .../libs/designercore/model/model.cpp | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/libs/designercore/model/model.cpp b/src/plugins/qmldesigner/libs/designercore/model/model.cpp index f2fbf45c5a9..fb30f30e074 100644 --- a/src/plugins/qmldesigner/libs/designercore/model/model.cpp +++ b/src/plugins/qmldesigner/libs/designercore/model/model.cpp @@ -1801,6 +1801,31 @@ Storage::Info::ExportedTypeName Model::exportedTypeNameForMetaInfo(const NodeMet namespace { +QmlDesigner::Imports createPossibleFileImports(const Utils::FilePath &path) +{ + auto folder = path.parentDir(); + QmlDesigner::Imports imports; + + /* Creates imports for all sub folder that contain a qml file. */ + folder.iterateDirectory( + [&](const Utils::FilePath &item) { + bool append = false; + + item.iterateDirectory( + [&](const Utils::FilePath &item) { + append = true; + return Utils::IterationPolicy::Stop; + }, + {{"*.qml"}, QDir::Files}); + if (append) + imports.append(QmlDesigner::Import::createFileImport(item.fileName())); + return Utils::IterationPolicy::Continue; + }, + {{}, QDir::Dirs | QDir::NoDotAndDotDot}); + + return imports; +} + QmlDesigner::Imports createQt6ModulesForProjectStorage() { QmlDesigner::Imports imports = { @@ -1854,7 +1879,10 @@ QmlDesigner::Imports createQt6ModulesForProjectStorage() Imports Model::possibleImports() const { #ifdef QDS_USE_PROJECTSTORAGE - static auto imports = createQt6ModulesForProjectStorage(); + static auto qt6Imports = createQt6ModulesForProjectStorage(); + auto imports = createPossibleFileImports(Utils::FilePath::fromUrl(fileUrl())); + imports.append(qt6Imports); + return imports; #else return d->m_possibleImportList;