From f5eea42b7c3ebe31fcd22e0bf9e397f3261ede7a Mon Sep 17 00:00:00 2001 From: Michal Guminiak Date: Fri, 7 Jan 2011 10:30:55 +0100 Subject: Fixes: NB#216528 - MSwipeRecognizer should use QElapsedTimer instead of QTime RevBy: to be done Details: changes the swipe recognizer so that it uses QElapsedTimer instead of QTime. Also updates unittest for it. --- src/corelib/events/mswipegesture.cpp | 2 +- src/corelib/events/mswipegesture_p.h | 3 ++- src/corelib/events/mswiperecognizer.cpp | 8 ++++---- tests/ut_mswiperecognizer/ut_mswiperecognizer.cpp | 10 +++++++++- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/corelib/events/mswipegesture.cpp b/src/corelib/events/mswipegesture.cpp index b9d0711e..8882d30e 100644 --- a/src/corelib/events/mswipegesture.cpp +++ b/src/corelib/events/mswipegesture.cpp @@ -24,7 +24,7 @@ MSwipeGesture::MSwipeGesture(QObject* parent) : recognizedAngle(0), prevDistance(0), startPosition(QPointF()), - time(QTime()) + timer(QElapsedTimer()) { } diff --git a/src/corelib/events/mswipegesture_p.h b/src/corelib/events/mswipegesture_p.h index 14636e01..300f4862 100644 --- a/src/corelib/events/mswipegesture_p.h +++ b/src/corelib/events/mswipegesture_p.h @@ -21,6 +21,7 @@ #define MSWIPEGESTURE_P_H #include +#include //! \internal @@ -66,7 +67,7 @@ private: /*! Time of the initial mousepress used to check if the swipe gesture is fast enough. */ - QTime time; + QElapsedTimer timer; friend class MSwipeRecognizer; friend class MSwipeRecognizerPrivate; diff --git a/src/corelib/events/mswiperecognizer.cpp b/src/corelib/events/mswiperecognizer.cpp index ab69cd10..c487d1e4 100644 --- a/src/corelib/events/mswiperecognizer.cpp +++ b/src/corelib/events/mswiperecognizer.cpp @@ -26,7 +26,7 @@ #include "mtheme.h" #include -#include +#include #include #include #include @@ -69,7 +69,7 @@ void MSwipeRecognizerPrivate::snapToRightAngle(MSwipeGesture *swipeGesture) QGestureRecognizer::Result MSwipeRecognizerPrivate::startRecognition(MSwipeGesture *swipeGesture, const QMouseEvent *mouseEvent) { - swipeGesture->time = QTime::currentTime(); + swipeGesture->timer.start(); swipeGesture->startPosition = mouseEvent->globalPos(); swipeGesture->setHotSpot(mouseEvent->globalPos()); @@ -83,7 +83,7 @@ QGestureRecognizer::Result MSwipeRecognizerPrivate::updateRecognition(MSwipeGest //Swipe angle is equal to the angle of a line between starting position and current position. swipeGesture->setSwipeAngle(QLineF(swipeGesture->startPosition, mouseEvent->globalPos()).angle()); - int elapsedTime = swipeGesture->time.msecsTo(QTime::currentTime()); + int elapsedTime = swipeGesture->timer.elapsed(); if (swipeGesture->state() != Qt::NoGesture) { //The gesture has already been recognized, check if the user didn't change direction. @@ -189,7 +189,7 @@ void MSwipeRecognizer::reset(QGesture* state) swipeGesture->recognizedAngle = 0; swipeGesture->prevDistance = 0; swipeGesture->startPosition = QPointF(); - swipeGesture->time = QTime(); + swipeGesture->timer.invalidate(); QGestureRecognizer::reset(swipeGesture); } diff --git a/tests/ut_mswiperecognizer/ut_mswiperecognizer.cpp b/tests/ut_mswiperecognizer/ut_mswiperecognizer.cpp index 65ec460f..af04de30 100644 --- a/tests/ut_mswiperecognizer/ut_mswiperecognizer.cpp +++ b/tests/ut_mswiperecognizer/ut_mswiperecognizer.cpp @@ -127,6 +127,12 @@ void Ut_MSwipeRecognizer::testFastTap() QCOMPARE( currentState, QGestureRecognizer::CancelGesture); } +qint64 elapsedTime = 0; +qint64 QElapsedTimer::elapsed() const +{ + return elapsedTime; +} + void Ut_MSwipeRecognizer::testTimedout() { QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(0,0), QPoint(0,0), Qt::LeftButton, Qt::LeftButton, 0); @@ -136,11 +142,13 @@ void Ut_MSwipeRecognizer::testTimedout() currentState = recognizer->recognize(swipeGesture, 0, &pressEvent); QCOMPARE( currentState, QGestureRecognizer::MayBeGesture); - swipeGesture->time = QTime().currentTime().addSecs(-3); + elapsedTime = 3000; currentState = recognizer->recognize(swipeGesture, 0, &moveEvent); QCOMPARE( currentState, QGestureRecognizer::CancelGesture); + elapsedTime = 0; + } void Ut_MSwipeRecognizer::testZigzagged() -- cgit v1.2.3