diff options
Diffstat (limited to 'src/declarative/graphicsitems/qmlgraphicsitem.cpp')
-rw-r--r-- | src/declarative/graphicsitems/qmlgraphicsitem.cpp | 188 |
1 files changed, 65 insertions, 123 deletions
diff --git a/src/declarative/graphicsitems/qmlgraphicsitem.cpp b/src/declarative/graphicsitems/qmlgraphicsitem.cpp index 22beb12..2e68264 100644 --- a/src/declarative/graphicsitems/qmlgraphicsitem.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsitem.cpp @@ -892,7 +892,6 @@ void QmlGraphicsKeyNavigationAttached::keyReleased(QKeyEvent *event) parameter provides information about the event. */ - const QmlGraphicsKeysAttached::SigMap QmlGraphicsKeysAttached::sigMap[] = { { Qt::Key_Left, "leftPressed" }, { Qt::Key_Right, "rightPressed" }, @@ -1420,154 +1419,95 @@ QmlGraphicsAnchors *QmlGraphicsItem::anchors() return d->anchors(); } -void QmlGraphicsItemPrivate::data_removeAt(int) -{ - // ### -} - -int QmlGraphicsItemPrivate::data_count() const +void QmlGraphicsItemPrivate::data_append(QmlListProperty<QObject> *prop, QObject *o) { - // ### - return 0; -} - -void QmlGraphicsItemPrivate::data_append(QObject *o) -{ - Q_Q(QmlGraphicsItem); QmlGraphicsItem *i = qobject_cast<QmlGraphicsItem *>(o); - if (i) - q->fxChildren()->append(i); + if (i) + i->setParentItem(static_cast<QmlGraphicsItem *>(prop->object)); else - resources_append(o); -} - -void QmlGraphicsItemPrivate::data_insert(int, QObject *) -{ - // ### -} - -QObject *QmlGraphicsItemPrivate::data_at(int) const -{ - // ### - return 0; + o->setParent(static_cast<QmlGraphicsItem *>(prop->object)); } -void QmlGraphicsItemPrivate::data_clear() +QObject *QmlGraphicsItemPrivate::resources_at(QmlListProperty<QObject> *prop, int index) { - // ### -} - -void QmlGraphicsItemPrivate::resources_removeAt(int) -{ - // ### -} - -int QmlGraphicsItemPrivate::resources_count() const -{ - Q_Q(const QmlGraphicsItem); - return q->children().count(); -} - -void QmlGraphicsItemPrivate::resources_append(QObject *o) -{ - Q_Q(QmlGraphicsItem); - o->setParent(q); -} - -void QmlGraphicsItemPrivate::resources_insert(int, QObject *) -{ - // ### -} - -QObject *QmlGraphicsItemPrivate::resources_at(int idx) const -{ - Q_Q(const QmlGraphicsItem); - QObjectList children = q->children(); - if (idx < children.count()) - return children.at(idx); + QObjectList children = prop->object->children(); + if (index < children.count()) + return children.at(index); else return 0; } -void QmlGraphicsItemPrivate::resources_clear() +void QmlGraphicsItemPrivate::resources_append(QmlListProperty<QObject> *prop, QObject *o) { - // ### + o->setParent(prop->object); } -void QmlGraphicsItemPrivate::children_removeAt(int) +int QmlGraphicsItemPrivate::resources_count(QmlListProperty<QObject> *prop) { - // ### + return prop->object->children().count(); } -int QmlGraphicsItemPrivate::children_count() const +QmlGraphicsItem *QmlGraphicsItemPrivate::children_at(QmlListProperty<QmlGraphicsItem> *prop, int index) { - Q_Q(const QmlGraphicsItem); - return q->childItems().count(); -} + QList<QGraphicsItem *> children = static_cast<QmlGraphicsItem*>(prop->object)->childItems(); -void QmlGraphicsItemPrivate::children_append(QmlGraphicsItem *i) -{ - Q_Q(QmlGraphicsItem); - i->setParentItem(q); -} - -void QmlGraphicsItemPrivate::children_insert(int, QmlGraphicsItem *) -{ - // ### -} - -QmlGraphicsItem *QmlGraphicsItemPrivate::children_at(int idx) const -{ - Q_Q(const QmlGraphicsItem); - QList<QGraphicsItem *> children = q->childItems(); - if (idx < children.count()) - return qobject_cast<QmlGraphicsItem *>(children.at(idx)); + if (index < children.count()) + return qobject_cast<QmlGraphicsItem *>(children.at(index)); else return 0; } -void QmlGraphicsItemPrivate::children_clear() +void QmlGraphicsItemPrivate::children_append(QmlListProperty<QmlGraphicsItem> *prop, QmlGraphicsItem *i) { - // ### -} - - -void QmlGraphicsItemPrivate::transform_removeAt(int i) -{ - if (!transformData) - return; - transformData->graphicsTransforms.removeAt(i); - dirtySceneTransform = 1; + if (i) + i->setParentItem(static_cast<QmlGraphicsItem*>(prop->object)); } -int QmlGraphicsItemPrivate::transform_count() const +int QmlGraphicsItemPrivate::children_count(QmlListProperty<QmlGraphicsItem> *prop) { - return transformData ? transformData->graphicsTransforms.size() : 0; + return static_cast<QmlGraphicsItem*>(prop->object)->childItems().count(); } -void QmlGraphicsItemPrivate::transform_append(QGraphicsTransform *item) +int QmlGraphicsItemPrivate::transform_count(QmlListProperty<QGraphicsTransform> *list) { - appendGraphicsTransform(item); + QGraphicsObject *object = qobject_cast<QGraphicsObject *>(list->object); + if (object) { + QGraphicsItemPrivate *d = QGraphicsItemPrivate::get(object); + return d->transformData ? d->transformData->graphicsTransforms.size() : 0; + } else { + return 0; + } } -void QmlGraphicsItemPrivate::transform_insert(int, QGraphicsTransform *) +void QmlGraphicsItemPrivate::transform_append(QmlListProperty<QGraphicsTransform> *list, QGraphicsTransform *item) { - // ### + QGraphicsObject *object = qobject_cast<QGraphicsObject *>(list->object); + if (object) + QGraphicsItemPrivate::get(object)->appendGraphicsTransform(item); } -QGraphicsTransform *QmlGraphicsItemPrivate::transform_at(int idx) const +QGraphicsTransform *QmlGraphicsItemPrivate::transform_at(QmlListProperty<QGraphicsTransform> *list, int idx) { - if (!transformData) + QGraphicsObject *object = qobject_cast<QGraphicsObject *>(list->object); + if (object) { + QGraphicsItemPrivate *d = QGraphicsItemPrivate::get(object); + if (!d->transformData) + return 0; + return d->transformData->graphicsTransforms.at(idx); + } else { return 0; - return transformData->graphicsTransforms.at(idx); + } } -void QmlGraphicsItemPrivate::transform_clear() +void QmlGraphicsItemPrivate::transform_clear(QmlListProperty<QGraphicsTransform> *list) { - if (!transformData) - return; - Q_Q(QmlGraphicsItem); - q->setTransformations(QList<QGraphicsTransform *>()); + QGraphicsObject *object = qobject_cast<QGraphicsObject *>(list->object); + if (object) { + QGraphicsItemPrivate *d = QGraphicsItemPrivate::get(object); + if (!d->transformData) + return; + object->setTransformations(QList<QGraphicsTransform *>()); + } } /*! @@ -1610,10 +1550,9 @@ void QmlGraphicsItemPrivate::transform_clear() */ /*! \internal */ -QmlList<QObject *> *QmlGraphicsItem::data() +QmlListProperty<QObject> QmlGraphicsItem::data() { - Q_D(QmlGraphicsItem); - return &d->data; + return QmlListProperty<QObject>(this, 0, QmlGraphicsItemPrivate::data_append); } /*! @@ -2215,17 +2154,19 @@ void QmlGraphicsItem::focusChanged(bool flag) } /*! \internal */ -QmlList<QmlGraphicsItem *> *QmlGraphicsItem::fxChildren() +QmlListProperty<QmlGraphicsItem> QmlGraphicsItem::fxChildren() { - Q_D(QmlGraphicsItem); - return &(d->children); + return QmlListProperty<QmlGraphicsItem>(this, 0, QmlGraphicsItemPrivate::children_append, + QmlGraphicsItemPrivate::children_count, + QmlGraphicsItemPrivate::children_at); } /*! \internal */ -QmlList<QObject *> *QmlGraphicsItem::resources() +QmlListProperty<QObject> QmlGraphicsItem::resources() { - Q_D(QmlGraphicsItem); - return &(d->resources); + return QmlListProperty<QObject>(this, 0, QmlGraphicsItemPrivate::resources_append, + QmlGraphicsItemPrivate::resources_count, + QmlGraphicsItemPrivate::resources_at); } /*! @@ -2250,7 +2191,7 @@ QmlList<QObject *> *QmlGraphicsItem::resources() \internal */ /*! \internal */ -QmlList<QmlState *>* QmlGraphicsItem::states() +QmlListProperty<QmlState> QmlGraphicsItem::states() { Q_D(QmlGraphicsItem); return d->states()->statesProperty(); @@ -2279,7 +2220,7 @@ QmlList<QmlState *>* QmlGraphicsItem::states() */ /*! \internal */ -QmlList<QmlTransition *>* QmlGraphicsItem::transitions() +QmlListProperty<QmlTransition> QmlGraphicsItem::transitions() { Q_D(QmlGraphicsItem); return d->states()->transitionsProperty(); @@ -2387,10 +2328,11 @@ void QmlGraphicsItem::setState(const QString &state) */ /*! \internal */ -QmlList<QGraphicsTransform *>* QmlGraphicsItem::transform() +QmlListProperty<QGraphicsTransform> QmlGraphicsItem::transform() { Q_D(QmlGraphicsItem); - return &(d->transform); + return QmlListProperty<QGraphicsTransform>(this, 0, d->transform_append, d->transform_count, + d->transform_at, d->transform_clear); } /*! |