diff options
-rw-r--r-- | src/quicktemplates2/qquickswipedelegate.cpp | 13 | ||||
-rw-r--r-- | src/quicktemplates2/qquickswipedelegate_p.h | 1 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_swipedelegate.qml | 28 |
3 files changed, 35 insertions, 7 deletions
diff --git a/src/quicktemplates2/qquickswipedelegate.cpp b/src/quicktemplates2/qquickswipedelegate.cpp index a9f6ac08..a8ba2e80 100644 --- a/src/quicktemplates2/qquickswipedelegate.cpp +++ b/src/quicktemplates2/qquickswipedelegate.cpp @@ -520,6 +520,8 @@ void QQuickSwipe::setComplete(bool complete) d->complete = complete; emit completeChanged(); + if (d->complete) + emit completed(); } void QQuickSwipe::close() @@ -721,7 +723,7 @@ QQuickSwipeDelegate::QQuickSwipeDelegate(QQuickItem *parent) : \table \header - \li Property/Method + \li Name \li Description \row \li position @@ -784,6 +786,15 @@ QQuickSwipeDelegate::QQuickSwipeDelegate(QQuickItem *parent) : and \l {Control::}{background} will be triggered. This method was added in QtQuick.Controls 2.1. + \row + \li completed() + \li This signal is emitted when \c complete becomes \c true. + + It is useful for performing some action upon completion of a swipe. + For example, it can be used to remove the delegate from the list + that it is in. + + This signal was added in QtQuick.Controls 2.1. \endtable \sa {Control::}{contentItem}, {Control::}{background} diff --git a/src/quicktemplates2/qquickswipedelegate_p.h b/src/quicktemplates2/qquickswipedelegate_p.h index afd195ea..f94219cd 100644 --- a/src/quicktemplates2/qquickswipedelegate_p.h +++ b/src/quicktemplates2/qquickswipedelegate_p.h @@ -128,6 +128,7 @@ public: Q_SIGNALS: void positionChanged(); void completeChanged(); + Q_REVISION(1) void completed(); void leftChanged(); void behindChanged(); void rightChanged(); diff --git a/tests/auto/controls/data/tst_swipedelegate.qml b/tests/auto/controls/data/tst_swipedelegate.qml index 29dc9397..b034ca36 100644 --- a/tests/auto/controls/data/tst_swipedelegate.qml +++ b/tests/auto/controls/data/tst_swipedelegate.qml @@ -84,6 +84,12 @@ TestCase { } } + Component { + id: signalSpyComponent + + SignalSpy {} + } + function test_defaults() { var control = swipeDelegateComponent.createObject(testCase); verify(control); @@ -225,12 +231,17 @@ TestCase { var overDragDistance = dragDistance * 1.1; + var completedSpy = signalSpyComponent.createObject(control, { target: control.swipe, signalName: "completed" }); + verify(completedSpy); + verify(completedSpy.valid); + mouseSignalSequenceSpy.target = control; mouseSignalSequenceSpy.expectedSequence = [["pressedChanged", { "pressed": true }], "pressed"]; mousePress(control, control.width / 2, control.height / 2); verify(control.pressed); compare(control.swipe.position, 0.0); verify(!control.swipe.complete); + compare(completedSpy.count, 0); verify(mouseSignalSequenceSpy.success); verify(!control.swipe.leftItem); verify(!control.swipe.rightItem); @@ -240,6 +251,7 @@ TestCase { verify(control.pressed); compare(control.swipe.position, overDragDistance / control.width); verify(!control.swipe.complete); + compare(completedSpy.count, 0); verify(control.swipe.leftItem); verify(control.swipe.leftItem.visible); compare(control.swipe.leftItem.parent, control); @@ -251,6 +263,7 @@ TestCase { verify(control.pressed); compare(control.swipe.position, 0.0); verify(!control.swipe.complete); + compare(completedSpy.count, 0); verify(control.swipe.leftItem); verify(control.swipe.leftItem.visible); compare(control.swipe.leftItem.parent, control); @@ -263,6 +276,7 @@ TestCase { verify(control.pressed); compare(control.swipe.position, -overDragDistance / control.width); verify(!control.swipe.complete); + compare(completedSpy.count, 0); verify(control.swipe.leftItem); verify(!control.swipe.leftItem.visible); verify(control.swipe.rightItem); @@ -275,6 +289,7 @@ TestCase { verify(control.pressed); compare(control.swipe.position, 0.6); verify(!control.swipe.complete); + compare(completedSpy.count, 0); verify(control.swipe.leftItem); verify(control.swipe.leftItem.visible); verify(control.swipe.rightItem); @@ -285,6 +300,7 @@ TestCase { verify(!control.pressed); compare(control.swipe.position, 1.0); verify(control.swipe.complete); + compare(completedSpy.count, 1); verify(mouseSignalSequenceSpy.success); verify(control.swipe.leftItem); verify(control.swipe.leftItem.visible); @@ -300,11 +316,13 @@ TestCase { // complete should still be true, because we haven't moved yet, and hence // haven't started grabbing behind's mouse events. verify(control.swipe.complete); + compare(completedSpy.count, 1); verify(mouseSignalSequenceSpy.success); mouseMove(control, control.width / 2 - overDragDistance, control.height / 2); verify(control.pressed); verify(!control.swipe.complete); + compare(completedSpy.count, 1); compare(control.swipe.position, 1.0 - overDragDistance / control.width); mouseSignalSequenceSpy.expectedSequence = [["pressedChanged", { "pressed": false }], "released", "clicked"]; @@ -312,6 +330,7 @@ TestCase { verify(!control.pressed); compare(control.swipe.position, 1.0); verify(control.swipe.complete); + compare(completedSpy.count, 2); verify(mouseSignalSequenceSpy.success); tryCompare(control.contentItem, "x", control.width + control.leftPadding); @@ -321,11 +340,13 @@ TestCase { verify(control.pressed); compare(control.swipe.position, 1.0); verify(control.swipe.complete); + compare(completedSpy.count, 2); verify(mouseSignalSequenceSpy.success); mouseMove(control, control.width * -0.1, control.height / 2); verify(control.pressed); verify(!control.swipe.complete); + compare(completedSpy.count, 2); compare(control.swipe.position, 0.4); mouseSignalSequenceSpy.expectedSequence = [["pressedChanged", { "pressed": false }], "released", "clicked"]; @@ -333,6 +354,7 @@ TestCase { verify(!control.pressed); compare(control.swipe.position, 0.0); verify(!control.swipe.complete); + compare(completedSpy.count, 2); verify(mouseSignalSequenceSpy.success); tryCompare(control.contentItem, "x", control.leftPadding); @@ -426,12 +448,6 @@ TestCase { } } - Component { - id: signalSpyComponent - - SignalSpy {} - } - function test_eventsToLeftAndRight() { var control = swipeDelegateWithButtonComponent.createObject(testCase); verify(control); |