Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qqmldelegatemodel_p_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant
4
5#ifndef QQMLDATAMODEL_P_P_H
6#define QQMLDATAMODEL_P_P_H
7
9#include <private/qv4qobjectwrapper_p.h>
10
11#include <QtQml/qqmlcontext.h>
12#include <QtQml/qqmlincubator.h>
13
14#include <private/qqmladaptormodel_p.h>
15#include <private/qqmlopenmetaobject_p.h>
16
17#include <QtCore/qloggingcategory.h>
18#include <QtCore/qpointer.h>
19
20//
21// W A R N I N G
22// -------------
23//
24// This file is not part of the Qt API. It exists purely as an
25// implementation detail. This header file may change from version to
26// version without notice, or even be removed.
27//
28// We mean it.
29//
30
32
34
36
38
39class QQmlDelegateModelAttachedMetaObject;
40class QQmlAbstractDelegateComponent;
41class QQmlTableInstanceModel;
42
43class Q_QMLMODELS_EXPORT QQmlDelegateModelItemMetaType final
44 : public QQmlRefCounted<QQmlDelegateModelItemMetaType>
45{
46public:
47 enum class ModelKind : quint8 {
48 InstanceModel,
49 DelegateModel,
50 TableInstanceModel,
51 };
52
53 QQmlDelegateModelItemMetaType(
54 QV4::ExecutionEngine *engine, QQmlDelegateModel *model, const QStringList &groupNames);
55 QQmlDelegateModelItemMetaType(
56 QV4::ExecutionEngine *engine, QQmlTableInstanceModel *model);
57 ~QQmlDelegateModelItemMetaType();
58
59 void initializeAttachedMetaObject();
60 void initializePrototype();
61
62 int parseGroups(const QStringList &groupNames) const;
63 int parseGroups(const QV4::Value &groupNames) const;
64
65 QQmlDelegateModel *delegateModel() const
66 {
67 return modelKind == ModelKind::DelegateModel
68 ? static_cast<QQmlDelegateModel *>(model.get())
69 : nullptr;
70 }
71
72 qsizetype groupCount() const { return groupNames.size(); }
73
74 void emitModelChanged() const;
75
76 QPointer<QQmlInstanceModel> model;
77 QV4::ExecutionEngine * const v4Engine;
78 QQmlRefPointer<QQmlDelegateModelAttachedMetaObject> attachedMetaObject;
79 const QStringList groupNames;
80 QV4::PersistentValue modelItemProto;
81 ModelKind modelKind = ModelKind::InstanceModel;
82};
83
84class QQmlAdaptorModel;
86
88{
89 Q_OBJECT
90 Q_PROPERTY(int index READ modelIndex NOTIFY modelIndexChanged)
94public:
97 int row, int column);
99
102 {
103 Q_ASSERT(objectRef > 0);
104 return --objectRef == 0 && !(groups & Compositor::PersistedFlag);
105 }
106 bool isObjectReferenced() const { return objectRef != 0 || (groups & Compositor::PersistedFlag); }
107 void childContextObjectDestroyed(QObject *childContextObject);
108
109 bool isReferenced() const {
110 return scriptRef
111 || incubationTask
112 || ((groups & Compositor::UnresolvedFlag) && (groups & Compositor::GroupMask));
113 }
114
115 void dispose();
116
117 QObject *modelObject() { return this; }
118
119 void destroyObject();
120
121 static QQmlDelegateModelItem *dataForObject(QObject *object);
122
123 int groupIndex(Compositor::Group group);
124
125 int modelRow() const { return row; }
126 int modelColumn() const { return column; }
127 int modelIndex() const { return index; }
128 virtual void setModelIndex(int idx, int newRow, int newColumn, bool alwaysEmit = false);
129
130 virtual QV4::ReturnedValue get() { return QV4::QObjectWrapper::wrap(metaType->v4Engine, this); }
131
132 virtual void setValue(const QString &role, const QVariant &value) { Q_UNUSED(role); Q_UNUSED(value); }
133 virtual bool resolveIndex(const QQmlAdaptorModel &, int) { return false; }
134 virtual QQmlRefPointer<QQmlContextData> initProxy() { return contextData; }
135
136 static QV4::ReturnedValue get_model(const QV4::FunctionObject *, const QV4::Value *thisObject, const QV4::Value *argv, int argc);
137 static QV4::ReturnedValue get_groups(const QV4::FunctionObject *, const QV4::Value *thisObject, const QV4::Value *argv, int argc);
138 static QV4::ReturnedValue set_groups(const QV4::FunctionObject *, const QV4::Value *thisObject, const QV4::Value *argv, int argc);
139 static QV4::ReturnedValue get_member(QQmlDelegateModelItem *thisItem, uint flag, const QV4::Value &);
140 static QV4::ReturnedValue set_member(QQmlDelegateModelItem *thisItem, uint flag, const QV4::Value &arg);
141 static QV4::ReturnedValue get_index(QQmlDelegateModelItem *thisItem, uint flag, const QV4::Value &arg);
142
148 int objectRef = 0;
149 int scriptRef = 0;
150 int groups = 0;
151
153 {
154 if (!object)
155 return nullptr;
156
157 QQmlData *ddata = QQmlData::get(object);
158 if (!ddata || !ddata->hasExtendedData())
159 return nullptr;
160
161 return static_cast<QQmlDelegateModelAttached *>(
162 ddata->attachedProperties()->value(
163 QQmlPrivate::attachedPropertiesFunc<QQmlDelegateModel>()));
164 }
165
167
168 QDynamicMetaObjectData *exchangeMetaObject(QDynamicMetaObjectData *metaObject)
169 {
170 return std::exchange(d_ptr->metaObject, metaObject);
171 }
172
175 Q_REVISION(2, 12) void rowChanged();
177
178protected:
179 void objectDestroyed(QObject *);
180
181 int index = -1;
182 int row = -1;
183 int column = -1;
185};
186
187namespace QV4 {
188namespace Heap {
194
195}
196}
197
199{
200 V4_OBJECT2(QQmlDelegateModelItemObject, QV4::Object)
202};
203
205{
206 Object::init();
207 this->item = item;
208}
209
211{
212public:
213 bool insertItem(QQmlDelegateModelItem *modelItem);
214 QQmlDelegateModelItem *takeItem(const QQmlComponent *delegate, int newIndexHint);
215 void reuseItem(QQmlDelegateModelItem *item, int newModelIndex);
216 void drain(int maxPoolTime, std::function<void(QQmlDelegateModelItem *cacheItem)> releaseItem);
217 int size()
218 {
219 Q_ASSERT(m_reusableItemsPool.size() <= MaxSize);
220 return int(m_reusableItemsPool.size());
221 }
222
223private:
224 struct PoolItem
225 {
226 QQmlDelegateModelItem *item = nullptr;
227 int poolTime = 0;
228 };
229
230 static constexpr size_t MaxSize = size_t(std::numeric_limits<int>::max());
231
232 std::vector<PoolItem> m_reusableItemsPool;
233};
234
235template<typename Target>
237{
239
240public:
248
254
256 {
257 if (target)
259 }
260
265
267 {
268 if (!target)
269 return 0;
270
272 return 0;
273
274 return original->metaCall(o, call, id, argv);
275 }
276
277private:
278 Target target = {};
279 QDynamicMetaObjectData *original = nullptr;
280 int readOnlyProperty = -1;
281};
282
285{
286public:
289 , incubating(nullptr)
290 , vdm(l) {}
291
293 QQmlDelegateModelItem *modelItemToIncubate, QObject* object,
294 QQmlDelegateModel::DelegateModelAccess access);
295 void statusChanged(Status) override;
296 void setInitialState(QObject *) override;
297
301 QPointer<QObject> proxiedObject = nullptr; // the proxied object might disapear, so we use a QPointer instead of a raw one
303};
304
305
307{
308public:
310 virtual void emitModelUpdated(const QQmlChangeSet &changeSet, bool reset) = 0;
311 virtual void createdPackage(int, QQuickPackage *);
312 virtual void initPackage(int, QQuickPackage *);
313 virtual void destroyingPackage(QQuickPackage *);
314
316};
317
319
321{
322public:
323 Q_DECLARE_PUBLIC(QQmlDelegateModelGroup)
324
326
329
331 bool isChangedConnected();
332 void emitChanges(QV4::ExecutionEngine *engine);
333 void emitModelUpdated(bool reset);
334
335 void createdPackage(int index, QQuickPackage *package);
336 void initPackage(int index, QQuickPackage *package);
337 void destroyingPackage(QQuickPackage *package);
338
339 bool parseIndex(const QV4::Value &value, int *index, Compositor::Group *group) const;
340 bool parseGroupArgs(
341 QQmlV4FunctionPtr args, Compositor::Group *group, int *index, int *count, int *groups) const;
342
346 QQmlChangeSet changeSet;
349};
350
352
354{
355 Q_DECLARE_PUBLIC(QQmlDelegateModel)
356public:
359
360 static QQmlDelegateModelPrivate *get(QQmlDelegateModel *m) {
361 return static_cast<QQmlDelegateModelPrivate *>(QObjectPrivate::get(m));
362 }
363
364 void init();
365 void connectModel(QQmlAdaptorModel *model);
368
370 QObject *object(Compositor::Group group, int index, QQmlIncubator::IncubationMode incubationMode);
372 QVariant variantValue(Compositor::Group group, int index, const QString &name);
373 void emitCreatedPackage(QQDMIncubationTask *incubationTask, QQuickPackage *package);
374 void emitInitPackage(QQDMIncubationTask *incubationTask, QQuickPackage *package);
375 void emitCreatedItem(QQDMIncubationTask *incubationTask, QObject *item) {
376 Q_EMIT q_func()->createdItem(incubationTask->index[m_compositorGroup], item); }
377 void emitInitItem(QQDMIncubationTask *incubationTask, QObject *item) {
378 Q_EMIT q_func()->initItem(incubationTask->index[m_compositorGroup], item); }
379 void emitDestroyingPackage(QQuickPackage *package);
380 void emitDestroyingItem(QObject *item) { Q_EMIT q_func()->destroyingItem(item); }
381 void addCacheItem(QQmlDelegateModelItem *item, Compositor::iterator it);
382 void removeCacheItem(QQmlDelegateModelItem *cacheItem);
384 void updateFilterGroup();
385
386 void reuseItem(QQmlDelegateModelItem *item, int newModelIndex, int newGroups);
387 void drainReusableItemsPool(int maxPoolTime);
388 QQmlComponent *resolveDelegate(int index);
389
390 void addGroups(Compositor::iterator from, int count, Compositor::Group group, int groupFlags);
391 void removeGroups(Compositor::iterator from, int count, Compositor::Group group, int groupFlags);
392 void setGroups(Compositor::iterator from, int count, Compositor::Group group, int groupFlags);
393
394 void itemsInserted(
395 const QVector<Compositor::Insert> &inserts,
396 QVarLengthArray<QVector<QQmlChangeSet::Change>, Compositor::MaximumGroupCount> *translatedInserts,
397 QHash<int, QList<QQmlDelegateModelItem *> > *movedItems = nullptr);
398 void itemsInserted(const QVector<Compositor::Insert> &inserts);
399 void itemsRemoved(
400 const QVector<Compositor::Remove> &removes,
401 QVarLengthArray<QVector<QQmlChangeSet::Change>, Compositor::MaximumGroupCount> *translatedRemoves,
402 QHash<int, QList<QQmlDelegateModelItem *> > *movedItems = nullptr);
403 void itemsRemoved(const QVector<Compositor::Remove> &removes);
404 void itemsMoved(
405 const QVector<Compositor::Remove> &removes, const QVector<Compositor::Insert> &inserts);
406 void itemsChanged(const QVector<Compositor::Change> &changes);
407 void emitChanges();
408 void emitModelUpdated(const QQmlChangeSet &changeSet, bool reset) override;
409 void delegateChanged(bool add = true, bool remove = true);
410
416 InsertionResult insert(Compositor::insert_iterator &before, const QV4::Value &object, int groups);
417
418 int adaptorModelCount() const;
419
420 static void group_append(QQmlListProperty<QQmlDelegateModelGroup> *property, QQmlDelegateModelGroup *group);
421 static qsizetype group_count(QQmlListProperty<QQmlDelegateModelGroup> *property);
422 static QQmlDelegateModelGroup *group_at(QQmlListProperty<QQmlDelegateModelGroup> *property, qsizetype index);
423
424 void releaseIncubator(QQDMIncubationTask *incubationTask);
425 void incubatorStatusChanged(QQDMIncubationTask *incubationTask, QQmlIncubator::Status status);
426 void setInitialState(QQDMIncubationTask *incubationTask, QObject *o);
427
428 QQmlAdaptorModel m_adaptorModel;
431 QQmlAbstractDelegateComponent *m_delegateChooser;
437
442
444
447
449 bool m_complete : 1;
451 bool m_reset : 1;
455
456 union {
457 struct {
458 QQmlDelegateModelGroup *m_cacheItems;
459 QQmlDelegateModelGroup *m_items;
460 QQmlDelegateModelGroup *m_persistedItems;
461 };
462 QQmlDelegateModelGroup *m_groups[Compositor::MaximumGroupCount];
463 };
464};
465
467{
468 Q_OBJECT
469 Q_PROPERTY(QString filterOnGroup READ filterGroup WRITE setFilterGroup NOTIFY filterGroupChanged RESET resetFilterGroup FINAL)
470public:
473
474 QString filterGroup() const;
475 void setFilterGroup(const QString &group);
476 void resetFilterGroup();
477 void updateFilterGroup();
478 void updateFilterGroup(Compositor::Group group, const QQmlChangeSet &changeSet);
479
480 int count() const override;
481 bool isValid() const override;
482 QObject *object(int index, QQmlIncubator::IncubationMode incubationMode = QQmlIncubator::AsynchronousIfNested) override;
483 ReleaseFlags release(QObject *item, ReusableFlag reusable = NotReusable) override;
484 QVariant variantValue(int index, const QString &role) override;
485 QList<QByteArray> watchedRoles() const { return m_watchedRoles; }
486 void setWatchedRoles(const QList<QByteArray> &roles) override;
487 QQmlIncubator::Status incubationStatus(int index) override;
488
489 int indexOf(QObject *item, QObject *objectContext) const override;
490
491 void emitModelUpdated(const QQmlChangeSet &changeSet, bool reset) override;
492
493 void createdPackage(int index, QQuickPackage *package) override;
494 void initPackage(int index, QQuickPackage *package) override;
495 void destroyingPackage(QQuickPackage *package) override;
496
499
500private:
501 QQmlDelegateModel *m_model;
502 QMultiHash<QObject *, QQuickPackage *> m_packaged;
503 QString m_part;
504 QString m_filterGroup;
505 QList<QByteArray> m_watchedRoles;
506 QVector<int> m_pendingPackageInitializations; // vector holds model indices
507 Compositor::Group m_compositorGroup;
508 bool m_inheritGroup;
509 bool m_modelUpdatePending = true;
510};
511
512class QMetaPropertyBuilder;
513
515{
516public:
519
520 void propertyCreated(int, QMetaPropertyBuilder &) override;
521 QVariant initialValue(int) override;
522};
523
533
534class QQmlDelegateModelAttachedMetaObject final
535 : public QAbstractDynamicMetaObject,
536 public QQmlRefCounted<QQmlDelegateModelAttachedMetaObject>
537{
538public:
540 QQmlDelegateModelItemMetaType *metaType, QMetaObject *metaObject);
542
543 void objectDestroyed(QObject *) override;
544 int metaCall(QObject *, QMetaObject::Call, int _id, void **) override;
545
546private:
547 QQmlDelegateModelItemMetaType * const metaType;
548 QMetaObject * const metaObject;
549 const int memberPropertyOffset;
550 const int indexPropertyOffset;
551};
552
553QT_END_NAMESPACE
554
555#endif
void initializeRequiredProperties(QQmlDelegateModelItem *modelItemToIncubate, QObject *object, QQmlDelegateModel::DelegateModelAccess access)
QPointer< QObject > proxiedObject
QQmlRefPointer< QQmlContextData > proxyContext
void statusChanged(Status) override
Called when the status of the incubator changes.
void setInitialState(QObject *) override
Called after the object is first created, but before complex property bindings are evaluated and,...
int index[QQmlListCompositor::MaximumGroupCount]
QQmlDelegateModelItem * incubating
QQDMIncubationTask(QQmlDelegateModelPrivate *l, IncubationMode mode)
QQmlDelegateModelPrivate * vdm
QQmlDelegateModelAttachedMetaObject(QQmlDelegateModelItemMetaType *metaType, QMetaObject *metaObject)
int metaCall(QObject *, QMetaObject::Call, int _id, void **) override
QQmlDelegateModelAttached(QQmlDelegateModelItem *cacheItem, QObject *parent)
void setGroups(const QStringList &groups)
bool isUnresolved() const
\qmlattachedproperty bool QtQml.Models::DelegateModel::isUnresolved
void emitChanges()
\qmlattachedproperty bool QtQml.Models::DelegateModel::inItems
void setInPersistedItems(bool inPersisted)
QQmlDelegateModel * model() const
\qmlattachedproperty model QtQml.Models::DelegateModel::model
QStringList groups() const
\qmlattachedproperty stringlist QtQml.Models::DelegateModel::groups
QQmlDelegateModelItem * m_cacheItem
QV4::ReturnedValue array(QV4::ExecutionEngine *engine, const QVector< QQmlChangeSet::Change > &changes)
QQmlDelegateModelEngineData(QV4::ExecutionEngine *v4)
virtual void initPackage(int, QQuickPackage *)
virtual void destroyingPackage(QQuickPackage *)
virtual void emitModelUpdated(const QQmlChangeSet &changeSet, bool reset)=0
virtual void createdPackage(int, QQuickPackage *)
bool parseIndex(const QV4::Value &value, int *index, Compositor::Group *group) const
void createdPackage(int index, QQuickPackage *package)
QPointer< QQmlDelegateModel > model
bool parseGroupArgs(QQmlV4FunctionPtr args, Compositor::Group *group, int *index, int *count, int *groups) const
void initPackage(int index, QQuickPackage *package)
QQmlDelegateModelGroupEmitterList emitters
void destroyingPackage(QQuickPackage *package)
void emitChanges(QV4::ExecutionEngine *engine)
QQDMIncubationTask * incubationTask
static QV4::ReturnedValue set_member(QQmlDelegateModelItem *thisItem, uint flag, const QV4::Value &arg)
void childContextObjectDestroyed(QObject *childContextObject)
virtual void setValue(const QString &role, const QVariant &value)
virtual QV4::ReturnedValue get()
static QV4::ReturnedValue get_member(QQmlDelegateModelItem *thisItem, uint flag, const QV4::Value &)
static QV4::ReturnedValue get_index(QQmlDelegateModelItem *thisItem, uint flag, const QV4::Value &arg)
static QV4::ReturnedValue get_groups(const QV4::FunctionObject *, const QV4::Value *thisObject, const QV4::Value *argv, int argc)
int groupIndex(Compositor::Group group)
QDynamicMetaObjectData * exchangeMetaObject(QDynamicMetaObjectData *metaObject)
virtual bool resolveIndex(const QQmlAdaptorModel &, int)
QQmlRefPointer< QQmlDelegateModelItemMetaType > metaType
static QQmlDelegateModelItem * dataForObject(QObject *object)
static QV4::ReturnedValue get_model(const QV4::FunctionObject *, const QV4::Value *thisObject, const QV4::Value *argv, int argc)
virtual void setModelIndex(int idx, int newRow, int newColumn, bool alwaysEmit=false)
virtual QQmlRefPointer< QQmlContextData > initProxy()
QQmlRefPointer< QQmlContextData > contextData
QQmlDelegateModelAttached * attached() const
static QV4::ReturnedValue set_groups(const QV4::FunctionObject *, const QV4::Value *thisObject, const QV4::Value *argv, int argc)
Q_REVISION(2, 12) void rowChanged()
void objectDestroyed(QObject *)
void propertyCreated(int, QMetaPropertyBuilder &) override
QList< QQmlPartsModel * > models
void setInitialState(QQDMIncubationTask *incubationTask, QObject *o)
void removeCacheItem(QQmlDelegateModelItem *cacheItem)
QVariant variantValue(Compositor::Group group, int index, const QString &name)
void emitCreatedPackage(QQDMIncubationTask *incubationTask, QQuickPackage *package)
QList< QQDMIncubationTask * > m_finishedIncubating
void connectModel(QQmlAdaptorModel *model)
QList< QQmlDelegateModelItem * > m_cache
QQmlDelegateModelParts * m_parts
static qsizetype group_count(QQmlListProperty< QQmlDelegateModelGroup > *property)
QList< QByteArray > m_watchedRoles
QQmlAbstractDelegateComponent * m_delegateChooser
void itemsRemoved(const QVector< Compositor::Remove > &removes)
QPointer< QQmlContext > m_context
void emitCreatedItem(QQDMIncubationTask *incubationTask, QObject *item)
void emitInitItem(QQDMIncubationTask *incubationTask, QObject *item)
static void group_append(QQmlListProperty< QQmlDelegateModelGroup > *property, QQmlDelegateModelGroup *group)
QQmlStrongJSQObjectReference< QQmlComponent > m_delegate
void emitDestroyingItem(QObject *item)
void addCacheItem(QQmlDelegateModelItem *item, Compositor::iterator it)
QQmlRefPointer< QQmlDelegateModelItemMetaType > m_cacheMetaType
void reuseItem(QQmlDelegateModelItem *item, int newModelIndex, int newGroups)
void drainReusableItemsPool(int maxPoolTime)
QQmlDelegateModelGroup * m_persistedItems
static QQmlDelegateModelGroup * group_at(QQmlListProperty< QQmlDelegateModelGroup > *property, qsizetype index)
QQmlDelegateModelGroupEmitterList m_pendingParts
void emitModelUpdated(const QQmlChangeSet &changeSet, bool reset) override
QQmlDelegateModelGroup * m_cacheItems
QObject * object(Compositor::Group group, int index, QQmlIncubator::IncubationMode incubationMode)
void destroyCacheItem(QQmlDelegateModelItem *cacheItem)
InsertionResult insert(Compositor::insert_iterator &before, const QV4::Value &object, int groups)
void itemsRemoved(const QVector< Compositor::Remove > &removes, QVarLengthArray< QVector< QQmlChangeSet::Change >, Compositor::MaximumGroupCount > *translatedRemoves, QHash< int, QList< QQmlDelegateModelItem * > > *movedItems=nullptr)
void setGroups(Compositor::iterator from, int count, Compositor::Group group, int groupFlags)
void itemsInserted(const QVector< Compositor::Insert > &inserts, QVarLengthArray< QVector< QQmlChangeSet::Change >, Compositor::MaximumGroupCount > *translatedInserts, QHash< int, QList< QQmlDelegateModelItem * > > *movedItems=nullptr)
void delegateChanged(bool add=true, bool remove=true)
QQmlDelegateModelGroup * m_items
void releaseIncubator(QQDMIncubationTask *incubationTask)
void incubatorStatusChanged(QQDMIncubationTask *incubationTask, QQmlIncubator::Status status)
void emitInitPackage(QQDMIncubationTask *incubationTask, QQuickPackage *package)
void addGroups(Compositor::iterator from, int count, Compositor::Group group, int groupFlags)
void emitDestroyingPackage(QQuickPackage *package)
QQmlComponent * resolveDelegate(int index)
QMetaObject::Connection m_delegateChooserChanged
QQmlDelegateModelGroup * m_groups[Compositor::MaximumGroupCount]
void itemsChanged(const QVector< Compositor::Change > &changes)
void removeGroups(Compositor::iterator from, int count, Compositor::Group group, int groupFlags)
void itemsInserted(const QVector< Compositor::Insert > &inserts)
QQmlReusableDelegateModelItemsPool m_reusableItemsPool
void itemsMoved(const QVector< Compositor::Remove > &removes, const QVector< Compositor::Insert > &inserts)
QQmlListCompositor::Group m_compositorGroup
static QQmlDelegateModelPrivate * get(QQmlDelegateModel *m)
void emitModelUpdated(const QQmlChangeSet &changeSet, bool reset) override
QVariant variantValue(int index, const QString &role) override
int count() const override
QObject * object(int index, QQmlIncubator::IncubationMode incubationMode=QQmlIncubator::AsynchronousIfNested) override
QList< QByteArray > watchedRoles() const
void updateFilterGroup(Compositor::Group group, const QQmlChangeSet &changeSet)
void setFilterGroup(const QString &group)
QQmlIncubator::Status incubationStatus(int index) override
int indexOf(QObject *item, QObject *objectContext) const override
void destroyingPackage(QQuickPackage *package) override
void setWatchedRoles(const QList< QByteArray > &roles) override
ReleaseFlags release(QObject *item, ReusableFlag reusable=NotReusable) override
void createdPackage(int index, QQuickPackage *package) override
void initPackage(int index, QQuickPackage *package) override
QString filterGroup() const
bool isValid() const override
bool insertItem(QQmlDelegateModelItem *modelItem)
void reuseItem(QQmlDelegateModelItem *item, int newModelIndex)
void drain(int maxPoolTime, std::function< void(QQmlDelegateModelItem *cacheItem)> releaseItem)
QQmlDelegateModelItem * takeItem(const QQmlComponent *delegate, int newIndexHint)
Definition qjsvalue.h:23
QT_REQUIRE_CONFIG(animation)
QT_BEGIN_NAMESPACE Q_DECLARE_LOGGING_CATEGORY(lcEventDispatcher)
QT_REQUIRE_CONFIG(qml_delegate_model)
static bool isDoneIncubating(QQmlIncubator::Status status)
DEFINE_OBJECT_VTABLE(QQmlDelegateModelGroupChange)
DEFINE_OBJECT_VTABLE(QV4::DelegateModelGroupFunction)
DEFINE_OBJECT_VTABLE(QQmlDelegateModelItemObject)
static void incrementIndexes(QQmlDelegateModelItem *cacheItem, int count, const int *deltas)
DEFINE_OBJECT_VTABLE(QQmlDelegateModelGroupChangeArray)
QQmlDelegateModelGroupEmitterList::iterator GroupEmitterListIt
QIntrusiveList< QQmlDelegateModelGroupEmitter, &QQmlDelegateModelGroupEmitter::emitterNode > QQmlDelegateModelGroupEmitterList
QT_BEGIN_NAMESPACE typedef QQmlListCompositor Compositor
void init(ExecutionEngine *engine, uint flag, QV4::ReturnedValue(*code)(QQmlDelegateModelItem *item, uint flag, const QV4::Value &arg))
QV4::ReturnedValue(* code)(QQmlDelegateModelItem *item, uint flag, const QV4::Value &arg)
void init(const QVector< QQmlChangeSet::Change > &changes)
QVector< QQmlChangeSet::Change > * changes
void init(QQmlDelegateModelItem *item)