/*
* Copyright (c) 2009 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 of LAF manager.
*
*/

#ifndef C_PENINPUTFINGERHWRLAFMANAGER_H
#define C_PENINPUTFINGERHWRLAFMANAGER_H

/**
* Class  PeninputHwrfscnLAFManager
*  
* Wrapper of L&F data.
*
* @lib peninputfingerhwr.lib
* @since S60 v5.0
*/
class CPeninputFingerHwrLAFManager : public CBase 
    {
public:
    /**
     * Symbian constructor.
     *
     * @since S60 v5.0
     * @return Pointer to created object.
     */    
    static CPeninputFingerHwrLAFManager* NewL();
    
    /**
     * Symbian constructor.
     *
     * @since S60 v5.0
     * @return Pointer to created object.
     */  
    static CPeninputFingerHwrLAFManager* NewLC();
    
    /**
     * standard c++ destructor.
     *
     * @since S60 v5.0
     * @return None
     */    
    ~CPeninputFingerHwrLAFManager();
    

   
public:
    /**
     * read laf data.
     *
     * @since S60 v5.0
     * @return None
     */    
    void ReadLafInfo();
    
    /**
     * get screen orientation.
     * 
     * @since S60 v5.0
     * @return ETrue if is landscape.
     */
    TBool IsLandscape();

    /**
     * get rect of layout.
     * 
     * @since S60 v5.0
     * @return rect of layout.
     */    
    TRect LayoutRect();
    
    /**
     * get rect of specified control.
     * 
     * @since S60 v5.0
     * @param aCtrlId specifies control id.
     * @return rect of specified control.
     */
    TRect CtrlRect( TInt aCtrlId );
    
public: // icf
    /**
     * get rect of ICF control.
     * 
     * @since S60 v5.0
     * @return rect of icf.
     */      
    TRect IcfRect();
    
    /**
     * get left margin of icf.
     * 
     * @since S60 v5.0
     * @return left margin of icf.
     */
    TInt IcfLeftMargin();
    
    /**
     * get Right margin of icf.
     * 
     * @since S60 v5.0
     * @return Right margin of icf.
     */    
    TInt IcfRightMargin();
    
    /**
     * get top margin of icf.
     * 
     * @since S60 v5.0
     * @return top margin of icf.
     */    
    TInt IcfTopMargin();
    
    /**
     * get bottom margin of icf.
     * 
     * @since S60 v5.0
     * @return bottom margin of icf.
     */    
    TInt IcfBottomMargin();
    
    /**
     * get line spacing of icf.
     * 
     * @since S60 v5.0
     * @return line spacing of icf.
     */      
    TInt IcfLineSpaceMargin();
  
    /**
     * get font of icf.
     * 
     * @since S60 v5.0
     * @return font of icf.
     */       
    CFont* IcfFont();
    
    /**
     * get text height of icf.
     * 
     * @since S60 v5.0
     * @return text height of icf.
     */       
    TInt IcfTextHeight();
    
public: //buttons
    
    /**
     * get inner padding of buttons.
     * 
     * @since S60 v5.0
     * @return inner padding of buttons.
     */      
    TSize ButtonInnerPadding();
    
public: //num pad
    /**
     * get cell size of virtual numpad.
     * 
     * @since S60 v5.0
     * @return cell size of virtual numpad.
     */    
    TRect VirtualNumpadCellSize();
        
    /**
     * get text layout of virtual numpad.
     * 
     * @since S60 v5.0
     * @return a TAknTextLineLayout object to layout cell text.
     */
    TAknTextLineLayout NumpadKeyTxtLayout();
    
public: //sct pad
  
    /**
     * get row count of virtual sctpad.
     * 
     * @since S60 v5.0
     * @return row count of virtual sctpad.
     */      
    TInt VirtualSctpadRowCount();
    
    /**
     * get column count of virtual sctpad.
     * 
     * @since S60 v5.0
     * @return column count of virtual sctpad.
     */        
    TInt VirtualSctpadColCount();
    
    /**
     * get cell size of virtual sctpad.
     * 
     * @since S60 v5.0
     * @return cell size of virtual sctpad.
     */     
    TRect VirtualSctpadCellSize();
    
    /**
     * Get cell size of Space and Enter
     * 
     * @since S60 v5.0
     * @return cell size of virtual sctpad.
     */     
    TRect FixVirtualSctpadCellSize();
    
    /**
     * get cell rect of virtual sctpad.
     * 
     * @since S60 v5.0
     * @param aArrayRects a TRect array to receive cell rect.
     * @return none.
     */     
    void GetVirtualKeyRects( RArray<TRect>& aArrayRects );
    
    /**
     * get cell rect of Space and Enter.
     * 
     * @since S60 v5.0
     * @param aArrayRects a TRect array to receive cell rect.
     * @return none.
     */     
    void GetFixVirtualKeyRects( RArray<TRect>& aArrayRects );
    
    
    /**
     * get text layout of virtual sctpad.
     * 
     * @since S60 v5.0
     * @return a TAknTextLineLayout object to layout cell text.
     */    
    TAknTextLineLayout SctpadKeyTxtLayout();
    
    /**
     * Get text layout about Space and Enter
     * 
     * @since S60 v5.0
     * @return a TAknTextLineLayout object to layout cell text.
     */    
    TAknTextLineLayout FixSctpadKeyTxtLayout();
    
    /**
     * get preview bubble rect.
     * 
     * @since S60 v5.0
     * @return a TRect object to preview bubble rect.
     */    
    TRect PreviewBubbleRect();
    
    /**
     * get preview bubble inner rect.
     * 
     * @since S60 v5.0
     * @return a TRect object to preview bubble inner rect.
     */    
    TRect PreviewBubbleInnerRect();
    
    /**
     * get preview bubble font.
     * 
     * @since S60 v5.0
     * @return a CFont pointer to preview bubble font.
     */    
    const CFont* PreviewBubbleFont();
    
    /**
     * get preview bubble text layout.
     * 
     * @since S60 v5.0
     * @return a TAknTextLineLayout object to preview bubble text layout.
     */    
    TAknTextLineLayout PreviewBubbleTextLayout();
    
public: // candidate list
    
    /**
     * get width unit of candidate list.
     * 
     * @since S60 v5.0
     * @return width unit of candidate list.
     */      
    TInt CandidateUnitWidth();
    
    /**
     * get height unit of candidate list.
     * 
     * @since S60 v5.0
     * @return height unit of candidate list.
     */ 
    TInt CandidateUnitHeight();  
    

    /**
     * get horizontal margin of candidate list.
     * 
     * @since S60 v5.0
     * @return horizontal margin of candidate list.
     */    
    TInt CandidateHorizontalMargin();

    /**
     * get vertical margin of candidate list.
     * 
     * @since S60 v5.0
     * @return vertical margin of candidate list.
     */      
    TInt CandidateVerticalMargin();

    /**
     * get top-left position of candidate list.
     * 
     * @since S60 v5.0
     * @return top-left position of candidate list.
     */     
    TPoint CandidateLTPos();

    /**
     * get top-left position of predictive list.
     * 
     * @since S60 v5.0
     * @return top-left position of predictive list.
     */     
    TPoint PredictiveLTPos();
    
    /**
     * get font of candidate list.
     * 
     * @since S60 v5.0
     * @return font of candidate list.
     */     
    const CFont* CandidateFont();
    
private:
    
    /**
     * C++ constructor
     *
     * @since S60 v5.0
     * @return None
     */    
    CPeninputFingerHwrLAFManager();
    
    /**
     * Symbian second-phase constructor
     *
     * @since S60 v5.0
     * @return None
     */    
    void ConstructL();

    
private: //datas
    
    TBool iIsLandscape;
    
    // constrols position
    TRect iRectIcf;
    TRect iRectWritingBox;
    TRect iRectNumpad;
    TRect iRectSctpad;
    TRect iRectFixSctpad;
    TRect iRectSpase;
    TRect iRectEnter;
        
    TRect iRectBtnClose;
    TRect iRectBtnRangeChn;
    TRect iRectBtnRangeEng;
    TRect iRectBtnRangeNum;
    TRect iRectBtnRangeSmb;
    TRect iRectBtnBackspace;
    TRect iRectBtnArrowLeft;
    TRect iRectBtnArrowRight;
    TRect iRectBtnArrowUp;
    TRect iRectBtnArrowDown;
    TRect iRectBtnOption;
    TRect iRectBtnImeSwitch;
    TRect iRectBtnSctPage;
    
    TSize iSizeBtnPadding;
    TSize iSizeNumpadCell;
    
    TInt iSctpadRowCount;
    TInt iSctpadColCount;
    TSize iSizeSctpadCell;
    TSize iSizeFixSctpadCell;

    TRect iLayoutRect;
    TPoint iLayoutOffset;
    
	TInt iIcfTextLeftMarginCn;
	TInt iIcfTextRightMarginCn;
	TInt iIcfTextTopMarginCn;
	TInt iIcfTextBottomMarginCn;
	TInt iIcfTextLineSpaceMarginCn;
	TInt iIcfTextHeightCn;
    TInt iIcfTextAlignment;
    CFont* iIcfFont;
    
    TInt iCandsHorizontalMargin;
    TInt iCandsVerticalMargin;
    TInt iCandsUnitWidth;
    TInt iCandsUnitHeight;
    TInt iCandsNaviHeight;
    TPoint iCandidateLTPos;
    TPoint iPredictiveLTPos;
    CFont* iCandsFont;
    TInt iCandsTextMargin;
    
    TSize iScreenSize;
    
    RArray<TRect> iSCTrectArray;
    
    // preview bubble
    TRect iPreviewWndRect;
    TRect iPreviewWndInnerRect;
    const CFont* iBubbleFont;
	TAknTextLineLayout iPreviewWndText;
    
    };

#endif // C_PENINPUTFINGERHWRLAFMANAGER_H

// End Of File