aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickflickable_p_p.h
diff options
context:
space:
mode:
authorBea Lam <bea.lam@nokia.com>2012-06-06 11:17:19 +1000
committerQt by Nokia <qt-info@nokia.com>2012-06-08 01:13:05 +0200
commit836e075ea016f960b0e983fc96f61466e064757b (patch)
treebfcc867c1a3478343a18a416255ed172c7fa9661 /src/quick/items/qquickflickable_p_p.h
parent9738c4b4765bb641f2f080e02ae6867b3e18d8a3 (diff)
rebound property for Flickable
This property specifies the transition to be used when the flickable snaps back to its bounds. Change-Id: I2bb9680dad219a4c7c911f0e4dda37ae739349c6 Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'src/quick/items/qquickflickable_p_p.h')
-rw-r--r--src/quick/items/qquickflickable_p_p.h26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/quick/items/qquickflickable_p_p.h b/src/quick/items/qquickflickable_p_p.h
index ab3070e5b1..64335c8240 100644
--- a/src/quick/items/qquickflickable_p_p.h
+++ b/src/quick/items/qquickflickable_p_p.h
@@ -63,6 +63,7 @@
#include <private/qquicktimeline_p_p.h>
#include <private/qquickanimation_p_p.h>
+#include <private/qquicktransitionmanager_p_p.h>
QT_BEGIN_NAMESPACE
@@ -70,6 +71,9 @@ QT_BEGIN_NAMESPACE
const qreal MinimumFlickVelocity = 75.0;
class QQuickFlickableVisibleArea;
+class QQuickTransition;
+class QQuickFlickableReboundTransition;
+
class Q_AUTOTEST_EXPORT QQuickFlickablePrivate : public QQuickItemPrivate, public QQuickItemChangeListener
{
Q_DECLARE_PUBLIC(QQuickFlickable)
@@ -95,14 +99,20 @@ public:
struct AxisData {
AxisData(QQuickFlickablePrivate *fp, void (QQuickFlickablePrivate::*func)(qreal))
- : move(fp, func), viewSize(-1), startMargin(0), endMargin(0)
+ : move(fp, func)
+ , transitionToBounds(0)
+ , viewSize(-1), startMargin(0), endMargin(0)
+ , transitionTo(0)
, continuousFlickVelocity(0)
, smoothVelocity(fp), atEnd(false), atBeginning(true)
+ , transitionToSet(false)
, fixingUp(false), inOvershoot(false), moving(false), flicking(false)
, dragging(false), extentsChanged(false)
, explicitValue(false), minExtentDirty(true), maxExtentDirty(true)
{}
+ ~AxisData();
+
void reset() {
velocityBuffer.clear();
dragStartOffset = 0;
@@ -116,10 +126,16 @@ public:
extentsChanged = true;
}
+ void resetTransitionTo() {
+ transitionTo = 0;
+ transitionToSet = false;
+ }
+
void addVelocitySample(qreal v, qreal maxVelocity);
void updateVelocity();
QQuickTimeLineValueProxy<QQuickFlickablePrivate> move;
+ QQuickFlickableReboundTransition *transitionToBounds;
qreal viewSize;
qreal pressPos;
qreal dragStartOffset;
@@ -129,11 +145,13 @@ public:
qreal flickTarget;
qreal startMargin;
qreal endMargin;
+ qreal transitionTo;
qreal continuousFlickVelocity;
QQuickFlickablePrivate::Velocity smoothVelocity;
QPODVector<qreal,10> velocityBuffer;
bool atEnd : 1;
bool atBeginning : 1;
+ bool transitionToSet : 1;
bool fixingUp : 1;
bool inOvershoot : 1;
bool moving : 1;
@@ -154,6 +172,9 @@ public:
void fixupX();
void fixupY();
virtual void fixup(AxisData &data, qreal minExtent, qreal maxExtent);
+ void adjustContentPos(AxisData &data, qreal toPos);
+ void resetTimeline(AxisData &data);
+ void clearTimeline();
void updateBeginningEnd();
@@ -171,6 +192,8 @@ public:
void draggingStarting();
void draggingEnding();
+ bool isViewMoving() const;
+
public:
QQuickItem *contentItem;
@@ -214,6 +237,7 @@ public:
QQuickFlickableVisibleArea *visibleArea;
QQuickFlickable::FlickableDirection flickableDirection;
QQuickFlickable::BoundsBehavior boundsBehavior;
+ QQuickTransition *rebound;
void handleMousePressEvent(QMouseEvent *);
void handleMouseMoveEvent(QMouseEvent *);