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
44
47
48
49
63 static void objectDestroyedImpl(QQmlGuardImpl *guard) {
64 auto This =
static_cast<
DataGuard *>(guard);
66 This->list->removeOne(*This);
71 static void data_append(QQmlListProperty<QObject> *prop, QObject *o) {
72 QList<DataGuard> *list =
static_cast<QList<DataGuard> *>(prop->data);
75 static void data_clear(QQmlListProperty<QObject> *prop) {
76 QList<DataGuard> *list =
static_cast<QList<DataGuard> *>(prop->data);
80 QList<DataGuard> *list =
static_cast<QList<DataGuard> *>(prop->data);
81 return list->at(index);
84 QList<DataGuard> *list =
static_cast<QList<DataGuard> *>(prop->data);
87 static void data_replace(QQmlListProperty<QObject> *prop, qsizetype index, QObject *o) {
88 QList<DataGuard> *list =
static_cast<QList<DataGuard> *>(prop->data);
92 QList<DataGuard> *list =
static_cast<QList<DataGuard> *>(prop->data);
102 attached.insert(parent,
this);
107 attached.remove(parent());
120QQuickPackage::QQuickPackage(QObject *parent)
121 : QObject(*(
new QQuickPackagePrivate), parent)
125QQmlListProperty<QObject> QQuickPackage::data()
128 return QQmlListProperty<QObject>(
this, &d->dataList,
129 QQuickPackagePrivate::data_append,
130 QQuickPackagePrivate::data_count,
131 QQuickPackagePrivate::data_at,
132 QQuickPackagePrivate::data_clear,
133 QQuickPackagePrivate::data_replace,
134 QQuickPackagePrivate::data_removeLast);
137bool QQuickPackage::hasPart(
const QString &name)
140 for (
int ii = 0; ii < d->dataList.size(); ++ii) {
141 QObject *obj = d->dataList.at(ii);
142 QQuickPackageAttached *a = QQuickPackageAttached::attached.value(obj);
143 if (a && a->name() == name)
149QObject *QQuickPackage::part(
const QString &name)
152 if (name.isEmpty() && !d->dataList.isEmpty())
153 return d->dataList.at(0);
155 for (
int ii = 0; ii < d->dataList.size(); ++ii) {
156 QObject *obj = d->dataList.at(ii);
157 QQuickPackageAttached *a = QQuickPackageAttached::attached.value(obj);
158 if (a && a->name() == name)
162 if (name == QLatin1String(
"default") && !d->dataList.isEmpty())
163 return d->dataList.at(0);
168QQuickPackageAttached *QQuickPackage::qmlAttachedProperties(QObject *o)
170 return new QQuickPackageAttached(o);
177#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
Combined button and popup list for selecting options.
DataGuard(QObject *obj, QList< DataGuard > *l)
QList< DataGuard > * list