textinput/peninputvkbcn/inc/peninputvkbcnlafdatamgr.h
changeset 0 eb1f2e154e89
child 3 f5a1e66df979
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputvkbcn/inc/peninputvkbcnlafdatamgr.h	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,485 @@
+/*
+* 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:  peninput vkb laf manager
+*
+*/
+
+
+#ifndef C_PENINPUTVKBCNLAFDATAMGR_H
+#define C_PENINPUTVKBCNLAFDATAMGR_H
+
+// System includes
+#include <e32base.h>
+#include <w32std.h>
+#include <AknFepGlobalEnums.h>
+// User includes
+
+// Forward decalaration
+
+// laf type definition
+enum TPeninputCnQwtLayoutType
+	{
+	ELayoutNone = -1,
+	ELayout10x3,
+	ELayout11x3,
+	ELayout11x4,
+	ELayout10x3_withCandi,
+	ELayout10x4
+	};
+
+enum TPeninputCnCellType
+	{
+	EVkbCangjieAndPinying,			// 10
+	EVkbStroke,						// 10
+	EVkbZhuyin,		 				// 11 
+	EVkbLatin_Zhuyin,				// 11
+	EVkbLatin,						// 10
+	EVkbAccent,						
+	EVkbNumber,						// 10
+	EVkbNumber_Zhuyin,				// 11
+	EVkbCangjieAndPinying_FSQ,		// 10
+	EVkbStroke_FSQ,					// 10
+	EVkbZhuyin_FSQ,					// 11
+	EVkbLatin_FSQ,					// 10
+	EVkbNumber_FSQ,					// 10
+	EVkbLatin_Zhuyin_FSQ,			// 11
+	EVkbNumber_Zhuyin_FSQ			// 11
+	};
+	
+enum TPeninputCnVkbLafOption
+	{
+	EOptionNone,					// Default option setting	
+	EOption3CellRange = 0x0001,
+	EOptionWithSmily  = 0x0002
+	};
+
+struct TPeninputCnButtonLayoutData
+	{
+	TRect iRect;
+	TRect iInnerRect;
+	};
+	
+struct TPeninputCnKeyLayoutData
+	{
+	TRect iKaypadRect;
+	RArray<TRect> iRects;
+	RArray<TRect> iCharRects;
+	TAknTextLineLayout iTextLayout;
+	const CFont* iFont;
+	};
+
+struct TPeninputCnEntryLayoutData
+	{
+	TRect iRect;
+	TRect iPromptTextRect;
+	TRect iTextRect;
+	const CFont* iPromptTextFont;
+	const CFont* iTextFont;
+	};
+	
+struct TPeninputCnICFConfig
+	{
+	TInt iLeftMargin;
+	TInt iRightMargin;
+	TInt iTopMargin;
+	TInt iTextLineHeight;
+	TInt iLineSpaceMargin;
+	};
+
+
+struct TPeninputCnRangeBarLayoutData
+	{
+	TRect iRect;
+	RArray<TPeninputCnButtonLayoutData> iCellDataArray;
+	};
+	
+struct TPeninputCnSpaceIconLayoutDataEx
+	{
+	TSize iIconOffset;		// The offset to the left and top border of frame
+	TInt  iSideIconWidth; 	// The width of two sizes'subicon
+	};
+
+/*
+* Store LAF data for candidate list
+*/
+struct TPeninputCnCandidateListLayoutData
+    {
+    TSize iSelectionItemSize;    
+    TInt iSelectionHorMargin;
+    TInt iSelectionVerMargin;
+    TSize iSelectionNaviSize;
+    TSize iSelectionNaviInnerSize;
+    TAknTextLineLayout iSelectionTextLine;
+    TAknTextLineLayout iSelectionPageTextLine;
+    const CFont* iFont;
+    };
+
+/*
+* Stroe LAF data for tooltip box
+*/
+struct TPeninputCnTooltipBoxLayoutData
+    {
+    TRect iRect;
+    TAknTextLineLayout iTooltipTextLayout;
+    };
+
+class CPeninputCnQwtLayoutDataInfo : public CBase
+	{
+public:
+	virtual ~CPeninputCnQwtLayoutDataInfo();
+	TPeninputCnButtonLayoutData 	iCloseButton;
+	TPeninputCnButtonLayoutData 	iOptionButton;
+	TPeninputCnEntryLayoutData  	iICF;
+	TPeninputCnButtonLayoutData	iMoveButton;	
+	TPeninputCnButtonLayoutData	iLeftButton;
+	TPeninputCnButtonLayoutData	iRightButton;
+	TPeninputCnButtonLayoutData	iClearButton;
+	TPeninputCnKeyLayoutData		iKeypad;
+	TPeninputCnButtonLayoutData 	iShiftButton;	
+	TPeninputCnRangeBarLayoutData	iRangbar;
+	TPeninputCnButtonLayoutData 	iSmillyButton;
+	TPeninputCnButtonLayoutData	iSpaceButton;
+	TPeninputCnButtonLayoutData	iEnterButton;
+	TPeninputCnButtonLayoutData	iSwitchButton;
+	TRect iTitlebarRect;
+	TRect iClientRect;
+	TRect iQwtRect;
+	TRect iPreviewWndRect;
+	TRect iPreviewWndInnerRect;
+	TAknTextLineLayout iPreviewWndText;
+	CFont* iPreviewFont;
+	TPeninputCnSpaceIconLayoutDataEx iSpaceIconLayout;
+	
+	/*
+	* LAF data for candidate list
+	*/
+	TPeninputCnCandidateListLayoutData iCandidateList;
+	
+	/*
+	* LAF data for tooltip box
+	*/
+	TPeninputCnTooltipBoxLayoutData iTooltipBox;
+	};	
+
+class MPeninputCnLafDataBase
+	{
+public:
+	virtual const TPeninputCnButtonLayoutData& ButtonLayoutData( TInt aButtonID ) const = 0;
+	virtual const TPeninputCnEntryLayoutData& ICFLayoutData() const = 0;
+	virtual const TPeninputCnKeyLayoutData& KeypadLayoutData() const = 0;
+	virtual const TPeninputCnRangeBarLayoutData& RangbarLayoutData() const = 0;
+	
+	virtual const CPeninputCnQwtLayoutDataInfo& QwtLayoutData() const = 0;
+	virtual void SetLayoutType( TInt aLayoutType ) = 0;
+	virtual TInt LayoutType() const = 0;
+	};
+	
+class MPeninputCnLafDataCommon : public MPeninputCnLafDataBase
+	{
+public:
+    virtual ~MPeninputCnLafDataCommon();
+	void  DestoryDataCommon();
+	const TPeninputCnButtonLayoutData& ButtonLayoutData( TInt aButtonID ) const;
+	const TPeninputCnEntryLayoutData& ICFLayoutData() const ;
+	const TPeninputCnKeyLayoutData& KeypadLayoutData() const ;
+	const TPeninputCnRangeBarLayoutData& RangbarLayoutData() const;
+	const CPeninputCnQwtLayoutDataInfo& QwtLayoutData() const;
+	
+	/*
+	* Return layout data for candidate list;
+	*
+	* @return The layout data for candidate list
+	*/	
+	const TPeninputCnCandidateListLayoutData& CandidateListLayoutData() const;
+	
+	/*
+	* Return layout data for tooltip box;
+	*
+	* @return The layout data for tooltip box
+	*/	
+	const TPeninputCnTooltipBoxLayoutData& TooltipBoxLayoutData() const;
+	
+	inline void SetLayoutType( TInt aLayoutType );
+	inline TInt LayoutType() const;
+	inline void SetLafOption( TPeninputCnVkbLafOption aLafOption );
+	inline TPeninputCnVkbLafOption LafOption() const;
+	void ConstructL();
+	TBool IsValid() const;
+protected:
+	void GetTopAndBottomPaneInfo( const TRect& aParentWndRect, 
+								  TInt aLayoutType,
+								  TInt aLayoutParam,
+								  CPeninputCnQwtLayoutDataInfo& aDataInfo );
+	virtual void ReadLafInfoL() = 0;
+	
+	TInt iLayoutType;
+	TPeninputCnVkbLafOption iLafOption;
+	RPointerArray<CPeninputCnQwtLayoutDataInfo> iLayoutDataInfo;
+	}; 
+	
+class CPeninputCnLafDataVKB : public CBase, 
+							public MPeninputCnLafDataCommon
+					
+	{
+public:	
+    static CPeninputCnLafDataVKB* NewL( TInt aLayoutType );
+	static CPeninputCnLafDataVKB* NewLC( TInt aLayoutType );	
+	virtual ~CPeninputCnLafDataVKB();
+	
+protected:
+	CPeninputCnLafDataVKB( TInt aLayoutType );
+
+	void ReadLafInfoL();
+	};
+	
+class CPeninputCnLafDataFSQ : public CBase, 
+							public MPeninputCnLafDataCommon
+
+	{
+public:	
+    static CPeninputCnLafDataFSQ* NewL( TInt aLayoutType );
+	static CPeninputCnLafDataFSQ* NewLC( TInt aLayoutType );
+	virtual ~CPeninputCnLafDataFSQ();
+
+protected:
+	CPeninputCnLafDataFSQ( TInt aLayoutType );
+
+	void ReadLafInfoL();
+	
+private:
+
+    /**
+     * Read LAF data for candidate list 
+     *  
+     * @param aRect the parent window's rect
+     * @return candidate list layout data
+     */	
+	TPeninputCnCandidateListLayoutData ReadLafForCandidateList( const TRect& aRect );
+
+    /**
+     * Read LAF data for tooltip box
+     *  
+     * @param aRect the parent window's rect
+     * @return tooltip box layout data
+     */	
+	TPeninputCnTooltipBoxLayoutData ReadLafForTooltipBox( const TRect& aRect );
+	};	
+	
+/**
+ *  Peninput VKB data management class
+ *  This class manager the data of VKB
+ *  
+ *  @lib peninputgenericvkb.lib
+ *  @since S60 v3.2
+ */
+class CPeninputCnGenericVkbLafMgr : public CBase 
+    {   
+
+public:
+
+    /**
+     * Two-phased constructor
+     *
+     * @since S60 v3.2
+     * @return The pointer to CPeninputCnGenericVkbLafMgr object
+     */
+    static CPeninputCnGenericVkbLafMgr* NewL();
+
+    /**
+     * Two-phased constructor
+     *
+     * @since S60 v3.2
+     * @return The pointer to CPeninputCnGenericVkbLafMgr object
+     */
+    static CPeninputCnGenericVkbLafMgr* NewLC();
+
+    /**
+     * Destructor
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+    virtual ~CPeninputCnGenericVkbLafMgr();
+
+  	/**
+     * ConstructL
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+	void ConstructL();
+	
+	/**
+     * Set layout type
+     *
+     * @since S60 v3.2
+     * @param aLayoutType Layout type index
+     * @return None
+     */
+    void SetInputModeL( TPluginInputMode aInputMode );
+    
+	/**
+     * Get layout type
+     *
+     * @since S60 v3.2
+     * @return Input mode
+     */    
+	TPluginInputMode InputMode() const;
+	
+	/**
+     * Set layout type
+     *
+     * @since S60 v3.2
+     * @param aLayoutType Layout type index
+     * @return None
+     */
+	void SetLayoutType( TPeninputCnQwtLayoutType aLayoutType );
+	
+	/**
+     * Set option ( option change will cause reloading laf )
+     *
+     * @since S60 v3.2
+     * @param aOption option type
+     * @return None
+     */
+     void SetLafOption( TPeninputCnVkbLafOption aOption );
+     TPeninputCnVkbLafOption OptionType() const;
+     
+	/**
+     * Get button laf data
+     *
+     * @since S60 v3.2
+     * @param aButtonID 	button id
+     * @param aOutterRect	button rect
+     * @param aInnerRect	button forground rect
+     * @return None
+     */	
+	void GetButtonRect( TPeninputCommonCtrlID aButtonID, 
+						TRect& aOutterRect,
+						TRect& aInnerRect );
+	
+	/**
+     * Get key laf data
+     *
+     * @since S60 v3.2
+     * @param aColume 		the colume index of the key
+     * @param aRow			the row index of the key
+     * @return Key rect
+     */								
+	void GetKeyRect( TInt aColume, TInt aRow, TRect& aKeyRect, TRect& aCharRect ) const;
+	const CFont* KeyTextFont() const;
+	const TRect& KeypadRect() const;
+	const TRect& ICFRect() const;
+	const CFont* ICFPromptTextFont() const;
+	const CFont* ICFTextFont() const;
+	TAknTextLineLayout KeyTextLayout() const;
+	void GetICFConfig( TPeninputCnICFConfig& aICFConfig );
+	const TRect& EntirePaneRect() const;
+	const TRect& RangbarRect() const;
+	TInt RangbarCellCount() const;
+	void RangbarCellAt( TInt aIndex, TRect& aOutterRect, TRect& aInnerRect );
+	
+	TPeninputCnQwtLayoutType LayoutTypeFromRowsColumns(const TInt aRows, const TInt aColumns);
+	const TRect& TitlebarRect() const;
+	
+	TBool IsValid();
+	const TRect& ClientRect() const;
+	
+	/**
+     * Get gap value for cell calc 
+     *
+     * @since S60 v3.2
+     * @return gap value
+     */		
+	static TSize GetCellSize( TPeninputCnCellType aCellType );
+	
+	/**
+     * Get gap value for cell calc 
+     *
+     * @since S60 v3.2
+     * @return gap value
+     */		
+	TInt CellAidGap( TPeninputCnCellType aCellType ) const;
+	
+	inline void GetPreviewWndRect( TRect& aOutRect, TRect& aInnerRect ) const;
+	inline TAknTextLineLayout PreviewWndText() const;
+	inline CFont* PreviewFont() const;
+	inline TSize GetSpaceIconOffset() const;
+	inline TInt GetSpaceSideIconWidth() const;
+    
+	/**
+     * Return layout data for candidate list
+     *
+     * @return The layout data for candidate list
+     */
+	const TPeninputCnCandidateListLayoutData& CandidateListLayoutData() const;
+	
+	/*
+	* Return layout data for candidate list
+	*
+	* @return The layout data for tooltip box	
+	*/	
+	const TPeninputCnTooltipBoxLayoutData& TooltipBoxLayoutData() const;
+protected:
+
+	/**
+     * Set laf data base type
+     *
+     * @since S60 v3.2
+     * @param aLafData The exact laf data
+     * @return None
+     */
+	void SetLafData( MPeninputCnLafDataBase* aLafData );
+	
+    /**
+     * Constructor
+     *
+     * @since S60 v3.2
+     * @param aContext The layout context
+     * @return None
+     */
+    CPeninputCnGenericVkbLafMgr();
+    
+private:
+	MPeninputCnLafDataCommon* iLafData;
+	TPluginInputMode iInputMode;
+    };
+   
+inline void CPeninputCnGenericVkbLafMgr::GetPreviewWndRect( TRect& aOutRect, 
+                                                            TRect& aInnerRect ) const
+	{
+	aOutRect = iLafData->QwtLayoutData().iPreviewWndRect;
+	aInnerRect = iLafData->QwtLayoutData().iPreviewWndInnerRect;
+	}
+	
+inline TAknTextLineLayout CPeninputCnGenericVkbLafMgr::PreviewWndText() const
+	{
+	return iLafData->QwtLayoutData().iPreviewWndText;
+	}
+	
+inline CFont* CPeninputCnGenericVkbLafMgr::PreviewFont() const
+	{
+	return iLafData->QwtLayoutData().iPreviewFont;
+	}	
+	
+inline TSize CPeninputCnGenericVkbLafMgr::GetSpaceIconOffset() const
+	{
+	return iLafData->QwtLayoutData().iSpaceIconLayout.iIconOffset;	
+	}	
+	
+inline TInt CPeninputCnGenericVkbLafMgr::GetSpaceSideIconWidth() const
+	{
+	return iLafData->QwtLayoutData().iSpaceIconLayout.iSideIconWidth;	
+	}	   
+#endif // C_PENINPUTVKBCNLAFDATAMGR_H