diff options
Diffstat (limited to 'src/plugins/qmldesigner/designercore/include')
10 files changed, 57 insertions, 28 deletions
diff --git a/src/plugins/qmldesigner/designercore/include/externaldependenciesinterface.h b/src/plugins/qmldesigner/designercore/include/externaldependenciesinterface.h index 71ddeb7dc1..9055f51b6a 100644 --- a/src/plugins/qmldesigner/designercore/include/externaldependenciesinterface.h +++ b/src/plugins/qmldesigner/designercore/include/externaldependenciesinterface.h @@ -28,6 +28,7 @@ public: virtual QString qmlPuppetFallbackDirectory() const = 0; virtual QString defaultPuppetToplevelBuildDirectory() const = 0; virtual QUrl projectUrl() const = 0; + virtual QString projectName() const = 0; virtual QString currentProjectDirPath() const = 0; virtual QUrl currentResourcePath() const = 0; virtual void parseItemLibraryDescriptions() = 0; diff --git a/src/plugins/qmldesigner/designercore/include/itemlibraryentry.h b/src/plugins/qmldesigner/designercore/include/itemlibraryentry.h index f88f9e35c6..2d0f2ef31e 100644 --- a/src/plugins/qmldesigner/designercore/include/itemlibraryentry.h +++ b/src/plugins/qmldesigner/designercore/include/itemlibraryentry.h @@ -42,13 +42,16 @@ class QMLDESIGNERCORE_EXPORT ItemLibraryEntry public: ItemLibraryEntry(); - explicit ItemLibraryEntry(const Storage::Info::ItemLibraryEntry &entry, - const ProjectStorageType &projectStorage); - ~ItemLibraryEntry() = default; + ItemLibraryEntry(const ItemLibraryEntry &) = default; + ItemLibraryEntry &operator=(const ItemLibraryEntry &) = default; + ItemLibraryEntry(ItemLibraryEntry &&) = default; + ItemLibraryEntry &operator=(ItemLibraryEntry &&) = default; + explicit ItemLibraryEntry(const Storage::Info::ItemLibraryEntry &entry); + ~ItemLibraryEntry(); QString name() const; TypeName typeName() const; - const NodeMetaInfo &metaInfo() const; + TypeId typeId() const; QIcon typeIcon() const; QString libraryEntryIconPath() const; int majorVersion() const; @@ -86,7 +89,7 @@ private: using ItemLibraryEntries = QList<ItemLibraryEntry>; QMLDESIGNERCORE_EXPORT QList<ItemLibraryEntry> toItemLibraryEntries( - const Storage::Info::ItemLibraryEntries &entries, const ProjectStorageType &projectStorage); + const Storage::Info::ItemLibraryEntries &entries); } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/designercore/include/model.h b/src/plugins/qmldesigner/designercore/include/model.h index b907e6c5d8..39b5cdaa81 100644 --- a/src/plugins/qmldesigner/designercore/include/model.h +++ b/src/plugins/qmldesigner/designercore/include/model.h @@ -137,7 +137,7 @@ public: ModelPointer createModel(const TypeName &typeName, std::unique_ptr<ModelResourceManagementInterface> resourceManagement = {}); - QUrl fileUrl() const; + const QUrl &fileUrl() const; SourceId fileUrlSourceId() const; void setFileUrl(const QUrl &url); @@ -147,7 +147,7 @@ public: void setMetaInfo(const MetaInfo &metaInfo); #endif - Module module(Utils::SmallStringView moduleName); + Module module(Utils::SmallStringView moduleName, Storage::ModuleKind moduleKind); NodeMetaInfo metaInfo(const TypeName &typeName, int majorVersion = -1, int minorVersion = -1) const; NodeMetaInfo metaInfo(Module module, Utils::SmallStringView typeName, @@ -166,6 +166,7 @@ public: NodeMetaInfo qtQmlConnectionsMetaInfo() const; NodeMetaInfo qtQmlModelsListModelMetaInfo() const; NodeMetaInfo qtQmlModelsListElementMetaInfo() const; + NodeMetaInfo qtQmlXmlListModelXmlListModelRoleMetaInfo() const; NodeMetaInfo qtQuick3DBakedLightmapMetaInfo() const; NodeMetaInfo qtQuick3DDefaultMaterialMetaInfo() const; NodeMetaInfo qtQuick3DDirectionalLightMetaInfo() const; @@ -218,14 +219,17 @@ public: // Imports: const Imports &imports() const; - const Imports &possibleImports() const; - const Imports &usedImports() const; + Imports possibleImports() const; + Imports usedImports() const; void changeImports(Imports importsToBeAdded, Imports importsToBeRemoved); +#ifndef QDS_USE_PROJECTSTORAGE void setPossibleImports(Imports possibleImports); +#endif +#ifndef QDS_USE_PROJECTSTORAGE void setUsedImports(Imports usedImports); +#endif bool hasImport(const Import &import, bool ignoreAlias = true, bool allowHigherVersion = false) const; bool isImportPossible(const Import &import, bool ignoreAlias = true, bool allowHigherVersion = false) const; - QString pathForImport(const Import &import); QStringList importPaths() const; Import highestPossibleImport(const QString &importPath); @@ -251,10 +255,7 @@ public: bool hasId(const QString &id) const; bool hasImport(const QString &importUrl) const; - QString generateNewId(const QString &prefixName, - const QString &fallbackPrefix = "element", - std::optional<std::function<bool(const QString &)>> isDuplicate = {}) const; - QString generateIdFromName(const QString &name, const QString &fallbackId = "element") const; + QString generateNewId(const QString &prefixName, const QString &fallbackPrefix = "element") const; void startDrag(QMimeData *mimeData, const QPixmap &icon); void endDrag(); diff --git a/src/plugins/qmldesigner/designercore/include/modelfwd.h b/src/plugins/qmldesigner/designercore/include/modelfwd.h index 0a062289fd..91c533fe7b 100644 --- a/src/plugins/qmldesigner/designercore/include/modelfwd.h +++ b/src/plugins/qmldesigner/designercore/include/modelfwd.h @@ -77,7 +77,7 @@ constexpr bool useProjectStorage() using ProjectStorageType = ProjectStorageInterface; using PathCacheType = SourcePathCacheInterface; #else -using ProjectStorageType = ProjectStorage<Sqlite::Database>; +using ProjectStorageType = ProjectStorage; using PathCacheType = SourcePathCache<ProjectStorageType, NonLockingMutex>; #endif diff --git a/src/plugins/qmldesigner/designercore/include/nodehints.h b/src/plugins/qmldesigner/designercore/include/nodehints.h index 9e67c2d99b..99470db65f 100644 --- a/src/plugins/qmldesigner/designercore/include/nodehints.h +++ b/src/plugins/qmldesigner/designercore/include/nodehints.h @@ -3,9 +3,11 @@ #pragma once +#include "modelnode.h" +#include "nodemetainfo.h" + #include <QList> #include <QString> -#include "modelnode.h" #include "qmldesignercorelib_global.h" #include "invalidmetainfoexception.h" @@ -54,18 +56,19 @@ public: QHash<QString, QString> hints() const; static NodeHints fromModelNode(const ModelNode &modelNode); - static NodeHints fromItemLibraryEntry(const ItemLibraryEntry &entry); + static NodeHints fromItemLibraryEntry(const ItemLibraryEntry &entry, Model *model); private: explicit NodeHints(const ModelNode &modelNode); explicit NodeHints(const NodeMetaInfo &metaInfo); - explicit NodeHints(const ItemLibraryEntry &entry); + explicit NodeHints(const ItemLibraryEntry &entry, Model *model); const ModelNode &modelNode() const; bool isValid() const; Model *model() const; bool evaluateBooleanExpression(const QString &hintName, bool defaultValue, const ModelNode potentialParent = ModelNode()) const; ModelNode m_modelNode; + NodeMetaInfo m_metaInfo; QHash<QString, QString> m_hints; }; diff --git a/src/plugins/qmldesigner/designercore/include/nodemetainfo.h b/src/plugins/qmldesigner/designercore/include/nodemetainfo.h index 53c755ddc8..fd3f2f9be8 100644 --- a/src/plugins/qmldesigner/designercore/include/nodemetainfo.h +++ b/src/plugins/qmldesigner/designercore/include/nodemetainfo.h @@ -27,9 +27,15 @@ QT_END_NAMESPACE # define DEPRECATED_VERSION_NUMBER \ [[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 { @@ -116,7 +122,7 @@ public: Storage::Info::ItemLibraryEntries itemLibrariesEntries() const; SourceId sourceId() const; - QString componentFileName() const; + DEPRECATED_COMPONENT_FILE_NAME QString componentFileName() const; bool isBasedOn(const NodeMetaInfo &metaInfo) const; bool isBasedOn(const NodeMetaInfo &metaInfo1, const NodeMetaInfo &metaInfo2) const; @@ -167,6 +173,7 @@ public: bool isQtMultimediaSoundEffect() const; bool isQtObject() const; bool isQtQmlConnections() const; + bool isQtQmlModelsListElement() const; bool isQtQuick3DBakedLightmap() const; bool isQtQuick3DBuffer() const; bool isQtQuick3DCamera() const; @@ -176,9 +183,9 @@ public: bool isQtQuick3DInstanceList() const; bool isQtQuick3DInstanceListEntry() const; bool isQtQuick3DLight() const; - bool isQtQuickListElement() const; bool isQtQuickListModel() const; bool isQtQuickListView() const; + bool isQtQuickGridView() const; bool isQtQuick3DMaterial() const; bool isQtQuick3DModel() const; bool isQtQuick3DNode() const; @@ -235,8 +242,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) { @@ -265,12 +272,14 @@ public: private: const Storage::Info::Type &typeData() const; + PropertyDeclarationId defaultPropertyDeclarationId() const; bool isSubclassOf(const TypeName &type, int majorVersion = -1, int minorVersion = -1) const; private: TypeId m_typeId; NotNullPointer<const ProjectStorageType> m_projectStorage = {}; mutable std::optional<Storage::Info::Type> m_typeData; + mutable std::optional<PropertyDeclarationId> m_defaultPropertyId; std::shared_ptr<NodeMetaInfoPrivate> m_privateData; }; diff --git a/src/plugins/qmldesigner/designercore/include/projectstorageids.h b/src/plugins/qmldesigner/designercore/include/projectstorageids.h index bc66e0d2b2..7c2e8c4b25 100644 --- a/src/plugins/qmldesigner/designercore/include/projectstorageids.h +++ b/src/plugins/qmldesigner/designercore/include/projectstorageids.h @@ -7,6 +7,8 @@ #include <utils/span.h> +#include <QVarLengthArray> + namespace QmlDesigner { enum class BasicIdType { @@ -29,6 +31,8 @@ enum class BasicIdType { using TypeId = Sqlite::BasicId<BasicIdType::Type>; using TypeIds = std::vector<TypeId>; +template<std::size_t size> +using SmallTypeIds = QVarLengthArray<TypeId, size>; using PropertyDeclarationId = Sqlite::BasicId<BasicIdType::PropertyDeclaration>; using PropertyDeclarationIds = std::vector<PropertyDeclarationId>; @@ -44,9 +48,13 @@ using EnumerationDeclarationIds = std::vector<EnumerationDeclarationId>; using SourceContextId = Sqlite::BasicId<BasicIdType::SourceContext, int>; using SourceContextIds = std::vector<SourceContextId>; +template<std::size_t size> +using SmallSourceContextIds = QVarLengthArray<SourceContextId, size>; using SourceId = Sqlite::BasicId<BasicIdType::Source, int>; using SourceIds = std::vector<SourceId>; +template<std::size_t size> +using SmallSourceIds = QVarLengthArray<SourceId, size>; using ModuleId = Sqlite::BasicId<BasicIdType::Module, int>; using ModuleIds = std::vector<ModuleId>; diff --git a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h index dde5515a5a..e11f201cdb 100644 --- a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h +++ b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h @@ -174,6 +174,7 @@ public: ModelNode targetTransition() const; void assignTargetFlowItem(const QmlFlowTargetNode &flowItem); QmlFlowItemNode flowItemParent() const; +private: void destroyTarget(); }; diff --git a/src/plugins/qmldesigner/designercore/include/rewriterview.h b/src/plugins/qmldesigner/designercore/include/rewriterview.h index 23841accda..92c79c7863 100644 --- a/src/plugins/qmldesigner/designercore/include/rewriterview.h +++ b/src/plugins/qmldesigner/designercore/include/rewriterview.h @@ -8,11 +8,11 @@ #include "documentmessage.h" #include "rewritertransaction.h" -#include <QScopedPointer> #include <QTimer> #include <QUrl> #include <functional> +#include <memory> namespace QmlJS { class Document; @@ -123,7 +123,10 @@ public: bool renameId(const QString& oldId, const QString& newId); const QmlJS::Document *document() const; + +#ifndef QDS_USE_PROJECTSTORAGE const QmlJS::ScopeChain *scopeChain() const; +#endif QString convertTypeToImportAlias(const QString &type) const; @@ -135,8 +138,6 @@ public: void setCheckLinkErrors(bool b) { m_checkLinkErrors = b; } - QString pathForImport(const Import &import); - QStringList importDirectories() const; QSet<QPair<QString, QString> > qrcMapping() const; @@ -202,9 +203,9 @@ private: //variables bool m_checkLinkErrors = true; DifferenceHandling m_differenceHandling; - QScopedPointer<Internal::ModelNodePositionStorage> m_positionStorage; - QScopedPointer<Internal::ModelToTextMerger> m_modelToTextMerger; - QScopedPointer<Internal::TextToModelMerger> m_textToModelMerger; + std::unique_ptr<Internal::ModelNodePositionStorage> m_positionStorage; + std::unique_ptr<Internal::ModelToTextMerger> m_modelToTextMerger; + std::unique_ptr<Internal::TextToModelMerger> m_textToModelMerger; QList<DocumentMessage> m_errors; QList<DocumentMessage> m_warnings; RewriterTransaction m_removeDefaultPropertyTransaction; diff --git a/src/plugins/qmldesigner/designercore/include/subcomponentmanager.h b/src/plugins/qmldesigner/designercore/include/subcomponentmanager.h index 7fa2348854..a42164d1bd 100644 --- a/src/plugins/qmldesigner/designercore/include/subcomponentmanager.h +++ b/src/plugins/qmldesigner/designercore/include/subcomponentmanager.h @@ -7,6 +7,7 @@ # include "qmldesignercorelib_global.h" +# include <generatedcomponentutils.h> # include <import.h> # include <QObject> @@ -62,6 +63,7 @@ private: // variables QDir m_filePathDir; QPointer<Model> m_model; ExternalDependenciesInterface &m_externalDependencies; + GeneratedComponentUtils m_componentUtils; }; } // namespace QmlDesigner |