Revert "Remove properties related to highlight speed"
authorBea Lam <bea.lam@nokia.com>
Mon, 25 Jun 2012 01:30:01 +0000 (11:30 +1000)
committerQt by Nokia <qt-info@nokia.com>
Mon, 25 Jun 2012 06:57:36 +0000 (08:57 +0200)
This reverts commit 18fb5506d524dbe380d5bf636c74c93fb85cbc31.

Without these properties there's no way to set a constant
movement speed.

Change-Id: I49cd648846f801eb479ecce8cde09ff49ea11736
Reviewed-by: Martin Jones <martin.jones@nokia.com>
examples/demos/rssnews/rssnews.qml
src/quick/items/qquicklistview.cpp
src/quick/items/qquicklistview_p.h
tests/auto/quick/qquicklistview/data/displaylist.qml
tests/auto/quick/qquicklistview/data/flickBeyondBoundsBug.qml
tests/auto/quick/qquicklistview/data/listview-initCurrent.qml
tests/auto/quick/qquicklistview/data/listview-noCurrent.qml
tests/auto/quick/qquicklistview/data/listviewtest-package.qml
tests/auto/quick/qquicklistview/data/listviewtest.qml
tests/auto/quick/qquicklistview/tst_qquicklistview.cpp

index 706eac2..d26b94b 100644 (file)
@@ -75,7 +75,7 @@ Rectangle {
                 footer: quitButtonDelegate
                 delegate: CategoryDelegate {}
                 highlight: Rectangle { color: "steelblue" }
-                highlightMoveDuration: 50
+                highlightMoveSpeed: 9999999
             }
             ScrollBar {
                 scrollArea: categories; height: categories.height; width: 8
index d42d1cb..018cb86 100644 (file)
@@ -143,6 +143,8 @@ public:
 
     QSmoothedAnimation *highlightPosAnimator;
     QSmoothedAnimation *highlightSizeAnimator;
+    qreal highlightMoveSpeed;
+    qreal highlightResizeSpeed;
     int highlightResizeDuration;
 
     QQuickViewSection *sectionCriteria;
@@ -166,7 +168,7 @@ public:
         , averageSize(100.0), spacing(0.0)
         , snapMode(QQuickListView::NoSnap)
         , highlightPosAnimator(0), highlightSizeAnimator(0)
-        , highlightResizeDuration(250)
+        , highlightMoveSpeed(400), highlightResizeSpeed(400), highlightResizeDuration(-1)
         , sectionCriteria(0), currentSectionItem(0), nextSectionItem(0)
         , overshootDist(0.0), correctFlick(false), inFlickCorrection(false)
     {}
@@ -873,10 +875,12 @@ void QQuickListViewPrivate::createHighlight()
             const QLatin1String posProp(orient == QQuickListView::Vertical ? "y" : "x");
             highlightPosAnimator = new QSmoothedAnimation;
             highlightPosAnimator->target = QQmlProperty(item, posProp);
+            highlightPosAnimator->velocity = highlightMoveSpeed;
             highlightPosAnimator->userDuration = highlightMoveDuration;
 
             const QLatin1String sizeProp(orient == QQuickListView::Vertical ? "height" : "width");
             highlightSizeAnimator = new QSmoothedAnimation;
+            highlightSizeAnimator->velocity = highlightResizeSpeed;
             highlightSizeAnimator->userDuration = highlightResizeDuration;
             highlightSizeAnimator->target = QQmlProperty(item, sizeProp);
 
@@ -1901,7 +1905,7 @@ QQuickListView::~QQuickListView()
     is scrolled.  This is because the view moves to maintain the
     highlight within the preferred highlight range (or visible viewport).
 
-    \sa highlight
+    \sa highlight, highlightMoveSpeed
 */
 //###Possibly rename these properties, since they are very useful even without a highlight?
 /*!
@@ -2190,20 +2194,41 @@ QString QQuickListView::currentSection() const
 }
 
 /*!
+    \qmlproperty real QtQuick2::ListView::highlightMoveSpeed
     \qmlproperty int QtQuick2::ListView::highlightMoveDuration
+    \qmlproperty real QtQuick2::ListView::highlightResizeSpeed
     \qmlproperty int QtQuick2::ListView::highlightResizeDuration
 
-    These properties hold the move and resize animation duration of
-    the highlight delegate.
+    These properties hold the move and resize animation speed of the highlight delegate.
 
     \l highlightFollowsCurrentItem must be true for these properties
     to have effect.
 
-    The default value for highlightMoveDuration is 150ms and the
-    default value for highlightResizeDuration is 250ms.
+    The default value for the speed properties is 400 pixels/second.
+    The default value for the duration properties is -1, i.e. the
+    highlight will take as much time as necessary to move at the set speed.
+
+    These properties have the same characteristics as a SmoothedAnimation.
 
     \sa highlightFollowsCurrentItem
 */
+qreal QQuickListView::highlightMoveSpeed() const
+{
+    Q_D(const QQuickListView);
+    return d->highlightMoveSpeed;
+}
+
+void QQuickListView::setHighlightMoveSpeed(qreal speed)
+{
+    Q_D(QQuickListView);
+    if (d->highlightMoveSpeed != speed) {
+        d->highlightMoveSpeed = speed;
+        if (d->highlightPosAnimator)
+            d->highlightPosAnimator->velocity = d->highlightMoveSpeed;
+        emit highlightMoveSpeedChanged();
+    }
+}
+
 void QQuickListView::setHighlightMoveDuration(int duration)
 {
     Q_D(QQuickListView);
@@ -2214,6 +2239,23 @@ void QQuickListView::setHighlightMoveDuration(int duration)
     }
 }
 
