summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@nokia.com>2010-06-09 07:39:47 (GMT)
committerMarco Bubke <marco.bubke@nokia.com>2010-06-09 07:43:00 (GMT)
commit8c08c737837389f5ff2641219eb901ad217d3f24 (patch)
tree1ac71fe1f382d0dade05d97c3793dc373565c315 /src
parentc5de4176dac960d8f7c6d2d77b0d8bf3c7311da9 (diff)
downloadQt-8c08c737837389f5ff2641219eb901ad217d3f24.zip
Qt-8c08c737837389f5ff2641219eb901ad217d3f24.tar.gz
Qt-8c08c737837389f5ff2641219eb901ad217d3f24.tar.bz2
Add count, at and clear to flickableData
Reviewed-by: Aaron Kennedy
Diffstat (limited to 'src')
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable.cpp42
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable_p_p.h3
2 files changed, 44 insertions, 1 deletions
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<QObject>
o->setParent(prop->object);
}
+int QDeclarativeFlickablePrivate::data_count(QDeclarativeListProperty<QObject> *property)
+{
+ QDeclarativeItem *viewport = static_cast<QDeclarativeFlickablePrivate*>(property->data)->viewport;
+ return viewport->childItems().count() + viewport->children().count();
+}
+
+QObject *QDeclarativeFlickablePrivate::data_at(QDeclarativeListProperty<QObject> *property, int index)
+{
+ QDeclarativeItem *viewport = static_cast<QDeclarativeFlickablePrivate*>(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<QObject> *property)
+{
+ QDeclarativeItem *viewport = static_cast<QDeclarativeFlickablePrivate*>(property->data)->viewport;
+
+ const QList<QGraphicsItem*> graphicsItems = viewport->childItems();
+ for (int i = 0; i < graphicsItems.count(); i++)
+ viewport->scene()->removeItem(graphicsItems[i]);
+
+ const QList<QObject*> objects = viewport->children();
+ for (int i = 0; i < objects.count(); i++)
+ objects[i]->setParent(0);
+}
+
QDeclarativeListProperty<QObject> QDeclarativeFlickable::flickableData()
{
Q_D(QDeclarativeFlickable);
- return QDeclarativeListProperty<QObject>(this, (void *)d, QDeclarativeFlickablePrivate::data_append);
+ return QDeclarativeListProperty<QObject>(this, (void *)d, QDeclarativeFlickablePrivate::data_append,
+ QDeclarativeFlickablePrivate::data_count,
+ QDeclarativeFlickablePrivate::data_at,
+ QDeclarativeFlickablePrivate::data_clear);
}
QDeclarativeListProperty<QGraphicsObject> 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> *, QObject *);
+ static int data_count(QDeclarativeListProperty<QObject> *);
+ static QObject * data_at(QDeclarativeListProperty<QObject> *, int);
+ static void data_clear(QDeclarativeListProperty<QObject> *);
};
class QDeclarativeFlickableVisibleArea : public QObject