diff -r 000000000000 -r 1450b09d0cfd qstmgesturelib/qstmgenericsimplegesture.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qstmgesturelib/qstmgenericsimplegesture.cpp Tue May 04 12:39:35 2010 +0300 @@ -0,0 +1,120 @@ +/* +* 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 "qstmgenericsimplegesture.h" +#include "qstmfilelogger.h" +#include "qstmutils.h" + +using namespace qstmGesture ; +using qstmUiEventEngine::QStm_UiEventSpeedIf; + + +QStm_GenericSimpleGesture::QStm_GenericSimpleGesture( + QStm_GestureUid uid, const QPoint& loc, int type, const QStm_UiEventSpeedIf* speedIf) : + m_location(loc), m_uid(uid), m_type(type), m_details(0), m_speed(speedIf), m_target(0) +{ +} + +QPoint QStm_GenericSimpleGesture::getLocation() const +{ + return m_location ; +} + +int QStm_GenericSimpleGesture::getType() const +{ + return m_type ; +} + +void* QStm_GenericSimpleGesture::getDetails() const +{ + return m_details ; +} + +void QStm_GenericSimpleGesture::setName(const QString& name) +{ + m_name = name ; +} + +QString QStm_GenericSimpleGesture::getGestureName() +{ + return m_name ; +} + +QStm_DirectionalGesture::QStm_DirectionalGesture( + QStm_GestureUid uid, const QPoint& loc, const QPoint& prevLoc, + const QStm_UiEventSpeedIf* speedIf, bool logging) : + QStm_GenericSimpleGesture(uid, loc, 0, speedIf), m_loggingEnabled(logging) +{ + setVector(loc, prevLoc); +} + +void QStm_DirectionalGesture::setVector(const QPoint& last, const QPoint& previous) +{ + m_vector = QPoint(last.x()-previous.x(), previous.y()-last.y()) ; // x > 0 => east, y > 0 => north + if (m_loggingEnabled) { + LOGARG("CHoveringGesture: x: %d , %d prev: %d, %d", last.x(), last.y(), previous.x(), previous.y()) ; + } +} + +QStm_GestureDirection QStm_DirectionalGesture::getDirection() const +{ + QStm_GestureDirection dir = ENorth ; + int x = ABS(m_vector.x()) ; + int y = ABS(m_vector.x()) ; + + if (y <= x/2) { + if (m_vector.x() < 0) + dir = EWest ; + else + dir = EEast ; + } + else if (y > x/2 && y <= (x+x/2)) { + if (m_vector.x() < 0) { + if (m_vector.y() < 0 ) + dir = ESouthWest ; + else + dir = ENorthWest ; + } + else { + if (m_vector.y() < 0 ) + dir = ESouthEast ; + else + dir = ENorthEast ; + } + } + else if (y > x+x/2) { + if (m_vector.y() < 0) + dir = ESouth ; + else + dir = ENorth ; + } + + if (m_loggingEnabled) { + LOGARG("CHoveringGesture: x: %d y: %d direction: %d", m_vector.x(), m_vector.y(), dir) ; + } + + return dir ; +} + +QStm_TwoPointGesture::QStm_TwoPointGesture(QStm_GestureUid uid, const QPoint& loc, const QPoint& prevLoc) : + QStm_DirectionalGesture(uid, loc, prevLoc, NULL), + m_location2(prevLoc) +{ +} + +