diff options
author | Bea Lam <bea.lam@nokia.com> | 2012-06-06 11:17:19 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-08 01:13:05 +0200 |
commit | 836e075ea016f960b0e983fc96f61466e064757b (patch) | |
tree | bfcc867c1a3478343a18a416255ed172c7fa9661 /src/quick/items/qquickflickable_p_p.h | |
parent | 9738c4b4765bb641f2f080e02ae6867b3e18d8a3 (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.h | 26 |
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 *); |