--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/webkitutils/stmgesturefw/src/stateengineconfiguration.cpp Wed Sep 01 12:28:30 2010 +0100
@@ -0,0 +1,212 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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 "stateengineconfiguration.h"
+#include "uieventsender.h"
+#include "utils.h"
+
+using namespace stmUiEventEngine ;
+
+CStateEngineConfiguration::CStateEngineConfiguration() :
+ m_touchAreaShape(ERectangle),
+ m_holdAreaShape(ERectangle)
+{
+}
+
+void CStateEngineConfiguration::ConstructL()
+{
+ m_uiEventSender = CUiEventSender::NewL() ;
+}
+
+CStateEngineConfiguration::~CStateEngineConfiguration()
+{
+ delete m_uiEventSender ;
+}
+
+void CStateEngineConfiguration::setTolerance(long fingersize_mm,
+ TPoint& tolerance,
+ TAreaShape shape)
+{
+ long s = Mm2Pixels(fingersize_mm) / 2;
+ switch(shape)
+ {
+ case EEllipse:
+ tolerance.iX = (s * 2) / 3;
+ tolerance.iY = s;
+ break ;
+ case ERectangle:
+ case ECircle:
+ default:
+ tolerance.iX = s;
+ tolerance.iY = s;
+ break ;
+ }
+}
+
+/*!
+ * Set the new touch limits for calculating the touch area.
+ * The size is given in millimetres. The shape of the touch area
+ * defines how the parameter is used.
+ * Rectangle: each side of the rectangle has length of fingersize_mm.
+ * Circle: the parameter defines the diameter of the cicle.
+ * Ellipse: the parameter defines the vertical diameter of the ellipse,
+ * horizontal diameter is half of it.
+ */
+void CStateEngineConfiguration::setTouchTimeArea(long fingersize_mm)
+{
+ setTolerance(fingersize_mm, m_touchTimeTolerance, m_touchAreaShape);
+
+ // make sure that both touch areas are defined, so if the touch area is not yet set,
+ // use the same as for touch time area.
+ if (m_touchTolerance.iX == 0)
+ {
+ setTouchArea(fingersize_mm) ;
+ }
+}
+/*!
+ * Set the new touch limits for calculating the touch area.
+ * The size is given in millimetres. The shape of the touch area
+ * defines how the parameter is used.
+ * Rectangle: each side of the rectangle has length of fingersize_mm.
+ * Circle: the parameter defines the diameter of the cicle.
+ * Ellipse: the parameter defines the vertical diameter of the ellipse,
+ * horizontal diameter is half of it.
+ */
+void CStateEngineConfiguration::setTouchArea(long fingersize_mm)
+{
+ setTolerance(fingersize_mm, m_touchTolerance, m_touchAreaShape);
+}
+/*!
+ * \return the touch are shape
+ */
+TAreaShape CStateEngineConfiguration::getTouchAreaShape()
+{
+ return m_touchAreaShape ;
+}
+/*!
+ * \parameter the touch are shape
+ */
+void CStateEngineConfiguration::setTouchAreaShape(TAreaShape aShape)
+{
+ this->m_touchAreaShape = aShape ;
+}
+/*!
+ * \return the touch timeout in microseconds.
+ */
+unsigned int CStateEngineConfiguration::getTouchTimeout()
+{
+ return m_touchTimerLimit ;
+}
+/*!
+ * set the touch timeout in microseconds.
+ */
+void CStateEngineConfiguration::setTouchTimeout(unsigned int a)
+{
+ m_touchTimerLimit = a ;
+}
+/*!
+ * Set the hold area. Hold are shape determines how exactly the area is handled.
+ * \sa setTouchArea
+ */
+void CStateEngineConfiguration::setHoldArea(long fingersize_mm)
+{
+ setTolerance(fingersize_mm, m_holdTolerance, m_holdAreaShape);
+}
+/*!
+ * Get the shape of the hold area: Rectangle, Circle or Ellipse,
+ */
+TAreaShape CStateEngineConfiguration::getHoldAreaShape()
+{
+ return m_holdAreaShape ;
+}
+/*!
+ * Set the shape of the hold area: Rectangle, Circle or Ellipse,
+ */
+void CStateEngineConfiguration::setHoldAreaShape(TAreaShape aShape)
+{
+ m_holdAreaShape = aShape ;
+}
+/*!
+ * \return the hold timeout in microseconds.
+ */
+unsigned int CStateEngineConfiguration::getHoldTimeout()
+{
+ return m_holdTimerLimit ;
+}
+/*!
+ * set the hold timeout value in microseconds.
+ */
+void CStateEngineConfiguration::setHoldTimeout(unsigned int a)
+{
+ m_holdTimerLimit = a ;
+}
+/*!
+ * get the touch suppress timeout value in microseconds.
+ */
+unsigned int CStateEngineConfiguration::getTouchSuppressTimeout()
+{
+ return m_suppressTimerLimit ;
+}
+/*!
+ * set the touch suppress timeout.
+ * \param the timeout value in microseconds.
+ */
+void CStateEngineConfiguration::setTouchSuppressTimeout(unsigned int a)
+{
+ m_suppressTimerLimit = a ;
+}
+/*!
+ * MStateMachine method.
+ */
+unsigned int CStateEngineConfiguration::getMoveSuppressTimeout()
+{
+ return m_moveSuppressTimerLimit ;
+}
+/*!
+ * MStateMachine method.
+ */
+void CStateEngineConfiguration::setMoveSuppressTimeout(unsigned int a)
+{
+ m_moveSuppressTimerLimit = a ;
+}
+/*!
+ * MStateMachine method.
+ * Sets logging on or off.
+ */
+void CStateEngineConfiguration::enableLogging(bool a)
+{
+ m_enableLogging = a ;
+ m_uiEventSender->setLogging(a) ;
+}
+
+/*!
+ * \param a new UI event observer
+ */
+bool CStateEngineConfiguration::addUiEventObserver(MUiEventObserver* observer)
+{
+ // The event sender handles the observers
+ return m_uiEventSender->addObserver(observer) ;
+}
+/*!
+ * MStateMachine method.
+ */
+bool CStateEngineConfiguration::removeUiEventObserver(MUiEventObserver* observer)
+{
+ // The event sender handles the observers
+ return m_uiEventSender->removeObserver(observer) ;
+}
+