diff -r 6aeb7a756187 -r 3c88a81ff781 qstmgesturelib/qstmgestureapi.cpp --- a/qstmgesturelib/qstmgestureapi.cpp Thu Sep 23 15:32:11 2010 -0400 +++ b/qstmgesturelib/qstmgestureapi.cpp Fri Oct 15 17:30:59 2010 -0400 @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -57,7 +58,7 @@ } -QStm_GestureEngineApi::QStm_GestureEngineApi() +QStm_GestureEngineApi::QStm_GestureEngineApi() : m_gestureEngine(0), m_statemachine(0), m_config(0) { init(); } @@ -68,7 +69,7 @@ m_gestureEngine = new QStm_GestureEngine(); m_statemachine = new QStm_StateMachine(); m_statemachine->addUiEventObserver(m_gestureEngine); - m_config = new QStm_GestureParameters(); + //m_config = new QStm_GestureParameters(); } QStm_GestureEngineApi::~QStm_GestureEngineApi() @@ -79,7 +80,7 @@ qDeleteAll(m_contexts.begin(), m_contexts.end()); m_contexts.clear(); m_ctxtStack.clear(); - delete m_config; + //delete m_config; delete m_gestureEngine; delete m_statemachine; } @@ -199,6 +200,8 @@ int moveToleranceInMm = conf.param(qstmGesture::EMoveTolerance); m_statemachine->setMoveTolerance(moveToleranceInMm); + qreal axisLock = conf.param(qstmGesture::EAxisLockThreshold) /100.f; + QWidget* gestureContext = static_cast(context.getOwner()); QRect ctxtRect = gestureContext ? gestureContext->rect() : QRect(); if(gestureContext) { @@ -277,6 +280,8 @@ if (conf.enabled(QStm_LeftrightGestureRecogniser::KUid)) { QStm_LeftrightGestureRecogniser* gesture = NULL; initRecognizer(gesture, context, isNewCtx); + gesture->setAxisLockThreshold(axisLock); + } // ===================================================== UP-DOWN @@ -285,6 +290,7 @@ if (conf.enabled(QStm_UpdownGestureRecogniser::KUid)) { QStm_UpdownGestureRecogniser* gesture = NULL; initRecognizer(gesture, context, isNewCtx); + gesture->setAxisLockThreshold(axisLock); } // ===================================================== HOVER @@ -311,19 +317,28 @@ } } - // ===================================================== RELEASE - using qstmGesture::QStm_ReleaseGestureRecogniser; - - if (conf.enabled(QStm_ReleaseGestureRecogniser::KUid)) { - QStm_ReleaseGestureRecogniser* gesture = NULL; - initRecognizer(gesture, context, isNewCtx); + // ===================================================== MAYBE TAP + using qstmGesture::QStm_MaybeTapGestureRecogniser; - if(gesture) { - gesture->setArea(QRect()); + if (conf.enabled(QStm_MaybeTapGestureRecogniser::KUid)) { + int pos = m_gestureEngine->findGesture(QStm_MaybeTapGestureRecogniser::KUid); + QStm_MaybeTapGestureRecogniser* gesture = NULL; + + if (pos > -1) { + gesture = static_cast(m_gestureEngine->gestureAt(pos)); + gesture->addTapListener(&context, context.getOwner()); } - } + else { + initRecognizer(gesture, context, isNewCtx); + } + + if(gesture) { + gesture->setTapRange( touchAreaSizeInMm ); + } - + } + + // ===================================================== TAP / DOUBLE TAP // Add recognizer before any existing Flick, Release, Unknown // Add the gesture to the gesture engine @@ -362,6 +377,18 @@ } } + // ===================================================== RELEASE + using qstmGesture::QStm_ReleaseGestureRecogniser; + + if (conf.enabled(QStm_ReleaseGestureRecogniser::KUid)) { + QStm_ReleaseGestureRecogniser* gesture = NULL; + initRecognizer(gesture, context, isNewCtx); + + if(gesture) { + gesture->setArea(QRect()); + } + } + // ===================================================== UNKNOWN using qstmGesture::QStm_UnknownGestureRecogniser; @@ -395,8 +422,8 @@ m_statemachine->setTouchTimeArea ( !filter ? 0 : tTimeAreaSizeInMm ); // Timeouts, Adjustments, etc. - m_statemachine->setTouchSuppressTimeout(!filter ? 0 : conf.param(qstmGesture::ESuppressTimeout)*1000) ; - m_statemachine->setMoveSuppressTimeout(!filter ? 0 : conf.param(qstmGesture::EMoveSuppressTimeout)*1000) ; + m_statemachine->setTouchSuppressTimeout(!filter ? 0 : conf.param(qstmGesture::ESuppressTimeout)) ; + m_statemachine->setMoveSuppressTimeout(!filter ? 0 : conf.param(qstmGesture::EMoveSuppressTimeout)) ; m_statemachine->enableCapacitiveUp (!filter ? 0 : conf.param(qstmGesture::ECapacitiveUpUsed)); m_statemachine->enableYadjustment (!filter ? 0 : conf.param(qstmGesture::EAdjustYPos)); m_statemachine->enableLogging(context.m_logging); @@ -418,7 +445,7 @@ { m_engine.m_contexts.append(this); m_config = new QStm_GestureParameters(); - m_engine.getStateMachine()->addUiEventObserver(this); + //m_engine.getStateMachine()->addUiEventObserver(this); for(int i = 0; i < qstmGesture::EStmGestureUid_Count; ++i) { m_recognizers[i] = NULL; @@ -625,6 +652,8 @@ gest->setSpeed(gesture->getSpeed()); QPoint pos = gesture->getLocation(); gest->setPosition(pos); + QPoint pos2 = gesture->getLocation2(); + gest->setPosition2(pos2); gest->setDetails(gesture->getDetails()); gest->setSpeedVec(gesture->getSpeedVec()); QWidget* w = static_cast(gesture->target()); @@ -682,7 +711,7 @@ void QStm_GestureContext::enableRecognizer(qstmGesture::QStm_GestureUid uid ) { - qstmGesture::QStm_GestureRecogniserIf* rec = m_recognizers[uid]; + qstmGesture::QStm_GestureRecogniserIf* rec = m_recognizers[uid]; if(rec && !rec->isEnabled()) { rec->enable(true); // TODO: Notify listener @@ -698,14 +727,27 @@ bool QStm_GestureContext::handleSymbianPlatformEvent(const QSymbianEvent* platEvent) { - return m_engine.getStateMachine()->handleSymbianPlatformEvent(platEvent); + return m_engine.getStateMachine()->handleSymbianPlatformEvent(platEvent); } bool QStm_GestureContext::handleX11PlatformEvent(const XEvent* platEvent) { - return m_engine.getStateMachine()->handleX11PlatformEvent(platEvent); + return m_engine.getStateMachine()->handleX11PlatformEvent(platEvent); +} + +bool QStm_GestureContext::handleWinPlatformEvent(const void* platEvent) +{ + return m_engine.getStateMachine()->handleWinPlatformEvent(platEvent); } +void QStm_GestureContext::enableDblClick(bool enable) +{ + m_engine.getStateMachine()->enableDblClick(enable); +} - +void QStm_GestureContext::setLogging(int enabled) +{ + m_logging = enabled; + m_engine.getGestureEngine()->enableLogging(enabled); +}