textinput/peninputarc/src/peninputserverapp/rpeninputanim.cpp
changeset 0 eb1f2e154e89
child 8 6ceef9a83b1a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputarc/src/peninputserverapp/rpeninputanim.cpp	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,328 @@
+/*
+* Copyright (c) 2005-2007 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:  Implementation for class RPeninputAnim
+*
+*/
+
+
+
+#include <w32std.h>
+
+#include "rpeninputanim.h"
+#include "peninputcmd.h"
+#include "peninputcmdparam.h"
+#include "peninputcmdparamext.h"
+#include "peninputclientserver.h"
+
+
+// ======== MEMBER FUNCTIONS ========
+
+
+// ---------------------------------------------------------------------------
+// RPeninputAnim::RPeninputAnim
+// Default consturctor to allow RPeninputAnim to be defined
+// as non pointer member. To properly initialize this class
+// use the other overload.
+// ---------------------------------------------------------------------------
+//
+RPeninputAnim::RPeninputAnim() : RAnim() 
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// RPeninputAnim::RAnim
+// Constructor
+// ---------------------------------------------------------------------------
+//
+RPeninputAnim::RPeninputAnim(RAnimDll& aDll) : RAnim( aDll )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// RPeninputAnim::Construct
+// Second phase constructor.
+// ---------------------------------------------------------------------------
+//
+void RPeninputAnim::ConstructL( const RWsSprite& aDevice )
+    {
+    User::LeaveIfError( RAnim::Construct( aDevice, 0, KNullDesC8() ) );
+    FinishConstructionL();
+    }
+
+// ---------------------------------------------------------------------------
+// RPeninputAnim::Activate
+// send activate command
+// ---------------------------------------------------------------------------
+//
+void RPeninputAnim::Activate()
+    {
+    CommandReply( EPeninputOpActivate );
+    }
+
+// ---------------------------------------------------------------------------
+// RPeninputAnim::Deactivate
+// Send deactive command
+// ---------------------------------------------------------------------------
+//
+void RPeninputAnim::Deactivate()
+    {
+    CommandReply( EPeninputOpDeactivate );
+    }
+
+// ---------------------------------------------------------------------------
+// RPeninputAnim::FinishConstructionL
+// Send finishing construction command
+// ---------------------------------------------------------------------------
+//
+void RPeninputAnim::FinishConstructionL()
+    {    
+    User::LeaveIfError( CommandReply( EPeninputOpFinishConstructionL) );
+    }
+
+    
+// ---------------------------------------------------------------------------
+// RPeniputAnim::LayoutSizeChangedL
+// Send size change message
+// ---------------------------------------------------------------------------
+//
+TInt RPeninputAnim::LayoutSizeChangedL(const TSize& aSize)
+    {
+    TInt err;
+    TIpcArgs args (TIpcArgs::ENothing,0);        
+    TPckgC<TSize> msg(aSize);
+    
+    args.Set(KMsgSlot1,&msg);
+    err = CommandReply(EPeninputOpLayoutSizeChangedWithSize,KNullDesC8,args);
+    return err;
+    }
+
+// ---------------------------------------------------------------------------
+// RPeniputAnim::SetUiLayoutPos
+// Get ui layout position
+// ---------------------------------------------------------------------------
+//
+TInt RPeninputAnim::SetUiLayoutPos(const TPoint& aPt)
+    {    
+    TPckgC<TPoint> msg(aPt);
+    TIpcArgs args(TIpcArgs::ENothing);     
+    args.Set(KMsgSlot1,&msg);    
+    return CommandReply(EPeninputOpSetLayoutPos,KNullDesC8,args);
+    }   
+
+// ---------------------------------------------------------------------------
+// RPeniputAnim::UpdateArea
+// Update screen
+// ---------------------------------------------------------------------------
+//    
+void RPeninputAnim::UpdateArea(const TRect& aRect,TBool aFullUpdate)    
+    {
+    TPckgC<TBool> flagMsg(aFullUpdate);    
+    TPckgC<TRect> rectMsg(aRect);
+    
+    TIpcArgs args (TIpcArgs::ENothing);        
+    /*TUpdateDataArea s;
+    s.iRect = aRect;
+    s.iUpdateFlag = aFullUpdate;
+    
+    TPckgC<TUpdateDataArea> pkg(s);
+    */
+    args.Set(KMsgSlot1,&rectMsg);
+    args.Set(KMsgSlot2,&flagMsg);
+    
+    //args.Set(KMsgSlot1,&pkg);    
+    CommandReply(EPeninputOpLayoutUpdateArea,KNullDesC8,args);
+    //Command(EPeninputOpLayoutUpdateArea,pkg);    
+    }
+
+// ---------------------------------------------------------------------------
+// RPeniputAnim::UpdateArea
+// Update screen
+// ---------------------------------------------------------------------------
+//    
+void RPeninputAnim::UpdateArea(const RArray<TUpdateArea>& aArea)
+    {
+    TInt num = aArea.Count();    
+    TUpdateArea* area = new TUpdateArea[num];
+    
+    if (!area)
+        return;
+
+    for(TInt i = 0; i < num; ++i)
+        {
+        area[i] = aArea[i];
+        }
+    
+    TPtrC8 areaMsg(reinterpret_cast<const TUint8*>(area), num*sizeof(TUpdateArea));
+    
+    TIpcArgs args (TIpcArgs::ENothing);        
+    
+    TPckgC<TInt> numMsg(num);    
+    args.Set(KMsgSlot1,&numMsg);
+    args.Set(KMsgSlot2,&areaMsg);
+    
+    //args.Set(KMsgSlot1,&pkg);    
+    CommandReply(EPeninputOpLayoutUpdateAreaRegion, KNullDesC8, args);
+    
+    delete []area;
+    }
+    
+// ---------------------------------------------------------------------------
+// RPeniputAnim::CapturePointer
+// Inform pen input animation dll to capture the pointer
+// ---------------------------------------------------------------------------
+//      
+void RPeninputAnim::CapturePointer(TBool aFlag, TInt aCaptureCtrlID)
+    {
+    TIpcArgs args (TIpcArgs::ENothing);        
+    TPckgC<TBool> msgCaptureFlagData(aFlag);
+    TPckgC<TInt> msgCaptureCtrlIDData(aCaptureCtrlID);
+    args.Set(KMsgSlot1,&msgCaptureFlagData);
+    args.Set(KMsgSlot2,&msgCaptureCtrlIDData);
+    //Command(EPeninputOpCapturePointer,msgData);            
+    CommandReply(EPeninputOpCapturePointer,KNullDesC8,args);
+    }    
+    
+// ---------------------------------------------------------------------------
+// RPeniputAnim::SimulateEvent
+// ---------------------------------------------------------------------------
+//      
+void RPeninputAnim::SimulateEvent(const TRawEvent& aEvent)
+    {
+    TIpcArgs args (TIpcArgs::ENothing);        
+    TPckgC<TRawEvent> msgData(aEvent);
+    args.Set(KMsgSlot1,&msgData);
+    CommandReply(EPeninputOpSimulateEvent,KNullDesC8,args);
+    //Command(EPeninputOpSimulateEvent,msgData);            
+    }        
+
+#ifdef RD_TACTILE_FEEDBACK     
+// ---------------------------------------------------------------------------
+// RPeniputAnim::DoFeedbackAreaOpL
+// ---------------------------------------------------------------------------
+//       
+void RPeninputAnim::DoFeedbackAreaOpL(const TTactileFeedbackArea* aArea, 
+                                              TInt aCount,TPeninputOpcodes aOp)
+    {    
+    for(TInt i = 0 ; i < aCount; ++i)
+        {
+        TTactileFeedbackArea oneArea = aArea[i];
+        TPckgC<TTactileFeedbackArea> msgData(oneArea);
+        Command(aOp,msgData);        
+        }        
+    }
+
+// ---------------------------------------------------------------------------
+// RPeniputAnim::DoFeedbackAreaOpReplyL
+// ---------------------------------------------------------------------------
+//       
+void RPeninputAnim::DoFeedbackAreaOpReplyL(const TTactileFeedbackArea* aArea, 
+                                              TInt aCount,TPeninputOpcodes aOp)
+    {    
+    TIpcArgs args (TIpcArgs::ENothing);           
+    TPckgC<TInt> areaNum(aCount);        
+    args.Set(KMsgSlot1,&areaNum);
+    
+    TInt memByteLen = aCount*sizeof(TTactileFeedbackArea);
+    
+    TUint8 *buf = new(ELeave) TUint8[memByteLen];
+    
+    TTactileFeedbackArea *areaBuf = reinterpret_cast<TTactileFeedbackArea *>(buf);
+    for(TInt i = 0; i < aCount; ++i)
+        {
+        areaBuf[i] = aArea[i];
+        }
+        
+    TPtrC msgData(reinterpret_cast<TUint16*>(buf),memByteLen/2);
+
+    args.Set(KMsgSlot2,&msgData);  
+    
+    CommandReply(aOp,KNullDesC8,args);
+    delete []buf;
+
+    }
+
+
+// ---------------------------------------------------------------------------
+// RPeniputAnim::AddFeedbackAreaL
+// ---------------------------------------------------------------------------
+//       
+void RPeninputAnim::AddFeedbackAreaL(const TTactileFeedbackArea* aArea, 
+                                              TInt aCount,TBool aReplyFlag)
+    {
+    if(aReplyFlag)
+        DoFeedbackAreaOpReplyL(aArea,aCount,EPeninputOpRegisterFeedbackArea);    
+    else
+        DoFeedbackAreaOpL(aArea,aCount,EPeninputOpRegisterFeedbackArea);    
+    }
+    
+// ---------------------------------------------------------------------------
+// RPeniputAnim::RemoveFeedbackAreaL
+// ---------------------------------------------------------------------------
+//           
+void RPeninputAnim::RemoveFeedbackAreaL(const TTactileFeedbackArea* aArea,
+                                             TInt aCount,TBool aReplyFlag)
+    {
+    if(aReplyFlag)
+        DoFeedbackAreaOpReplyL(aArea,aCount,EPeninputOpDeRegisterFeedbackArea);    
+    else
+        DoFeedbackAreaOpL(aArea,aCount,EPeninputOpDeRegisterFeedbackArea);        
+    }    
+    
+// ---------------------------------------------------------------------------
+// RPeniputAnim::ChangeFeedbackAreaL
+// ---------------------------------------------------------------------------
+//               
+void RPeninputAnim::ChangeFeedbackAreaL(const TTactileFeedbackArea* aArea, 
+                                             TInt aCount,TBool aReplyFlag)
+    {
+    if(aReplyFlag)
+        DoFeedbackAreaOpReplyL(aArea,aCount,EPeninputOpChangeFeedbackArea);    
+    else
+        DoFeedbackAreaOpL(aArea,aCount,EPeninputOpChangeFeedbackArea);    
+    }   
+// ---------------------------------------------------------------------------
+// RPeniputAnim::ChangeFeedbackTypeL
+// ---------------------------------------------------------------------------
+// 
+void RPeninputAnim::ChangeFeedbackTypeL(const TTactileFeedbackArea* aArea, 
+											 TInt aCount,TBool aReplyFlag)
+	{
+    if(aReplyFlag)
+        DoFeedbackAreaOpReplyL(aArea,aCount,EPeninputOpChangeFeedbackType);    
+    else
+        DoFeedbackAreaOpL(aArea,aCount,EPeninputOpChangeFeedbackType);
+	}
+
+#endif // RD_TACTILE_FEEDBACK 
+    
+void RPeninputAnim::EnableSprite(TBool aFlag)
+    {
+    TPckgC<TBool> msgData(aFlag);
+    Command(EPeninputOpEnalbeSprite,msgData);
+    }
+
+// ---------------------------------------------------------------------------
+// RPeniputAnim::GetDSAState
+// ---------------------------------------------------------------------------
+//      
+void RPeninputAnim::GetDSAState(TBool& aState)
+    {
+    TIpcArgs args (TIpcArgs::ENothing);        
+    TPckg<TBool> msgData(aState);
+    args.Set(KMsgSlot1,&msgData);
+    CommandReply(EPeninputOpRequestDSAState,KNullDesC8,args);
+    //Command(EPeninputOpSimulateEvent,msgData);            
+    }        
+    
+// End of File