diff -r 000000000000 -r f63038272f30 bluetoothengine/bthid/mouse/Sesame_client/inc/clientimagecommander.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetoothengine/bthid/mouse/Sesame_client/inc/clientimagecommander.h Mon Jan 18 20:28:57 2010 +0200 @@ -0,0 +1,215 @@ +/* +* Copyright (c) 2004 - 2006 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: + * +*/ + + +#ifndef __CLIENTIMAGE_COMMANDER_H__ +#define __CLIENTIMAGE_COMMANDER_H__ + +// INCLUDES +#include + +#include "pointmsgqueue.h" +// CLASS DECLARATION + +#define KWakeUpNeeded (5) + +class CPointQueue; + +class MPointHandler + { +public: + /** + * Handle Points from AnimDll + */ + virtual void HandlePointL(const TPoint& aPoint) = 0; + virtual void SendEventL(TPointerEvent::TType aEventType) = 0; + }; + +/** + * RImageCommander + * An instance of RImageCommander is an Animation Client Commander which + * sends commands to the Animation Server + */ +class RImageCommander : public RAnim, public MPointHandler + { +public: + // Constructors + + /** + * RImageCommander. + * Construct an Animation Client object for Animation Client DLL aAnimDll + * @param aAnimDll the Animation Client DLL to use + */ + IMPORT_C RImageCommander(RAnimDll& aAnimDll, RWsSession& aWsSession); + + /** + * ImageConstruct. + * Complete Animation Client construction + */ + IMPORT_C void ImageConstructL(RWindowGroup& aWindowGroup, TSize aSize); + + /** + * ~RImageCommander + */ + IMPORT_C ~RImageCommander(); + +public: + // from MPointHandler + + void HandlePointL(const TPoint& aPoint); + void SendEventL(TPointerEvent::TType aEventType); +private: + TInt SendPointerEvent(TPointerEvent::TType aEventType); + TRawEvent::TType PointerEventToRawEvent(TPointerEvent::TType aEventType); + void CreateSpriteL(TSize aSize, RWindowGroup& aGroup); + void FillInSpriteMember(TSpriteMember& aMember, CFbsBitmap* icon, + CFbsBitmap* iconMask); + TBool CheckCurrentPoint(); + TInt SendWakeUp(); + TBool RestrictPos(); + +public: + // New functions + + /** + * ImageCommand. + * Send aCommand to the Animation Server object; + * aCommand == KChangeCursor implies "change animation cursor". + * Note! Because there is no way to return an error from the server side + * using this method, it is important that any server side code for these + * commands should not be able to fail or leave. + * This command is also buffered and may not be performed immediately. + * @param aCommand the enumerated code for the option selected + */ + IMPORT_C void ImageCommand(TInt aCommand); + +public: + // Enumerations + + /** + * KAnimationTypes. + * Constant used to indicate the animation of a bouncing square should + * be created, enumeration can be expanded + */ + enum KAnimationTypes + { + KAnimationSquare = 1 + }; + + +private: + + RWsSession& iSession; + RWsSprite iSprite; + CFbsBitmap* iBaseBitmap; + CFbsBitmap* iBaseMaskBitmap; + + TPoint iCurrentPoint; + CPointQueue* iPointBufferQueue; + TBool iMouseButtonPressed; + TInt iWakeUpCalculator; + }; + +/** + * Class CPointQueue + * Event message queue. It's an active object. + * + * @since S60 v4.0 + */ + +class CPointQueue : public CActive + { +public: + /** + * factory constructor. + * + * @since S60 v4.0 + * @param aHandler The event handler. + * @param aName The event queue global name + * @return The created messge queue object + */ + static CPointQueue* NewL(MPointHandler* aHandler, const TDesC& aName); + /** + * desstructor. + * + * @since S60 v4.0 + */ + ~CPointQueue(); + + /** + * Request event. + * + * @since S60 v4.0 + */ + void GetPoint(); + +protected: + /** + * 2nd phase constructor. + * + * @since S60 v4.0 + * @aName The message queue name + */ + void ConstructL(const TDesC& aName); + /** + * Default construcotr. + * + * @since S60 v4.0 + * @aHandler The event handler + */ + CPointQueue(MPointHandler* aHandler); + + //From CActive + /** + * From CActive + * Called when there is event in the queue + * + * @since S60 v4.0 + */ + void RunL(); + + /** + * From CActive + * will be called if RunL leaves + * + * @since S60 v4.0 + * @param aError The error number + */ + TInt RunError(TInt aError); + + /** + * From CActive + * will be called when Cancel is issued + * + * @since S60 v4.0 + */ + void DoCancel(); + +private: + /** + * Message buffer queue + */ + RMsgQueue iPointBufQueue; + + /** + * Event handler + */ + MPointHandler* iHandler; + }; + +#endif // __CLIENTIMAGE_COMMANDER_H__ +// End of File