17 #ifndef ABSTRACTDASHVIEW_H
18 #define ABSTRACTDASHVIEW_H
22 class QAbstractItemModel;
24 #pragma GCC diagnostic push
25 #pragma GCC diagnostic ignored "-pedantic"
26 #if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
27 #include <private/qquickvisualdatamodel_p.h>
29 #include <private/qqmldelegatemodel_p.h>
32 #pragma GCC diagnostic pop
34 class AbstractDashView :
public QQuickItem
38 Q_PROPERTY(QAbstractItemModel *model READ model WRITE setModel NOTIFY modelChanged)
39 Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged)
40 Q_PROPERTY(qreal columnSpacing READ columnSpacing WRITE setColumnSpacing NOTIFY columnSpacingChanged)
41 Q_PROPERTY(qreal rowSpacing READ rowSpacing WRITE setRowSpacing NOTIFY rowSpacingChanged)
42 Q_PROPERTY(qreal delegateCreationBegin READ delegateCreationBegin
43 WRITE setDelegateCreationBegin
44 NOTIFY delegateCreationBeginChanged
45 RESET resetDelegateCreationBegin)
46 Q_PROPERTY(qreal delegateCreationEnd READ delegateCreationEnd
47 WRITE setDelegateCreationEnd
48 NOTIFY delegateCreationEndChanged
49 RESET resetDelegateCreationEnd)
51 friend class VerticalJournalTest;
52 friend class HorizontalJournalTest;
53 friend class OrganicGridTest;
58 QAbstractItemModel *model()
const;
59 void setModel(QAbstractItemModel *model);
61 QQmlComponent *delegate()
const;
62 void setDelegate(QQmlComponent *delegate);
64 qreal columnSpacing()
const;
65 void setColumnSpacing(qreal columnSpacing);
67 qreal rowSpacing()
const;
68 void setRowSpacing(qreal rowSpacing);
70 qreal delegateCreationBegin()
const;
71 void setDelegateCreationBegin(qreal);
72 void resetDelegateCreationBegin();
74 qreal delegateCreationEnd()
const;
75 void setDelegateCreationEnd(qreal);
76 void resetDelegateCreationEnd();
80 void delegateChanged();
81 void columnSpacingChanged();
82 void rowSpacingChanged();
83 void delegateCreationBeginChanged();
84 void delegateCreationEndChanged();
90 void updatePolish()
override;
91 void componentComplete()
override;
93 void releaseItem(QQuickItem *item);
94 void setImplicitHeightDirty();
97 #if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
98 void itemCreated(
int modelIndex, QQuickItem *item);
99 void onModelUpdated(
const QQuickChangeSet &changeSet,
bool reset);
101 void itemCreated(
int modelIndex, QObject *
object);
102 void onModelUpdated(
const QQmlChangeSet &changeSet,
bool reset);
104 void onHeightChanged();
107 void createDelegateModel();
109 bool addVisibleItems(qreal fillFromY, qreal fillToY,
bool asynchronous);
110 QQuickItem *createItem(
int modelIndex,
bool asynchronous);
112 virtual void findBottomModelIndexToAdd(
int *modelIndex, qreal *yPos) = 0;
113 virtual void findTopModelIndexToAdd(
int *modelIndex, qreal *yPos) = 0;
114 virtual void addItemToView(
int modelIndex, QQuickItem *item) = 0;
115 virtual bool removeNonVisibleItems(qreal bufferFromY, qreal bufferToY) = 0;
116 virtual void cleanupExistingItems() = 0;
117 virtual void doRelayout() = 0;
118 virtual void updateItemCulling(qreal visibleFromY, qreal visibleToY) = 0;
119 virtual void calculateImplicitHeight() = 0;
120 #if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
121 virtual void processModelRemoves(
const QVector<QQuickChangeSet::Remove> &removes) = 0;
123 virtual void processModelRemoves(
const QVector<QQmlChangeSet::Remove> &removes) = 0;
126 #if (QT_VERSION < QT_VERSION_CHECK(5, 1, 0))
127 QQuickVisualDataModel *m_delegateModel;
129 QQmlDelegateModel *m_delegateModel;
133 int m_asyncRequestedIndex;
137 qreal m_delegateCreationBegin;
138 qreal m_delegateCreationEnd;
139 bool m_delegateCreationBeginValid;
140 bool m_delegateCreationEndValid;
141 bool m_needsRelayout;
142 bool m_delegateValidated;
143 bool m_implicitHeightDirty;