/*
* 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 <AknFepGlobalEnums.h>
#include <peninputlayout.h>
#include <peninputlayoutplugininterface.h>
#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