diff -r 000000000000 -r 2f259fa3e83a akntouchgesturefw/inc/akntouchgesturefwdragrecognizer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/akntouchgesturefw/inc/akntouchgesturefwdragrecognizer.h Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,190 @@ +/* +* Copyright (c) 2009 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: Drag touch gesture recognizer. +* +*/ + +#ifndef C_AKNTOUCHGESTUREFWDRAGRECOGNIZER_H +#define C_AKNTOUCHGESTUREFWDRAGRECOGNIZER_H + + +#include "akntouchgesturefwbaserecognizer.h" + +namespace AknTouchGestureFw { + +/** + * Drag touch gesture recognizer. + * + * @lib akntouchgesturefw + * @since S60 v5.2 + */ +NONSHARABLE_CLASS( CAknTouchGestureFwDragRecognizer ) + : public CAknTouchGestureFwBaseRecognizer + { + +public: + + /** + * Two-phased constructor. + * + * @param aEngine The gesture recognition engine. + */ + static CAknTouchGestureFwDragRecognizer* NewL( + CAknTouchGestureFwRecognitionEngine& aEngine ); + + /** + * Two-phased constructor. + * + * @param aEngine The gesture recognition engine. + */ + static CAknTouchGestureFwDragRecognizer* NewLC( + CAknTouchGestureFwRecognitionEngine& aEngine ); + + /** + * Destructor. + */ + virtual ~CAknTouchGestureFwDragRecognizer(); + +public: // From base class CAknTouchGestureFwBaseRecognizer. + + /** + * Returns the recognizer's gesture group. + * + * @return Gesture group. + */ + TAknTouchGestureFwGroup GestureGroup() const; + + /** + * Cancels gesture recognition. + */ + void CancelRecognizing(); + + /** + * Handles single pointer event. + * + * @param aPointerData Pointer event related data. + */ + void HandleSinglePointerEventL( const TPointerEventData& aPointerData ); + + /** + * Handles multi pointer event. + * + * @param aPointerData Pointer event related data. + * @param aFirstPointerPosition First pointer position. + * @param aSecondPointerPosition Second pointer position. + */ + void HandleMultiPointerEventL( const TPointerEventData& aPointerData, + const TPoint& aFirstPointerPosition, + const TPoint& aSecondPointerPosition ); + +private: + + /** + * C++ constructor. + * + * @param aEngine The gesture recognition engine. + */ + CAknTouchGestureFwDragRecognizer( + CAknTouchGestureFwRecognitionEngine& aEngine ); + + /** + * Starts single-touch recognition. + * + * @param aPointerPos Current pointer position. + */ + void StartSingleRecognizing( const TPoint& aPointerPos ); + + /** + * Handles single-touch recognition cycle. + * Called for every drag event when one pointer is down. + * + * @param aPointerPos New position of pointer. + */ + void SingleRecognizeL( const TPoint& aPointerPos ); + + /** + * Completes single-touch recognition. + */ + void CompleteSingleRecognizingL(); + + /** + * Asks engine to send drag event to observer. + * + * @param aGestureState Drag gesture state. + */ + void SendDragEventL( TAknTouchGestureFwState aGestureState ); + + /** + * Resets the recognizer. + */ + void Reset(); + + /** + * Returns current gesture position. + * + * @return Current gesture position. + */ + TPoint CurrentPos() const; + + /** + * Returns previous gesture position. + * + * @return Previous gesture position. + */ + TPoint PreviousPos() const; + +private: // data + + /** + * Start position of gesture. + */ + TPoint iStartPosition; + + /** + * Current position of gesture. + */ + TPoint iCurrentPosition; + + /** + * Previous position of gesture. + */ + TPoint iPreviousPosition; + + /** + * ETrue if drag gesture already detected. + */ + TBool iDragDetected; + + /** + * Drag threshold area. + */ + TThresholdArea iDragArea; + + /** + * Boolean flag to indicate if drag recognition + * should be started upon single touch drag. + * This flag may be set when multi touch changes to + * single (i.e. another pointer was released). + */ + TBool iStartOnSingleTouchDrag; + + /** + * ETrue if continuous feedback ongoing. + */ + TBool iContinuousFeedback; + }; + +} // namespace AknTouchGestureFw + +#endif // C_AKNTOUCHGESTUREFWDRAGRECOGNIZER_H