--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/qstmgesturelib/qstmuievent.cpp Tue May 04 12:39:35 2010 +0300
@@ -0,0 +1,203 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <QtCore>
+#include "qstmfilelogger.h"
+#include "qstmstatemachine.h" // for qstmUiEventEngine::Distance(dx,dy)
+#include "qstmuievent.h"
+#include "qstmutils.h"
+
+using namespace qstmUiEventEngine ;
+
+static const char* const eventNames[] = { // for debugging purposes define the names of the UI events
+ "noEvent",
+ "ETouch",
+ "EHold",
+ "EMove",
+ "ERelease",
+ "ENull"
+} ;
+
+const char* qstmUiEventEngine::event_name(qstmUiEventEngine::QStm_UiEventCode code)
+{
+ return eventNames[code];
+}
+
+QStm_UiEvent::QStm_UiEvent(
+ QStm_UiEventCode code,
+ const QPoint& start, const QPoint& xy, const QPoint& previousXY,
+ bool timerExpired, void* target, long interval,
+ int index, QTime timestamp) :
+ m_code(code), m_start(start), m_XY(xy), m_previousXY(previousXY),
+ m_statetransition(interval), m_target(target), m_timerExpired(timerExpired),
+ m_index(index), m_previousEvent(NULL), m_timestamp(timestamp)
+{
+}
+
+
+
+QStm_UiEvent::~QStm_UiEvent()
+{
+ delete m_previousEvent ;
+ m_previousEvent = NULL ;
+}
+
+const QPoint& QStm_UiEvent::startPos() const
+{
+ return m_start ;
+}
+
+const QPoint& QStm_UiEvent::currentXY() const
+{
+ return m_XY ;
+}
+
+QStm_UiEventCode QStm_UiEvent::code()const
+{
+ return m_code ;
+}
+
+const QPoint& QStm_UiEvent::previousXY() const
+{
+ return m_previousXY ;
+}
+
+long QStm_UiEvent::stateTransition() const
+{
+ return m_statetransition ;
+}
+
+bool QStm_UiEvent::timerExpired() const
+{
+ return m_timerExpired ;
+}
+
+void* QStm_UiEvent::target() const
+{
+ return m_target ;
+}
+
+int QStm_UiEvent::index() const
+{
+ return m_index ;
+}
+
+void QStm_UiEvent::setPrevious(QStm_UiEvent* event)
+{
+ m_previousEvent = event ;
+}
+
+QStm_UiEventIf* QStm_UiEvent::previousEvent() const
+{
+ return m_previousEvent ;
+}
+
+int QStm_UiEvent::countOfEvents() const
+{
+ int count = 1 ;
+ for(QStm_UiEvent* prev = m_previousEvent; prev; prev = prev->m_previousEvent)
+ {
+ ++count;
+ }
+ return count ;
+}
+
+QTime QStm_UiEvent::timestamp() const
+{
+ return m_timestamp ;
+}
+
+float QStm_UiEvent::speed() const /*__SOFTFP */
+{
+ int dist = QStm_Utils::distance(m_previousXY, m_XY);
+ // now calculate speed
+ int elapsed = m_statetransition ; // use ms as time unit
+ float speed = float(dist)/(elapsed ? elapsed : 1) ;
+ return speed ;
+}
+
+QPointF QStm_UiEvent::speedVec() const
+{
+ QPointF diff(m_XY - m_previousXY);
+
+ diff = diff / (m_statetransition ? m_statetransition : 1) ;
+
+ return diff;
+}
+
+
+void QStm_UiEvent::logSpeed() const
+{
+ int dist = QStm_Utils::distance(m_previousXY, m_XY);
+ // now calculate speed
+ int elapsed = m_statetransition ; // use ms as time unit
+ double speed = double(dist)/(elapsed ? elapsed : 1) ;
+
+ LOGARG("event: %s: (%d,%d), prev: (%d,%d), time %d dist %d speed %f", event_name(code()), m_XY.x(), m_XY.y(),
+ m_previousXY.x(), m_previousXY.y(), elapsed, dist, speed);
+}
+
+
+
+QEvent::Type QStm_UiEvent::mapToMouseEventType()
+{
+ QEvent::Type type = QEvent::None;
+ switch (m_code) {
+ case ETouch:
+ case EHold:
+ {
+ type = QEvent::MouseButtonPress;
+ break;
+ }
+ case EMove:
+ {
+ type = QEvent::MouseMove;
+ break;
+ }
+ case ERelease:
+ {
+ type = QEvent::MouseButtonRelease;
+ break;
+ }
+ }
+ return type;
+}
+
+QEvent::Type QStm_UiEvent::mapToTouchEventType()
+{
+ QEvent::Type type = QEvent::None;
+ switch (m_code) {
+ case ETouch:
+ case EHold:
+ {
+ type = QEvent::TouchBegin;
+ break;
+ }
+ case EMove:
+ {
+ type = QEvent::TouchUpdate;
+ break;
+ }
+ case ERelease:
+ {
+ type = QEvent::TouchEnd;
+ break;
+ }
+ }
+ return type;
+}
+