7#include <private/qobject_p.h>
8#include <private/qqmlguard_p.h>
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
46
47
48
62 static void objectDestroyedImpl(QQmlGuardImpl *guard) {
63 auto This =
static_cast<
DataGuard *>(guard);
65 This->list->removeOne(*This);
70 static void data_append(QQmlListProperty<QObject> *prop, QObject *o) {
71 QList<DataGuard> *list =
static_cast<QList<DataGuard> *>(prop->data);
74 static void data_clear(QQmlListProperty<QObject> *prop) {
75 QList<DataGuard> *list =
static_cast<QList<DataGuard> *>(prop->data);
79 QList<DataGuard> *list =
static_cast<QList<DataGuard> *>(prop->data);
80 return list->at(index);
83 QList<DataGuard> *list =
static_cast<QList<DataGuard> *>(prop->data);
86 static void data_replace(QQmlListProperty<QObject> *prop, qsizetype index, QObject *o) {
87 QList<DataGuard> *list =
static_cast<QList<DataGuard> *>(prop->data);
91 QList<DataGuard> *list =
static_cast<QList<DataGuard> *>(prop->data);
101 attached.insert(parent,
this);
106 attached.remove(parent());
119QQuickPackage::QQuickPackage(QObject *parent)
120 : QObject(*(
new QQuickPackagePrivate), parent)
124QQmlListProperty<QObject> QQuickPackage::data()
127 return QQmlListProperty<QObject>(
this, &d->dataList,
128 QQuickPackagePrivate::data_append,
129 QQuickPackagePrivate::data_count,
130 QQuickPackagePrivate::data_at,
131 QQuickPackagePrivate::data_clear,
132 QQuickPackagePrivate::data_replace,
133 QQuickPackagePrivate::data_removeLast);
136bool QQuickPackage::hasPart(
const QString &name)
139 for (
int ii = 0; ii < d->dataList.size(); ++ii) {
140 QObject *obj = d->dataList.at(ii);
141 QQuickPackageAttached *a = QQuickPackageAttached::attached.value(obj);
142 if (a && a->name() == name)
148QObject *QQuickPackage::part(
const QString &name)
151 if (name.isEmpty() && !d->dataList.isEmpty())
152 return d->dataList.at(0);
154 for (
int ii = 0; ii < d->dataList.size(); ++ii) {
155 QObject *obj = d->dataList.at(ii);
156 QQuickPackageAttached *a = QQuickPackageAttached::attached.value(obj);
157 if (a && a->name() == name)
161 if (name == QLatin1String(
"default") && !d->dataList.isEmpty())
162 return d->dataList.at(0);
167QQuickPackageAttached *QQuickPackage::qmlAttachedProperties(QObject *o)
169 return new QQuickPackageAttached(o);
176#include "moc_qquickpackage_p.cpp"
virtual ~QQuickPackageAttached()
void setName(const QString &n)
static QHash< QObject *, QQuickPackageAttached * > attached
\qmltype Package \nativetype QQuickPackage \inqmlmodule QtQml.Models
static void data_removeLast(QQmlListProperty< QObject > *prop)
static QObject * data_at(QQmlListProperty< QObject > *prop, qsizetype index)
static void data_append(QQmlListProperty< QObject > *prop, QObject *o)
static qsizetype data_count(QQmlListProperty< QObject > *prop)
static void data_clear(QQmlListProperty< QObject > *prop)
static void data_replace(QQmlListProperty< QObject > *prop, qsizetype index, QObject *o)
QList< DataGuard > dataList
DataGuard(QObject *obj, QList< DataGuard > *l)
QList< DataGuard > * list