4#ifndef QQMLDATAMODEL_P_P_H
5#define QQMLDATAMODEL_P_P_H
8#include <private/qv4qobjectwrapper_p.h>
10#include <QtQml/qqmlcontext.h>
11#include <QtQml/qqmlincubator.h>
13#include <private/qqmladaptormodel_p.h>
14#include <private/qqmlopenmetaobject_p.h>
16#include <QtCore/qloggingcategory.h>
17#include <QtCore/qpointer.h>
48 void initializeMetaObject();
49 void initializePrototype();
51 int parseGroups(
const QStringList &groupNames)
const;
52 int parseGroups(
const QV4::Value &groupNames)
const;
54 QPointer<QQmlDelegateModel>
model;
90 || ((
groups & Compositor::UnresolvedFlag) && (
groups & Compositor::GroupMask));
106 virtual void setModelIndex(
int idx,
int newRow,
int newColumn,
bool alwaysEmit =
false);
121 QQmlRefPointer<QQmlDelegateModelItemMetaType>
const metaType;
174 int size() {
return m_reusableItemsPool.size(); }
177 QList<QQmlDelegateModelItem *> m_reusableItemsPool;
191 void setInitialState(
QObject *)
override;
196 QPointer<QObject> proxiedObject =
nullptr;
226 bool isChangedConnected();
228 void emitModelUpdated(
bool reset);
261 void connectToAbstractItemModel();
262 void disconnectFromAbstractItemModel();
264 void requestMoreIfNecessary();
271 Q_EMIT q_func()->createdItem(incubationTask->
index[m_compositorGroup],
item); }
273 Q_EMIT q_func()->initItem(incubationTask->
index[m_compositorGroup],
item); }
279 void updateFilterGroup();
282 void drainReusableItemsPool(
int maxPoolTime);
285 void addGroups(Compositor::iterator from,
int count, Compositor::Group
group,
int groupFlags);
286 void removeGroups(Compositor::iterator from,
int count, Compositor::Group
group,
int groupFlags);
287 void setGroups(Compositor::iterator from,
int count, Compositor::Group
group,
int groupFlags);
290 const QVector<Compositor::Insert> &inserts,
291 QVarLengthArray<QVector<QQmlChangeSet::Change>, Compositor::MaximumGroupCount> *translatedInserts,
292 QHash<
int, QList<QQmlDelegateModelItem *> > *movedItems =
nullptr);
293 void itemsInserted(
const QVector<Compositor::Insert> &inserts);
295 const QVector<Compositor::Remove> &removes,
296 QVarLengthArray<QVector<QQmlChangeSet::Change>, Compositor::MaximumGroupCount> *translatedRemoves,
297 QHash<
int, QList<QQmlDelegateModelItem *> > *movedItems =
nullptr);
298 void itemsRemoved(
const QVector<Compositor::Remove> &removes);
300 const QVector<Compositor::Remove> &removes,
const QVector<Compositor::Insert> &inserts);
301 void itemsChanged(
const QVector<Compositor::Change> &changes);
304 void delegateChanged(
bool add =
true,
bool remove =
true);
313 int adaptorModelCount()
const;
316 static qsizetype group_count(QQmlListProperty<QQmlDelegateModelGroup> *
property);
364 Q_PROPERTY(
QString filterOnGroup READ filterGroup WRITE setFilterGroup NOTIFY filterGroupChanged RESET resetFilterGroup FINAL)
371 void resetFilterGroup();
372 void updateFilterGroup();
375 int count()
const override;
376 bool isValid()
const override;
381 void setWatchedRoles(
const QList<QByteArray> &roles)
override;
397 QMultiHash<QObject *, QQuickPackage *> m_packaged;
400 QList<QByteArray> m_watchedRoles;
401 QVector<int> m_pendingPackageInitializations;
402 Compositor::Group m_compositorGroup;
404 bool m_modelUpdatePending =
true;
416 QVariant initialValue(
int)
override;
438 void objectDestroyed(
QObject *)
override;
444 const int memberPropertyOffset;
445 const int indexPropertyOffset;
static QObjectPrivate * get(QObject *o)
QQmlRefPointer< QQmlContextData > proxyContext
int index[QQmlListCompositor::MaximumGroupCount]
QQDMIncubationTask(QQmlDelegateModelPrivate *l, IncubationMode mode)
The QQmlChangeSet class stores an ordered list of notifications about changes to a linear data set.
The QQmlComponent class encapsulates a QML component definition.
The QQmlContext class defines a context within a QML engine.
virtual void destroyingPackage(QQuickPackage *)
virtual void initPackage(int, QQuickPackage *)
virtual void createdPackage(int, QQuickPackage *)
virtual void emitModelUpdated(const QQmlChangeSet &changeSet, bool reset)=0
virtual ~QQmlDelegateModelGroupEmitter()
QIntrusiveListNode emitterNode
QPointer< QQmlDelegateModel > model
static QQmlDelegateModelGroupPrivate * get(QQmlDelegateModelGroup *group)
QQmlDelegateModelGroupEmitterList emitters
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)
QPointer< QQmlDelegateModelAttached > attached
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)
virtual bool resolveIndex(const QQmlAdaptorModel &, int)
QV4::ExecutionEngine * v4
static QQmlDelegateModelItem * dataForObject(QObject *object)
static QV4::ReturnedValue get_model(const QV4::FunctionObject *, const QV4::Value *thisObject, const QV4::Value *argv, int argc)
bool isReferenced() const
virtual void setModelIndex(int idx, int newRow, int newColumn, bool alwaysEmit=false)
bool isObjectReferenced() const
QQmlRefPointer< QQmlContextData > contextData
static QV4::ReturnedValue set_groups(const QV4::FunctionObject *, const QV4::Value *thisObject, const QV4::Value *argv, int argc)
QPointer< QObject > object
Q_REVISION(2, 12) void rowChanged()
void objectDestroyed(QObject *)
QQmlRefPointer< QQmlDelegateModelItemMetaType > const metaType
QList< QQmlPartsModel * > models
QQmlDelegateModel * model
bool m_incubatorCleanupScheduled
QList< QQDMIncubationTask * > m_finishedIncubating
QQmlDelegateModelItemMetaType * m_cacheMetaType
void connectModel(QQmlAdaptorModel *model)
QList< QQmlDelegateModelItem * > m_cache
QQmlDelegateModelParts * m_parts
QList< QByteArray > m_watchedRoles
QQmlAbstractDelegateComponent * m_delegateChooser
QPointer< QQmlContext > m_context
void emitCreatedItem(QQDMIncubationTask *incubationTask, QObject *item)
void emitInitItem(QQDMIncubationTask *incubationTask, QObject *item)
QQmlStrongJSQObjectReference< QQmlComponent > m_delegate
void emitDestroyingItem(QObject *item)
QQmlDelegateModelGroup * m_persistedItems
QQmlDelegateModelGroupEmitterList m_pendingParts
QQmlDelegateModelGroup * m_cacheItems
QQmlListCompositor m_compositor
QQmlDelegateModelGroup * m_items
bool m_waitingToFetchMore
QMetaObject::Connection m_delegateChooserChanged
QQmlReusableDelegateModelItemsPool m_reusableItemsPool
QQmlAdaptorModel m_adaptorModel
QQmlListCompositor::Group m_compositorGroup
static QQmlDelegateModelPrivate * get(QQmlDelegateModel *m)
The QQmlIncubator class allows QML objects to be created asynchronously.
IncubationMode
Specifies the mode the incubator operates in.
Status
Specifies the status of the QQmlIncubator.
The QQmlListCompositor class provides a lookup table for filtered, or re-ordered list indexes.
void filterGroupChanged()
QList< QByteArray > watchedRoles() const
void reuseItem(QQmlDelegateModelItem *item, int newModelIndex)
\macro QT_RESTRICTED_CAST_FROM_ASCII
void statusChanged(QQmlComponent::Status status)
[1]
cache insert(employee->id(), employee)
QSet< QString >::iterator it
Combined button and popup list for selecting options.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
#define Q_DECLARE_LOGGING_CATEGORY(name)
GLenum GLenum GLsizei count
GLenum GLenum GLsizei void GLsizei void * column
GLenum GLenum GLsizei void * row
static void add(QPainterPath &path, const QWingedEdge &list, int edge, QPathEdge::Traversal traversal)
QIntrusiveList< QQmlDelegateModelGroupEmitter, &QQmlDelegateModelGroupEmitter::emitterNode > QQmlDelegateModelGroupEmitterList
QT_BEGIN_NAMESPACE typedef QQmlListCompositor Compositor
#define QT_REQUIRE_CONFIG(feature)
static QT_BEGIN_NAMESPACE void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharAttributes *attributes)
#define V4_OBJECT2(DataClass, superClass)
view setModel(model)
[17] //! [18]
QSqlQueryModel * model
[16]
settings remove("monkey")
obj metaObject() -> className()
QQmlDelegateModelItem * item
void init(QQmlDelegateModelItem *item)
static ReturnedValue wrap(ExecutionEngine *engine, QObject *object)