diff -r 000000000000 -r eb1f2e154e89 textinput/peninputarc/inc/pensrvcliinc/peninputserversession.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputarc/inc/pensrvcliinc/peninputserversession.h Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,284 @@ +/* +* Copyright (c) 2005-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: header file for peninput session +* +*/ + + + + +#ifndef C_CPENINPUTSESSION_H +#define C_CPENINPUTSESSION_H + +// INCLUDES +#include +#include "peninputcmdparam.h" + +class CPeninputServer; +class RMessage2; + + +/** + * This class represents a session in the server. + * + * Functions are provided to respond appropriately to client messages + * + * @since S60 v4.0 + */ +NONSHARABLE_CLASS(CPeninputServerSession) : public CSession2 + { +public: + // Constructors and destructor + /** + * Constructor. + * + * @since S60 v4.0 + * @param aClient reference to client thread + * @param aServer pointer to CPeninputServer + */ + CPeninputServerSession(RThread &aClient, CPeninputServer& aServer); + + /** + * Destructor. + * + * @since S60 v4.0 + */ + ~CPeninputServerSession(); + + /** + * Static initializer. + * + * @since S60 v4.0 + * @param aClient reference to client thread + * @param aServer pointer to CPeninputServer + * @return Sever session created + */ + static CPeninputServerSession* NewL(RThread &aClient, + CPeninputServer& aServer); + + /** + * Signals the client with the given code, if the client has + * registered as observer. + * + * @since S60 v4.0 + * @param aSignalCode The event code + * @param aEventData The event data + * @return ETrue if client was signalled succesfully, EFalse otherwise. + */ + TBool SignalClientL(TInt aSignalCode,const TDesC& aEventData); + + /** + * Signals the client that UI is activated or deactivaed. + * + * @since S60 v4.0 + * @param aSignalCode The event code + * @param aType pen ui type associated with this event + * @return ETrue if client was signalled succesfully, EFalse otherwise. + */ + TBool SignalUiActivationObserver(TInt aSignalCode,TInt aType); + + + /** + * Handling pending event before this session is closed. + * + * @since S60 v4.0 + */ + void ProcessPendingEventBeforeExit(); + + /* + * Returns id of the application thread that created this session. + * + * @since S60 v4.0 + * @return client thread id + */ + TInt ClientId(); + + /** + * Increase the delayed command count + * + * @since S60 v4.0 + */ + void AddDelayedCmd(); + + + /** + * Regiseter the ui type to be monitored. + * + * @since S60 v4.0 + * @aType The ui type to be monitored. + */ + void RegisterPenUiType(TInt aType); + + /** + * Panic client + * + * @since S60 v4.0 + * @param aMessage The client message + * @param aPanic panic code + */ + static void PanicClient(const RMessage2& aMessage ,TInt aPanic ); + + // from base classes CSession2 + + /** + * From CSession2. + * handle client request + * + * @since S60 v4.0 + * @param aMessage The client request message + */ + virtual void ServiceL( const RMessage2 &aMessage ); + + /** + * To get disabled layouts for the session of RMessage + * + * @since S60 v6.0 + * @param aDisabledLayouts The disabled mode to set + */ + const TProcessId& ClientProcessId(); + TInt DisabledUiType(); + + TInt DoUpdateAppInfo(); + + inline TBool DsaEverHappened() const; +private: // New functions + /** + * 2nd phase constuctor + * + * @since S60 v4.0 + */ + void ConstructL(); + + /** + * handle client request + * + * @since S60 v4.0 + * @param aMessage The client request message + * @return The operation result code + */ + TInt DoServiceL( const RMessage2 &aMessage ); + + + /** + * Remove the given event data + * + * @since S60 v4.0 + * @param aIndex The event to be remvoed. If aIndex < 0, all events + * are removed. + */ + void RemoveEventDataByIdx(TInt aIndex); + + /** + * Save data and complete the pending request + * + * @since S60 v4.0 + * @param aSignalCode The event code + * @param aEventData The event data + * @param aPos The event data position. if -1, then append to the end. + * @return ETrue if OK. + */ + TBool CompletePendingRequestL(TInt aSignalCode,const TDesC& aEventData, + int aPos = -1); + + TInt HandleAppInfoChange(const RMessage2& aMessage); + TInt HandleAppInfoChangeL(const RMessage2& aMessage); + /** + * Build the event buf to send to client. + * It checks whether we can combine several events data together to send in one round. + * + * @since S60 v5.0 + * @return The number of combined event. -1 if there is no memory to build data buffer. + */ + TInt BuildEventData(); + + /** + * Remove the given number of event data + * + * @since S60 v5.0 + * @param aNum The number of events to be remvoed. + */ + void RemoveEventDatas(TInt aNum); + + /** + * Send the event data via the given message. + * + * @since S60 v5.0 + * @return KErrNone if succefully, otherwise returns the length needed for msg buf. + */ + TInt SendEventData(const RMessage2& aMessage, const TDesC& aData); +private: // Data + + /** + * Reference to PENINPUT server + */ + CPeninputServer& iPenInputSvr; + + /** + * Each client can have one pending request which is issued with function + * RequestMessageNotification and is signalled when the client has to switch + * FEP or launch help application. Pointer not owned. + */ + RMessage2 iPendingRequest; + + /** + * Flag to indicate whether client has issued a notification request. + */ + TBool iObserverActive; + + /** + * Id of the client thread for debugging purposes + */ + TInt iClientId; + + /** + * Delayed command count for this session + */ + TInt iDelayedCmd; + + /** + * The pen ui type to be monitored + */ + TInt iRegistedPenUiType; + + /** + * event code array + */ + RArray iSignalCodeArray; + + /** + * session data buffer + * Own + */ + RPointerArray iDataBuf; + + RBuf iCombinedEventBuf; + TInt iCombinedMsgNum; + + TInt iCombinedEventId; + + TProcessId iClientProcess; + + HBufC* iAppInfo; + + TPeninputAppInfo iAppInfoType; + TInt iDisabledUiType; + TBool iDsaEverHappened; + }; +#endif //C_CPENINPUTSESSION_H + +inline TBool CPeninputServerSession::DsaEverHappened() const + { + return iDsaEverHappened; + } +// End of File