epoc32/include/mw/aknpointereventsuppressor.h
branchSymbian2
changeset 2 2fe1408b6811
parent 1 666f914201fb
child 4 837f303aceeb
--- a/epoc32/include/mw/aknpointereventsuppressor.h	Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/mw/aknpointereventsuppressor.h	Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,126 @@
-aknpointereventsuppressor.h
+/*
+* 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 "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef AKNPOINTEREVENTSUPPRESSOR_H
+#define AKNPOINTEREVENTSUPPRESSOR_H
+
+//  INCLUDES
+#include <coecntrl.h>
+
+// CLASS DECLARATION
+
+/**
+*  Utility class for removing unwanted pointer events, for instance
+*  when distinguishing tap events from intended drags.
+*
+*  Usage pattern, where iSuppressor is a CAknPointerEventSuppressor*:
+*
+*  void CMyControl::HandlePointerEventL(const TPointerEvent& aPointerEvent)
+*  	{
+*  	if (iSuppressor->SuppressPointerEvent(aPointerEvent))
+*  		return;
+*  	
+*  	switch (aPointerEvent.iType)
+*  		{
+*  		case TPointerEvent::EButton1Down:
+*  			iTap = ETrue;
+*  			break;
+*  		case TPointerEvent::EButton1Up:
+*  			if (iTap)
+*  				HandleTapL(aPointerEvent);
+*  			break;
+*  		case TPointerEvent::EDrag:
+*  			iTap = EFalse;
+*  			HandleDragL(aPointerEvent);
+*  			break;
+*  		default:
+*  			break;
+*  		}
+*  	}
+*
+*  @since S60 5.0
+*/
+NONSHARABLE_CLASS(CAknPointerEventSuppressor) : public CBase
+	{
+public:
+	/**
+	* Factory function
+	*
+	* This creates a pointer event suppressor that will suppress
+	* drag events while the pointer interaction may be a tap.
+	*/
+	IMPORT_C static CAknPointerEventSuppressor* NewL();
+    /**
+    * Destructor.
+    */    
+	IMPORT_C ~CAknPointerEventSuppressor();
+	
+	/**
+	* Tests whether a pointer event should be suppressed.
+	*
+	* A control that wants pointer event suppression should feed
+	* all pointer events to this function. It will return ETrue if
+	* the pointer event should be ignored by the control.
+	* Only controls that have unrelated behaviour on tap and drag
+	* actions need to use pointer event suppression.
+	*
+	* If this class is used to suppress drag events during a possible
+	* tap, and this function does not suppress a drag event, the
+	* client can be sure that a drag action is happening.
+	*
+	* @param aPointerEvent the pointer event which may need to be suppressed.
+	* @return ETrue if the pointer event should be suppressed, or EFalse if it should be handled.
+	*/
+	IMPORT_C TBool SuppressPointerEvent(const TPointerEvent& aPointerEvent);
+	/**
+	* Set the maximum time period that drag events should be
+	* ignored during a pointer interaction.
+	*
+	* @param aDuration the maximum duration of a tap action.
+	*/
+	IMPORT_C void SetMaxTapDuration(TTimeIntervalMicroSeconds aDuration);
+	/**
+	* Set the maximum pointer movement for which drag events
+	* should be ignored during a pointer interaction.
+	*
+	* @param aMoveLimits the pixel movement limits within which a touch action is considered a tap
+	*/
+	IMPORT_C void SetMaxTapMove(TSize aMoveLimits);
+	/**
+	* Set the minimum time between drag events.
+	* This can be used to reduce the frequency of drag event reception when
+	* events are not desired at maximum speed.
+	*
+	* @param aInterval the minimum interval between which drag events are wanted
+	*/
+	IMPORT_C void SetMinInterDragInterval(TTimeIntervalMicroSeconds aInterval);
+
+private:
+	CAknPointerEventSuppressor();
+
+private:
+	TTimeIntervalMicroSeconds iMaxTapDuration;
+	TSize iMaxTapMove;
+	TTimeIntervalMicroSeconds iMinInterDragInterval;
+	TTime iDownTime;
+	TPoint iDownPos;
+	TBool iTap;
+	TTime iLastEventTime;
+	};
+
+
+#endif
\ No newline at end of file