+qreal QQuickListView::highlightResizeSpeed() const
+{
+    Q_D(const QQuickListView);
+    return d->highlightResizeSpeed;
+}
+
+void QQuickListView::setHighlightResizeSpeed(qreal speed)
+{
+    Q_D(QQuickListView);
+    if (d->highlightResizeSpeed != speed) {
+        d->highlightResizeSpeed = speed;
+        if (d->highlightSizeAnimator)
+            d->highlightSizeAnimator->velocity = d->highlightResizeSpeed;
+        emit highlightResizeSpeedChanged();
+    }
+}
+
 int QQuickListView::highlightResizeDuration() const
 {
     Q_D(const QQuickListView);
index 6bdd4cb..acedbdc 100644 (file)
@@ -102,6 +102,10 @@ class Q_AUTOTEST_EXPORT QQuickListView : public QQuickItemView
     Q_OBJECT
     Q_DECLARE_PRIVATE(QQuickListView)
 
+    // XXX deprecate these two properties (only duration should be necessary)
+    Q_PROPERTY(qreal highlightMoveSpeed READ highlightMoveSpeed WRITE setHighlightMoveSpeed NOTIFY highlightMoveSpeedChanged)
+    Q_PROPERTY(qreal highlightResizeSpeed READ highlightResizeSpeed WRITE setHighlightResizeSpeed NOTIFY highlightResizeSpeedChanged)
+
     Q_PROPERTY(int highlightResizeDuration READ highlightResizeDuration WRITE setHighlightResizeDuration NOTIFY highlightResizeDurationChanged)
 
     Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing NOTIFY spacingChanged)
@@ -132,6 +136,12 @@ public:
 
     virtual void setHighlightFollowsCurrentItem(bool);
 
+    qreal highlightMoveSpeed() const;
+    void setHighlightMoveSpeed(qreal);
+
+    qreal highlightResizeSpeed() const;
+    void setHighlightResizeSpeed(qreal);
+
     int highlightResizeDuration() const;
     void setHighlightResizeDuration(int);
 
@@ -151,6 +161,8 @@ Q_SIGNALS:
     void spacingChanged();
     void orientationChanged();
     void currentSectionChanged();
+    void highlightMoveSpeedChanged();
+    void highlightResizeSpeedChanged();
     void highlightResizeDurationChanged();
     void snapModeChanged();
 
index 6ac56f8..4e8fd32 100644 (file)
@@ -44,5 +44,7 @@ Rectangle {
         model: testModel
         delegate: myDelegate
         highlight: myHighlight
+        highlightMoveSpeed: 1000
+        highlightResizeSpeed: 1000
     }
 }
index 17f787c..0a1b1a1 100644 (file)
@@ -35,6 +35,8 @@ Rectangle {
         height: 320
         model: 2
         delegate: myDelegate
+        highlightMoveSpeed: 1000
+        highlightResizeSpeed: 1000
         cacheBuffer: 400
     }
     Text { anchors.bottom: parent.bottom; text: list.contentY }
index 1f6cccd..c4f1860 100644 (file)
@@ -56,6 +56,7 @@ Rectangle {
         height: 320
         keyNavigationWraps: testWrap
         delegate: myDelegate
+        highlightMoveSpeed: 1000
         model: testModel
         header: root.showHeader ? headerFooter : null
         footer: root.showFooter ? headerFooter : null
index 9aac506..cb90300 100644 (file)
@@ -45,6 +45,7 @@ Rectangle {
         height: 320
         cacheBuffer: 0
         delegate: myDelegate
+        highlightMoveSpeed: 1000
         model: testModel
     }
 }
index 87179d5..54d4dab 100644 (file)
@@ -136,6 +136,8 @@ Rectangle {
         height: 320
         model: visualModel.parts.package
         highlight: testObject.invalidHighlight ? invalidHl : myHighlight
+        highlightMoveSpeed: 1000
+        highlightResizeSpeed: 1000
         cacheBuffer: testObject.cacheBuffer
         header: root.showHeader ? headerFooter : null
         footer: root.showFooter ? headerFooter : null
index 29f9b92..47b341c 100644 (file)
@@ -124,6 +124,8 @@ Rectangle {
         model: testModel
         delegate: testObject.animate ? animatedDelegate : myDelegate
         highlight: testObject.invalidHighlight ? invalidHl : myHighlight
+        highlightMoveSpeed: 1000
+        highlightResizeSpeed: 1000
         cacheBuffer: testObject.cacheBuffer
         header: root.showHeader ? headerFooter : null
         footer: root.showFooter ? headerFooter : null
index 5233b3d..f177263 100644 (file)
@@ -407,6 +407,9 @@ void tst_QQuickListView::items(const QUrl &source, bool forceLayout)
     int itemCount = findItems<QQuickItem>(contentItem, "wrapper").count();
     QTRY_VERIFY(itemCount == 0);
 
+    QTRY_COMPARE(listview->highlightResizeSpeed(), 1000.0);
+    QTRY_COMPARE(listview->highlightMoveSpeed(), 1000.0);
+
     delete canvas;
     delete testObject;
 }