diff -r 000000000000 -r eb1f2e154e89 textinput/peninputvkbcn/inc/peninputvkblayout.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputvkbcn/inc/peninputvkblayout.h Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,474 @@ +/* +* Copyright (c) 2002-2005 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: vkb layout +* +*/ + + +#ifndef C_CAKNFEPVKBLAYOUT_H +#define C_CAKNFEPVKBLAYOUT_H + +// INCLUDES +#include +#include +#include +#include "peninputvkblayoutcontext.h" +#include "peninputcmdparam.h" + +/** class forward decalaration */ +class CAknFepVkbDataMgr; +class CAknFepVkbUiStateMgr; +class CAknFepVkbWindow; +class CPtiEngine; + +/** + * peninputvkbcn layout interface implemtation + * + * @lib peninputvkbcn.lib + * @since S60 v3.2 + */ +class CAknFepVkbLayoutImp : public CFepUiLayoutInterface + { +public: + + /** + * Symbian constructor. + * + * @since S60 v3.2 + * @param aInitParams Init data for layout + * @return Pointer to created CAknFepHwrBxLayoutImp object + */ + static CAknFepVkbLayoutImp* NewL(TAny* aInitParams); + + + static CAknFepVkbLayoutImp* NewFsqL( TAny* aInitParams ); + + /** + * destructor. + * + * @since S60 v3.2 + * @return None + */ + virtual ~CAknFepVkbLayoutImp(); + +//from CFepUiLayoutInterface + + /** + * From CFepUiLayoutInterface. + * Handle layout command event + * + * @since S60 v3.2 + * @param aLayoutOwner The layout owner + * @param aData The data for creating layout + * @return Pointer to created CFepUiLayout object + */ + CFepUiLayout* CreateFepUiLayoutL(MLayoutOwner* aLayoutOwner,const TAny* aData); + +private: + + /** + * C++ default constructor + * + * @since S60 v3.2 + * @return None + */ + CAknFepVkbLayoutImp(); + + /** + * Symbian second-phase constructor + * + * @since S60 v3.2 + * @param aIsFsq Is Full screen qwert mode + * @return None + */ + void ConstructL( TBool aIsFsq ); + +private:// data + TBool iIsFsq; + }; + +/** + * peninputvkbcn layout + * + * @lib peninputvkbcn.lib + * @since S60 v3.2 + */ +class CAknFepVkbLayout : public CFepUiLayout, + public MAknFepVkbLayoutContext + { + +public: + + /** + * Symbian constructor. + * + * @since S60 v3.2 + * @param aInitData Init data for layout + * @return Pointer to created CAknFepHwrBxLayout object + */ + static CAknFepVkbLayout* NewL(MLayoutOwner* aLayoutOwner, const TAny* aInitData, TBool aIsFsq); + + /** + * destructor. + * + * @since S60 v3.2 + * @return None + */ + virtual ~CAknFepVkbLayout(); + + /** + * Get data manager. + * + * @since S60 v3.2 + * @return The data manager + */ + CAknFepVkbDataMgr* DataMgr() const; + + /** + * Get vkb window. + * + * @since S60 v3.2 + * @return The vkb window + */ + CAknFepVkbWindow* Window() const; + +//from CFepUiLayout + + /** + * From CFepUiLayout. + * Handle layout command event + * + * @since S60 v3.2 + * @param aCmd Command Id. + * @param aData Data for command. + * @return Errors when return value small than 0. + */ + TInt HandleCommand(TInt aCmd, TUint8* aData); + + /** + * From CFepUiLayout. + * Inform layout the size changing event + * + * @since S60 v3.2 + * @param pData The event data. + * @return KErrNone if successfully size changing. + */ + TInt SizeChanged(const TAny* pData); + + /** + * From CFepUiLayout. + * Handle the event from control + * + * @since S60 v3.2 + * @param aEventType The event type + * @param aCtrl The sender + * @param aEventData The event data. + * @return None + */ + void HandleControlEvent(TInt aEventType, CFepUiBaseCtrl* aCtrl, const TDesC& aEventData); + + /** + * From CFepUiLayout. + * Handle editor text coming + * Called by animation dll when app editor text is coming. + * If a ui layout has a editor area, it must implements this function to get the text + * + * @since S60 v3.2 + * @param aTotalTextLen The total editor text len + * @param aTextStartPos The position of the selection in whole editor text + * @param aCursolSel The cursor selection in the editor + * @param aText The text sent by fep. + * @return KErrNone is operation succeeded. + */ + TInt OnAppEditorTextComing( const TFepInputContextFieldData& aData); + + /** + * From CFepUiLayout. + * Handle raw event key + * + * @since S60 v3.2 + * @param aData the key raw event data + * @return ETrue if the key was handled, otherwise EFalse + */ + TBool HandleRawKeyEventL(const TRawEvent& aKeyEvent); + + /** + * From CFepUiLayout + * Get the layout type, vkb or hwr. It's now similar to LayoutType which defines in + * another interface. + * + * @since S60 v3.2 + * @return The layout type + */ + TInt PenInputType(); + + void SetPositionFromOutside(const TPoint& aNewPos); + + void HandleAppInfoChange(const TDesC& aInfo, + TPeninputAppInfo aType); + +//from MAknFepVkbLayoutContext + + + /** + * Send event to vkb window + * + * @since S60 v3.2 + * @param aEventType The event type + * @param aCtrl The sender + * @param aEventData The event data. + * @return None + */ + void SendEventToVkbControl(TInt aEventType, CFepUiBaseCtrl* aCtrl, + const TDesC& aEventData = KNullDesC); + + /** + * Request data from data provider + * + * @since S60 v3.2 + * @param aDataType The data request + * @return The data you request + */ + TInt RequestData(TAknFepDataType aDataType); + + /** + * Get resource utils + * + * @since S60 v3.2 + * @param aEventType Event type + * @param aData Event data + * @return The resource utils + */ + void SetData(TAknFepDataType aDataType,TInt aData); + + /** + * Sendkey to fep + * + * @since S60 v3.2 + * @param aEventType Event type + * @param aEventData Event data + * @return None. + */ + void Sendkey(TInt aEventType,const TDesC& aEventData = KNullDesC); + + /** + * Force edit gain focus + * + * @since S60 v3.2 + * @param aWhichEdit The control id which will get focus + * @return None. + */ + void ForceEditGainFocus(TInt aWhichEdit); + + /** + * Reset all status in layout + * + * @since S60 v3.2 + * @return None. + */ + void Reset(); + + /** + * Get the length in composition field + * + * @since S60 v3.2 + * @return The string length in composition field + */ + TInt CompositionFieldStringLength(); + + /** + * Get candidates + * + * @since S60 v3.2 + * @param aInputString the input string sent to engine + * @param aIsPredictive The flag showing predictive or not + * @param aForNextPage Is this for next page candidate + * @return The canidates count + */ + TInt GetCandidatesL(const TDesC& aInputString, + const TBool aIsPredictive, + TBool aForNextPage = EFalse); + + /** + * Clear trigger string + * + * @since S60 v3.2 + * @return None + */ + void ClearTriggerString(); + + /** + * Set current range + * + * @since S60 v3.2 + * @param aRange The range need to set + * @param aNeedSave The flag need to save or not + * @return None. + */ + void SetCurrentRange(TInt aRange, TBool aNeedSave = EFalse, TBool aNotify = EFalse); + + /** + * SemiTransparencyRequired. Tell whether this layout require transparency. + * This is to save memory used in mask bitmap. If transparency not deeded, + * We use black-white bitmap. + * + * @since S60 v3.2 + * @return ETrue if layout require transparency, otherwise EFalse. + */ + TBool SemiTransparencyRequired(); +private: + + /** + * C++ default constructor + * + * @since S60 v3.2 + * @return None + */ + CAknFepVkbLayout(MLayoutOwner* aLayoutOwner); + + /** + * Symbian second-phase constructor + * + * @since S60 v3.2 + * @param aInitData Init data of layout + * @return None + */ + void ConstructL(const TAny* aInitData, TBool aIsFsq); + + /** + * Change input language + * + * @since S60 v3.2 + * @param aLangID The language id you want to change to + * @return None + */ + void ChangeInputLanguage(TInt aLangID); + + /** + * do when case change + * + * @since S60 v3.2 + * @return None. + */ + void DoCaseChange(TInt aCase); + + /** + * Handle focus gained event + * + * @since S60 v3.2 + * @param aCtrl The sender + * @param aEventData The event data. + * @return None + */ + void HandleFocusGained(CFepUiBaseCtrl* aCtrl, const TDesC& aEventData); + + /** + * From CFepUiLayout. + * Test whether the position is valid. + * This is used to test the target position when draging controls to some place + * + * @since S60 v4.0 + * @param aRect The rect to be checked. + * @param aDragbar The dragbar being dragged + * @param aVInfo The valid information in vertial dirtection. ETrue is vertical + * moving is valid.It's only used when aRect is not valid but moving in + * vertical direction is valid. + * @param aHInfo The valid information in horizontal dirtection. ETrue is + * horizontal moving is valid.It's only used when aRect is not + * valid but moving in vertical direction is valid. + * @param aFlag ETrue if whole layout is moving, otherwise, only components moving + * @return ETue if aRect is a valid position. Otherwise, EFalse. + */ + TBool IsValidDestination(const TRect& aRect, + CDragBar* aDragBar, + TBool& aVInfo,TBool& aHInfo, + TBool aFlag); + + void HandleMergedBtnClicked( TInt aCase ); + + /** + * Handle show tooltip command + * + * @since S60 v5.0 + * @param aData pointer is sent from FEP, point to a TPtrC + * @return None + */ + void HandleShowTooltipOnFSQCmdL( TUint8* aData ); + + /** + * Handle show candidate list command + * + * @since S60 v5.0 + * @param aData pointer is sent from FEP, point to a TPtrC + * @return None + */ + void HandleShowCandidateListOnFSQCmdL( TUint8* aData ); + + /** + * Read text stored in a block of memory into HBufC + * + * @since S60 v5.0 + * @param aData aStartPtr the starting address of a block of memory with a + * string in it + * @param aLength The length of the string + * @return pointer of a HBufC storing the string in it + */ + HBufC* ReadTextInfoHBufCL( const TUint16* aStartPtr, TInt aLength ); +private: //data + + TInt iLayoutType; + /** + * The data manager + * Own + */ + CAknFepVkbDataMgr* iDataMgr; + + /** + * The ui state manager + * Own + */ + CAknFepVkbUiStateMgr* iUiStateMgr; + + /** + * The vkb window + * Own + */ + CAknFepVkbWindow* iVkbWindow; + + /** + * The flag showing need to deal focus gained or not + * Own + */ + TBool iNeedDealFocusGained; + + /** + * The vkb resource id + */ + TInt iResId; + + /** + * The ptiengine + * Not own + */ + CPtiEngine* iPtiEngine; + + /* + * Indicate if ITI is enabled. + */ + TBool iITIEnabled; + }; + +#endif // C_CAKNFEPVKBLAYOUT_H + +//End Of File