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 <marco.bubke@qt.io>
This commit is contained in:
Thomas Hartmann
2025-04-09 19:46:04 +02:00
committed by Thomas Hartmann
parent d916d077ba
commit e37e9b6a84

View File

@@ -1801,6 +1801,31 @@ Storage::Info::ExportedTypeName Model::exportedTypeNameForMetaInfo(const NodeMet
namespace { 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 createQt6ModulesForProjectStorage()
{ {
QmlDesigner::Imports imports = { QmlDesigner::Imports imports = {
@@ -1854,7 +1879,10 @@ QmlDesigner::Imports createQt6ModulesForProjectStorage()
Imports Model::possibleImports() const Imports Model::possibleImports() const
{ {
#ifdef QDS_USE_PROJECTSTORAGE #ifdef QDS_USE_PROJECTSTORAGE
static auto imports = createQt6ModulesForProjectStorage(); static auto qt6Imports = createQt6ModulesForProjectStorage();
auto imports = createPossibleFileImports(Utils::FilePath::fromUrl(fileUrl()));
imports.append(qt6Imports);
return imports; return imports;
#else #else
return d->m_possibleImportList; return d->m_possibleImportList;