qstmgesturelib/qstmgestureapi.cpp
changeset 16 3c88a81ff781
parent 3 0954f5dd2cd0
--- 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 <qstmflickgesturerecogniser.h>
 #include <qstmunknowngesturerecogniser.h>
 #include <qstmzoomgesturerecogniser.h>
+#include <qstmmaybetapgesturerecogniser.h>
 
 #include <qstmgestureapi.h>
 #include <qstmgestureevent.h>
@@ -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<QWidget*>(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<QStm_MaybeTapGestureRecogniser*>(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<QWidget*>(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);
+}