// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #pragma once #include "abstractproperty.h" namespace QmlDesigner { namespace Internal { class InternalNodeAbstractProperty; using InternalNodeAbstractPropertyPointer = QSharedPointer; } class QMLDESIGNERCORE_EXPORT NodeAbstractProperty : public AbstractProperty { friend ModelNode; friend Internal::ModelPrivate; friend AbstractProperty; friend QMLDESIGNERCORE_EXPORT bool operator ==(const NodeAbstractProperty &property1, const NodeAbstractProperty &property2); friend QMLDESIGNERCORE_EXPORT bool operator !=(const NodeAbstractProperty &property1, const NodeAbstractProperty &property2); public: NodeAbstractProperty(); NodeAbstractProperty(const NodeAbstractProperty &property, AbstractView *view); void reparentHere(const ModelNode &modelNode); bool isEmpty() const; int count() const; int indexOf(const ModelNode &node) const; NodeAbstractProperty parentProperty() const; QList allSubNodes(); QList directSubNodes() const; friend auto qHash(const NodeAbstractProperty &property) { qHash(AbstractProperty(property)); } protected: NodeAbstractProperty(const PropertyName &propertyName, const Internal::InternalNodePointer &internalNode, Model *model, AbstractView *view); NodeAbstractProperty(const Internal::InternalNodeAbstractPropertyPointer &property, Model *model, AbstractView *view); void reparentHere(const ModelNode &modelNode, bool isNodeList, const TypeName &typeName = TypeName()); }; QMLDESIGNERCORE_EXPORT bool operator ==(const NodeAbstractProperty &property1, const NodeAbstractProperty &property2); QMLDESIGNERCORE_EXPORT bool operator !=(const NodeAbstractProperty &property1, const NodeAbstractProperty &property2); QMLDESIGNERCORE_EXPORT QTextStream& operator<<(QTextStream &stream, const NodeAbstractProperty &property); QMLDESIGNERCORE_EXPORT QDebug operator<<(QDebug debug, const NodeAbstractProperty &property); } // namespace QmlDesigner