From 8c08c737837389f5ff2641219eb901ad217d3f24 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Wed, 9 Jun 2010 09:39:47 +0200 Subject: Add count, at and clear to flickableData Reviewed-by: Aaron Kennedy --- .../graphicsitems/qdeclarativeflickable.cpp | 42 +++++++++++++++++++++- .../graphicsitems/qdeclarativeflickable_p_p.h | 3 ++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp index 10dc0f8..c487715 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp +++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp @@ -1015,10 +1015,50 @@ void QDeclarativeFlickablePrivate::data_append(QDeclarativeListProperty o->setParent(prop->object); } +int QDeclarativeFlickablePrivate::data_count(QDeclarativeListProperty *property) +{ + QDeclarativeItem *viewport = static_cast(property->data)->viewport; + return viewport->childItems().count() + viewport->children().count(); +} + +QObject *QDeclarativeFlickablePrivate::data_at(QDeclarativeListProperty *property, int index) +{ + QDeclarativeItem *viewport = static_cast(property->data)->viewport; + + int childItemCount = viewport->childItems().count(); + + if (index < 0) + return 0; + + if (index < childItemCount) { + return viewport->childItems().at(index)->toGraphicsObject(); + } else { + return viewport->children().at(index - childItemCount); + } + + return 0; +} + +void QDeclarativeFlickablePrivate::data_clear(QDeclarativeListProperty *property) +{ + QDeclarativeItem *viewport = static_cast(property->data)->viewport; + + const QList graphicsItems = viewport->childItems(); + for (int i = 0; i < graphicsItems.count(); i++) + viewport->scene()->removeItem(graphicsItems[i]); + + const QList objects = viewport->children(); + for (int i = 0; i < objects.count(); i++) + objects[i]->setParent(0); +} + QDeclarativeListProperty QDeclarativeFlickable::flickableData() { Q_D(QDeclarativeFlickable); - return QDeclarativeListProperty(this, (void *)d, QDeclarativeFlickablePrivate::data_append); + return QDeclarativeListProperty(this, (void *)d, QDeclarativeFlickablePrivate::data_append, + QDeclarativeFlickablePrivate::data_count, + QDeclarativeFlickablePrivate::data_at, + QDeclarativeFlickablePrivate::data_clear); } QDeclarativeListProperty QDeclarativeFlickable::flickableChildren() diff --git a/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h b/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h index 66d2678..0b80b1f 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h +++ b/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h @@ -171,6 +171,9 @@ public: // flickableData property static void data_append(QDeclarativeListProperty *, QObject *); + static int data_count(QDeclarativeListProperty *); + static QObject * data_at(QDeclarativeListProperty *, int); + static void data_clear(QDeclarativeListProperty *); }; class QDeclarativeFlickableVisibleArea : public QObject -- cgit v0.12 From c80b6bbb0d1e02c9ba51ca0a6da47df22b0afff8 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 10 Jun 2010 13:03:23 +0200 Subject: Export QDeclarativeAbstractAnimation and QDeclarativeScriptAction This exports are needed by the Qml Designer to deactivate the animations. Reviewed-by: Kai Koehne --- src/declarative/util/qdeclarativeanimation_p.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/declarative/util/qdeclarativeanimation_p.h b/src/declarative/util/qdeclarativeanimation_p.h index e7cd8a8..fd9c050 100644 --- a/src/declarative/util/qdeclarativeanimation_p.h +++ b/src/declarative/util/qdeclarativeanimation_p.h @@ -63,7 +63,7 @@ QT_MODULE(Declarative) class QDeclarativeAbstractAnimationPrivate; class QDeclarativeAnimationGroup; -class Q_AUTOTEST_EXPORT QDeclarativeAbstractAnimation : public QObject, public QDeclarativePropertyValueSource, public QDeclarativeParserStatus +class Q_DECLARATIVE_EXPORT QDeclarativeAbstractAnimation : public QObject, public QDeclarativePropertyValueSource, public QDeclarativeParserStatus { Q_OBJECT Q_DECLARE_PRIVATE(QDeclarativeAbstractAnimation) @@ -162,7 +162,7 @@ protected: }; class QDeclarativeScriptActionPrivate; -class QDeclarativeScriptAction : public QDeclarativeAbstractAnimation +class Q_DECLARATIVE_EXPORT QDeclarativeScriptAction : public QDeclarativeAbstractAnimation { Q_OBJECT Q_DECLARE_PRIVATE(QDeclarativeScriptAction) -- cgit v0.12