16 QML_NAMED_ELEMENT(ContainerBase)
17 QML_ATTACHED(ContainerAttached)
18 Q_CLASSINFO(
"DefaultProperty",
"contentData")
19 Q_PROPERTY(QQmlListProperty<QObject> contentData READ contentData FINAL)
20 Q_PROPERTY(QQmlListProperty<QQuickItem> contentChildren READ contentChildren NOTIFY
21 contentChildrenChanged FINAL)
22 Q_PROPERTY(QQuickItem* contentHost READ contentHost CONSTANT FINAL)
23 Q_PROPERTY(
int count READ count NOTIFY countChanged FINAL)
25 int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged FINAL)
26 Q_PROPERTY(QQuickItem* currentItem READ currentItem NOTIFY currentItemChanged)
27 Q_PROPERTY(qreal contentWidth READ contentWidth WRITE setContentWidth RESET resetContentWidth
28 NOTIFY contentWidthChanged FINAL)
29 Q_PROPERTY(qreal contentHeight READ contentHeight WRITE setContentHeight RESET
30 resetContentHeight NOTIFY contentHeightChanged FINAL)
32 explicit Container(QQuickItem* parent =
nullptr);
34 static ContainerAttached* qmlAttachedProperties(QObject*);
35 QQmlListProperty<QObject> contentData();
36 QQmlListProperty<QQuickItem> contentChildren();
37 QQuickItem* contentHost()
const {
return m_host; }
38 int count()
const {
return m_items.size(); }
39 int currentIndex()
const {
return m_index; }
40 QQuickItem* currentItem()
const {
return m_current; }
41 Q_INVOKABLE
void setCurrentIndex(
int);
42 Q_INVOKABLE QQuickItem* itemAt(
int)
const;
43 Q_INVOKABLE
int indexOf(QQuickItem*)
const;
44 Q_INVOKABLE
void addItem(QQuickItem*);
45 Q_INVOKABLE
void insertItem(
int, QQuickItem*);
46 Q_INVOKABLE
void moveItem(
int,
int);
48 Q_INVOKABLE
void removeItem(QQuickItem*);
49 Q_INVOKABLE QQuickItem* takeItem(
int);
50 Q_INVOKABLE
virtual void incrementCurrentIndex();
51 Q_INVOKABLE
virtual void decrementCurrentIndex();
52 qreal contentWidth()
const;
53 qreal contentHeight()
const;
54 void setContentWidth(qreal);
55 void setContentHeight(qreal);
56 void resetContentWidth();
57 void resetContentHeight();
58 Q_SIGNAL
void countChanged();
59 Q_SIGNAL
void currentIndexChanged();
60 Q_SIGNAL
void currentItemChanged();
61 Q_SIGNAL
void contentChildrenChanged();
62 Q_SIGNAL
void contentWidthChanged();
63 Q_SIGNAL
void contentHeightChanged();
66 virtual bool isContent(QQuickItem*)
const;
67 virtual void itemAdded(QQuickItem*) {}
68 virtual void itemRemoved(QQuickItem*) {}
69 virtual void itemsChanged() {}
70 virtual void currentItemChange() {}
71 virtual int initialIndex()
const;
72 void componentComplete()
override;
73 void updatePolish()
override;
74 QSizeF measureImplicitContent()
const override;
75 const QList<QPointer<QQuickItem>>& items()
const {
return m_items; }
76 quint64 revision()
const {
return m_revision; }
78 void setImplicitContentSize(
const QSizeF&);
80 void setPresentationHost(QQuickItem*, QQuickItem*);
81 QQuickItem* presentationItem(QQuickItem*)
const;
84 void updateContentSize();
86 QHash<QQuickItem*, QPointer<QQuickItem>> m_presentation_hosts;
87 QList<QPointer<QQuickItem>> m_items;
88 QList<QPointer<QQuickItem>> m_observed;
89 QList<QMetaObject::Connection> m_connections;
90 QList<QMetaObject::Connection> m_measure_connections;
91 QPointer<QQuickItem> m_current;
92 QQuickItem* m_current_identity =
nullptr;
94 bool m_explicit_index =
false;
95 bool m_refreshing =
false;
96 bool m_refresh_again =
false;
97 bool m_destroying =
false;
98 quint64 m_revision = 0;
99 std::optional<QSizeF> m_implicit_content;
100 QSizeF m_content_size { 0, 0 };
101 std::optional<qreal> m_content_width;
102 std::optional<qreal> m_content_height;