htiui/HtiServicePlugins/HtiKeyEventServicePlugin/src/MultiTouchPointerEventHandler.cpp
branchRCL_3
changeset 20 48060abbbeaf
parent 19 d40e813b23c0
child 21 b3cee849fa46
--- a/htiui/HtiServicePlugins/HtiKeyEventServicePlugin/src/MultiTouchPointerEventHandler.cpp	Thu Jul 15 18:39:46 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,286 +0,0 @@
-/*
-* 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:  Functional implementation of advanced pointer multitouch service
-*
-*/
-
-// INCLUDE FILES
-#include "HtiKeyEventServicePlugin.h"
-#include "MultiTouchPointerEventHandler.h"
-#include "MultiTouchPointerEvent.h"
-
-#include <HtiDispatcherInterface.h>
-#include <HtiLogging.h>
-
-// CONSTANTS
-
-
-// ----------------------------------------------------------------------------
-// CMultiTouchPointerEventHandler::NewL()
-// ----------------------------------------------------------------------------
-CMultiTouchPointerEventHandler* CMultiTouchPointerEventHandler::NewL(MHtiMultiTouchObserver& aObserver)
-    {
-    HTI_LOG_FUNC_IN( "CMultiTouchPointerEventHandler::NewL" );
-    CMultiTouchPointerEventHandler* self = new (ELeave) CMultiTouchPointerEventHandler(aObserver);
-    CleanupStack::PushL ( self );
-    self->ConstructL();
-    CleanupStack::Pop();
-    HTI_LOG_FUNC_OUT( "CMultiTouchPointerEventHandler::NewL" );
-    return self;
-    }
-
-// ----------------------------------------------------------------------------
-// CMultiTouchPointerEventHandler::CMultiTouchPointerEventHandler()
-// ----------------------------------------------------------------------------
-CMultiTouchPointerEventHandler::CMultiTouchPointerEventHandler(MHtiMultiTouchObserver& aObserver)
-	:iFinishedCount(0),	iObserver(aObserver)
-    {
-    HTI_LOG_TEXT( "CMultiTouchPointerEventHandler constructor" );
-    }
-
-// ----------------------------------------------------------------------------
-// CMultiTouchPointerEventHandler::~CMultiTouchPointerEventHandler()
-// ----------------------------------------------------------------------------
-CMultiTouchPointerEventHandler::~CMultiTouchPointerEventHandler()
-    {
-    HTI_LOG_TEXT( "CMultiTouchPointerEventHandler destructor" );    
-    Clear();
-    iWsSession.Close();
-    }
-
-// ----------------------------------------------------------------------------
-// CMultiTouchPointerEventHandler::ConstructL()
-// ----------------------------------------------------------------------------
-void CMultiTouchPointerEventHandler::ConstructL()
-    {
-    HTI_LOG_TEXT( "CMultiTouchPointerEventHandler::ConstructL" ); 
-    User::LeaveIfError( iWsSession.Connect() );
-    }
-// ----------------------------------------------------------------------------
-// CMultiTouchPointerEventHandler::Clear()
-// ----------------------------------------------------------------------------
-void CMultiTouchPointerEventHandler::Clear()
-	{
-	HTI_LOG_TEXT( "CMultiTouchPointerEventHandler::Clear" ); 
-	iTouchPointerArray.ResetAndDestroy();
-	iFinishedCount=0;
-	}
-// ----------------------------------------------------------------------------
-// CMultiTouchPointerEventHandler::NotifyTouchComplete()
-// ----------------------------------------------------------------------------
-void CMultiTouchPointerEventHandler::NotifyTouchComplete(TUint8 aTouchNumber)
-    {
-    HTI_LOG_FUNC_IN("CMultiTouchPointerEventHandler::NotifyTouchComplete");
-    
-    iFinishedCount++;
-    HTI_LOG_FORMAT( "touch number %d finished", aTouchNumber);
-    HTI_LOG_FORMAT( "%d touch finished", iFinishedCount);
-    
-    if(iTouchPointerArray.Count() == iFinishedCount)
-    	{
-		// notify observer
-		iObserver.NotifyMultiTouchComplete();
-    	}
-    
-    HTI_LOG_FUNC_OUT("CMultiTouchPointerEventHandler::NotifyTouchComplete");
-    }
-// ----------------------------------------------------------------------------
-// CMultiTouchPointerEventHandler::ParsePoint()
-// ----------------------------------------------------------------------------
-TBool CMultiTouchPointerEventHandler::ParsePoint( const TDesC8& aData, TInt& aoffset,
-		TInt& aX, TInt& aY, TInt& aZ, 
-		TTimeIntervalMicroSeconds32& aWait, TTimeIntervalMicroSeconds32& aHold )
-    {
-    HTI_LOG_FUNC_IN( "CMultiTouchPointerEventHandler::ParsePoint" );
-    
-    TInt dataLength = aData.Length();
-    if ( dataLength-aoffset < 14 ) 
-        return EFalse ;
-    
-    aX = aData[aoffset] + ( aData[aoffset+1] << 8 );
-    aoffset += 2;
-    
-    aY = aData[aoffset] + ( aData[aoffset+1] << 8 );
-    aoffset += 2;
-
-    aZ = aData[aoffset] + ( aData[aoffset+1] << 8 );
-    aoffset += 2;
-
-    aWait = (aData[aoffset] + ( aData[aoffset+1] << 8 )
-                + ( aData[aoffset+2] << 16 ) + (aData[aoffset+3] << 24) ) * 1000;
-    aoffset += 4;      
-    
-    aHold = ( aData[aoffset] + ( aData[aoffset+1] << 8 )
-                + ( aData[aoffset+2] << 16 ) + (aData[aoffset+3] << 24) ) * 1000;
-    aoffset += 4;
-    
-    HTI_LOG_FUNC_OUT( "CMultiTouchPointerEventHandler::ParsePoint" );
-    return ETrue;
-    }
-// ----------------------------------------------------------------------------
-// CMultiTouchPointerEventHandler::ParseMove()
-// ----------------------------------------------------------------------------
-TBool CMultiTouchPointerEventHandler::ParseMove( const TDesC8& aData, TInt& aoffset,
-		TTimeIntervalMicroSeconds32& aDragTime, TInt& aStepCount )
-    {
-    HTI_LOG_FUNC_IN( "CMultiTouchPointerEventHandler::ParseMove" );
-    
-    TInt dataLength = aData.Length();
-    if ( dataLength-aoffset < 6 ) 
-        return EFalse ;
-    
-    aDragTime = ( aData[aoffset] + ( aData[aoffset+1] << 8 )
-				+ ( aData[aoffset+2] << 16 ) + (aData[aoffset+3] << 24) ) * 1000;
-    aoffset += 4;
-    
-	aStepCount = aData[aoffset] + ( aData[aoffset+1] << 8 );
-	aoffset += 2;
-    
-    HTI_LOG_FUNC_OUT( "CMultiTouchPointerEventHandler::ParseMove" );
-    return ETrue;
-    }
-// ----------------------------------------------------------------------------
-// CMultiTouchPointerEventHandler::HandleMultiTouchL()
-// ----------------------------------------------------------------------------
-TBool CMultiTouchPointerEventHandler::HandleMultiTouchL( const TDesC8& aData )
-    {
-    HTI_LOG_FUNC_IN( "CMultiTouchPointerEventHandler::HandleMultiTouchL" );
-    TBool validparameter=EFalse;
-    
-    TInt dataLength = aData.Length();
-    if ( dataLength < 1 )
-        return validparameter;
-	
-    // Parse the parameters - correct length is already verified
-	TInt offset = 0;
-
-    TInt touchCount = aData[offset];
-    offset += 1;
-    HTI_LOG_FORMAT( "Number of touches: %d", touchCount );
-    if (touchCount<=0)
-    	return validparameter;
-
-    for(TInt i=0; i<touchCount; i++)
-        {
-        //check valid data length
-        if(dataLength-offset < 3)
-            return validparameter;
-        
-        TInt pointerNumber = aData[offset];
-        offset += 1;
-        HTI_LOG_FORMAT( "Pointer Number %d", pointerNumber );
-        
-        TInt pointerCount = aData[offset] + ( aData[offset+1] << 8 );
-        offset += 2;
-        HTI_LOG_FORMAT( "Number of points: %d", pointerCount );
-        
-        if (pointerCount == 0 )
-            return validparameter;
-        
-        CMultiTouchPointerEvent* touch = CMultiTouchPointerEvent::NewL(pointerNumber,this);        
-        CleanupStack::PushL(touch);
-        iTouchPointerArray.AppendL(touch);
-        CleanupStack::Pop();
-        
-        TInt lastX, lastY, lastZ, stepCount; 
-        TTimeIntervalMicroSeconds32 dragTime;
-        
-        for (TInt j=0;j<pointerCount;j++)
-        	{
-			// read point
-			TInt X1, Y1, Z1; 
-			TTimeIntervalMicroSeconds32 waitTime, holdTime;
-			if (!ParsePoint( aData, offset,X1, Y1, Z1, waitTime, holdTime))
-				return validparameter;
-			
-			HTI_LOG_FORMAT( "X coord down = %d", X1 );
-			HTI_LOG_FORMAT( "Y coord down = %d", Y1 );
-			HTI_LOG_FORMAT( "Z coord down = %d", Z1 );
-			HTI_LOG_FORMAT( "Event wait time = %d", waitTime.Int() );   
-			HTI_LOG_FORMAT( "Point holding time = %d", holdTime.Int() );
-			
-			if ( waitTime.Int() < 0 || holdTime.Int() < 0 )
-				return validparameter;
-			
-			// add move event from last point to this point 
-			if (j!=0)
-				{
-				HTI_LOG_FORMAT( "Point dragging time = %d", dragTime.Int() );
-				HTI_LOG_FORMAT( "Step count between two points = %d", stepCount );
-				touch->InterpolatePointL(lastX, lastY, lastZ,X1,Y1,Z1,dragTime,stepCount);
-				}				
-			
-			// set last point
-			lastX=X1;
-			lastY=Y1;
-			lastZ=Z1;
-			
-			// wait event
-			touch->AddPointL(waitTime,X1,Y1,Z1,TRawEvent::EButton1Down);
-			
-			// hold event
-			touch->AddPointL(holdTime, X1,Y1,Z1,TRawEvent::EPointerMove);
-			
-			if (j!=pointerCount-1)
-				{
-				// not last point
-				if (!ParseMove(aData, offset, dragTime, stepCount))
-					return validparameter;				
-				if (dragTime.Int() < 0 || stepCount <= 0)
-					return validparameter;        				
-				}
-			else
-				{
-				// last point
-				touch->AddPointL(0,X1,Y1,Z1,TRawEvent::EButton1Up);
-				}
-        	}  
-        
-            touch->PrintInfo();
-
-        } 
-
-    
-    for (TInt i=0;i<touchCount;i++)
-        iTouchPointerArray[i]->StartTouch();
-    
-    validparameter=ETrue;
-    
-    HTI_LOG_FUNC_OUT( "CMultiTouchPointerEventHandler::HandleMultiTouchL" );
-    return validparameter;
-    }	
-
-void CMultiTouchPointerEventHandler::SimulateEvent(TUint8 aTouchNumber, 
-		TInt aX, TInt aY, TInt aZ, TRawEvent::TType aEventType)
-    {
-    HTI_LOG_FUNC_IN( "CMultiTouchPointerEventHandler::SimulateEvent" );
-    
-	TRawEvent rawEvent;
-	rawEvent.SetPointerNumber( aTouchNumber ); 
-	rawEvent.Set( aEventType, aX,  aY,  aZ);   
-
-	HTI_LOG_FORMAT( "SimulatePointer touch number=%d ", aTouchNumber );
-	HTI_LOG_FORMAT( "SimulatePointer event=%d ", aEventType );
-	HTI_LOG_FORMAT( "SimulatePointer X=%d ", aX );
-	HTI_LOG_FORMAT( "SimulatePointer Y=%d ", aY );
-	HTI_LOG_FORMAT( "SimulatePointer Z=%d", aZ );
-	
-	iWsSession.SimulateRawEvent( rawEvent );
-	iWsSession.Flush();
-	
-    HTI_LOG_FUNC_OUT( "CMultiTouchPointerEventHandler::SimulateEvent" );
-
-    }
-
-// End of file