diff options
author | Marco Bubke <marco.bubke@qt.io> | 2024-04-24 16:24:14 +0200 |
---|---|---|
committer | Marco Bubke <marco.bubke@qt.io> | 2024-04-25 12:46:50 +0000 |
commit | 3edd18a9da2dbf6ed42f5343734b0a203adfa256 (patch) | |
tree | 1ae80260bb18aba617f341c15460c098aba5771a | |
parent | 31aec73423591483133448416ebbaac4c5768837 (diff) |
QmlDesigner: Deprecate more NodeMetaInfo
There is now allExportedTypeNames which provides the same information.
Maybe we have to add more information to the modules like a flag for the
module type.
Change-Id: I1a8c0b33fc70a157d16a153102331447f370a032
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
3 files changed, 64 insertions, 8 deletions
diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp index 8bd5761728..7d90dffffc 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp @@ -446,8 +446,13 @@ void QmlDesigner::MaterialBrowserView::loadPropertyGroups() if (!m_hasQuick3DImport || m_propertyGroupsLoaded || !model()) return; +#ifdef QDS_USE_PROJECTSTORAGE + // TODO + QString matPropsPath; +#else QString matPropsPath = model()->metaInfo("QtQuick3D.Material").importDirectoryPath() + "/designer/propertyGroups.json"; +#endif m_propertyGroupsLoaded = m_widget->materialBrowserModel()->loadPropertyGroups(matPropsPath); } diff --git a/src/plugins/qmldesigner/designercore/include/nodemetainfo.h b/src/plugins/qmldesigner/designercore/include/nodemetainfo.h index ba2e2cda65..9c8e32002f 100644 --- a/src/plugins/qmldesigner/designercore/include/nodemetainfo.h +++ b/src/plugins/qmldesigner/designercore/include/nodemetainfo.h @@ -28,10 +28,14 @@ QT_END_NAMESPACE [[deprecated( \ "In most cases you don't need them anymore because the import is setting them!")]] # define DEPRECATED_COMPONENT_FILE_NAME [[deprecated("Use sourceId() instead.")]] +# define DEPRECATED_IMPORT_DIRECTORY_PATH [[deprecated("Use allExportedTypeNames().")]] +# define DEPRECATED_REQUIRED_IMPORT_STRING [[deprecated("Use allExportedTypeNames().")]] #else # define DEPRECATED_TYPENAME # define DEPRECATED_VERSION_NUMBER # define DEPRECATED_COMPONENT_FILE_NAME +# define DEPRECATED_IMPORT_DIRECTORY_PATH +# define DEPRECATED_REQUIRED_IMPORT_STRING #endif namespace QmlDesigner { @@ -237,8 +241,8 @@ public: bool usesCustomParser() const; bool isEnumeration() const; - QString importDirectoryPath() const; - QString requiredImportString() const; + DEPRECATED_IMPORT_DIRECTORY_PATH QString importDirectoryPath() const; + DEPRECATED_REQUIRED_IMPORT_STRING QString requiredImportString() const; friend bool operator==(const NodeMetaInfo &first, const NodeMetaInfo &second) { diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index 17d40daca3..c9f8b3bd21 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -16,12 +16,14 @@ #include <filemanager/objectlengthcalculator.h> #include <modelnode.h> #include <modelnodepositionstorage.h> +#include <nodemetainfo.h> #include <nodeproperty.h> +#include <projectstorage/projectstorage.h> +#include <qmlobjectnode.h> +#include <qmltimelinekeyframegroup.h> #include <rewritingexception.h> #include <signalhandlerproperty.h> #include <variantproperty.h> -#include <qmlobjectnode.h> -#include <qmltimelinekeyframegroup.h> #include <qmljs/parser/qmljsengine_p.h> #include <qmljs/qmljsmodelmanagerinterface.h> @@ -1004,6 +1006,45 @@ QSet<QPair<QString, QString> > RewriterView::qrcMapping() const return m_textToModelMerger->qrcMapping(); } +namespace { +#ifdef QDS_USE_PROJECTSTORAGE + +ModuleIds generateModuleIds(const ModelNodes &nodes) +{ + ModuleIds moduleIds; + moduleIds.reserve(Utils::usize(nodes)); + for (const auto &node : nodes) { + auto exportedNames = node.metaInfo().allExportedTypeNames(); + if (exportedNames.size()) + moduleIds.push_back(exportedNames.front().moduleId); + } + + std::sort(moduleIds.begin(), moduleIds.end()); + moduleIds.erase(std::unique(moduleIds.begin(), moduleIds.end()), moduleIds.end()); + + return moduleIds; +} + +QStringList generateImports(ModuleIds moduleIds, const ProjectStorageType &projectStorage) +{ + return Utils::transform<QStringList>(moduleIds, [&](auto id) { + return "import " + projectStorage.moduleName(id).toQString(); + }); +} + +QStringList generateImports(const ModelNodes &nodes) +{ + if (nodes.empty()) + return {}; + + auto moduleIds = generateModuleIds(nodes); + + return generateImports(moduleIds, *nodes.front().model()->projectStorage()); +} + +#endif +} // namespace + void RewriterView::moveToComponent(const ModelNode &modelNode) { if (!modelNode.isValid()) @@ -1012,20 +1053,26 @@ void RewriterView::moveToComponent(const ModelNode &modelNode) int offset = nodeOffset(modelNode); const QList<ModelNode> nodes = modelNode.allSubModelNodesAndThisNode(); - QSet<QString> directPaths; +#ifdef QDS_USE_PROJECTSTORAGE + auto directPaths = generateImports(nodes); +#else + QSet<QString> directPathsSet; // Always add QtQuick import QString quickImport = model()->qtQuickItemMetaInfo().requiredImportString(); if (!quickImport.isEmpty()) - directPaths.insert(quickImport); + directPathsSet.insert(quickImport); for (const ModelNode &partialNode : nodes) { QString importStr = partialNode.metaInfo().requiredImportString(); if (importStr.size()) - directPaths << importStr; + directPathsSet << importStr; } - QString importData = Utils::sorted(directPaths.values()).join(QChar::LineFeed); + auto directPaths = directPathsSet.values(); +#endif + + QString importData = Utils::sorted(directPaths).join(QChar::LineFeed); if (importData.size()) importData.append(QString(2, QChar::LineFeed)); |