textinput/peninputgenericitut/inc/peninputgenericitutdatamgr.h
changeset 0 eb1f2e154e89
child 5 a47de9135b21
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputgenericitut/inc/peninputgenericitutdatamgr.h	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,430 @@
+/*
+* 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:  drop-down list control
+*
+*/
+
+
+#ifndef C_GENERICITUTDATAMGR_H
+#define C_GENERICITUTDATAMGR_H
+
+#include <e32base.h>
+#include <PtiDefs.h>
+#include <AknLayout2Def.h>
+
+#include "peninputgenericitutpropertysubscriber.h"
+#include "peninputgenericitutdata.h"
+
+class CPtiEngine;
+class CFont;
+class MItutLayoutContext;
+class CGenericItutWindowManager;
+
+extern const TInt KInvalidResId;
+extern const TInt KMaxPredictCandCnt;
+extern const TInt KInvalidImMode;
+const TInt KMaxFileLength = 80;
+
+
+class CGenericItutDataMgr : public CBase
+    {
+public:    
+    /**
+     * struct SItem
+     * Choice list item data structure.
+     * 
+     */
+    struct TMenuItem
+        {
+        /*
+         * Command of choice list item.
+         */
+        TInt iCommand;
+
+        /*
+         * Title of choice list item.
+         */
+        TBuf<100> iText;
+        };    
+public:
+    static CGenericItutDataMgr* NewL(MItutLayoutContext* aLayoutContext, CPtiEngine* aPtiEngine );
+
+    ~CGenericItutDataMgr();
+
+    void AddSubscriber(MItutPropertySubscriber* aSubscriber);
+
+    // should be called by owner when initialize data manager, and when SizeChanged
+    void ReadLafInfo();
+
+    void SetLanguageL(TInt aLanguage);
+
+    void SetInputModeL(TInt aMode);
+
+    void SetCase(TInt aCase);
+
+    TAny* RequestData(TInt aDataType);
+
+    inline CPtiEngine* PtiEngine();
+
+    // if there is need to change keypad layout, aKeypadResId: new keypad resource id
+    void NotifyChangeControlLayout(MItutPropertySubscriber::TItutProperty aPropertyName, 
+                                   TInt aCtrlResId);
+
+    inline TInt InputLanguage();
+	inline TBool IsValidLanguage(TInt aLanguage);
+    inline TInt InputMode();
+    
+    inline TInt TextCase();
+
+    inline TBool IsLandScape();
+    
+    inline TBool IsSpellMode();
+
+    TBool IsExistPlusChar();
+    inline void SetSpellMode(TBool aSpellMode);
+    
+    inline void SetIndicatorData(TFepIndicatorInfo &aIndicatorData);
+    inline TFepIndicatorInfo IndicatorData();
+    
+
+    inline void SetLatinOnly( TBool aLatinOnly );
+
+	void SetUpdate(TBool aNeedUpdate);
+	TBool IsUpdate() const;
+    // when user press navi-next button on dropdownlist, there is need to 
+    // retrieve next page candidate
+    TInt GetNextPageCandidateL(RPointerArray<HBufC>& aList);
+
+    TBool NextPageCandidateExist();
+
+    void ClearChnCandidates(TInt aCmd);
+
+    TInt KeypadResourceId();
+    
+    TBool IsChinese();
+    TBool IsKorean(); // tp teleca addon
+    TBool IsHindi();
+    TBool IsThai();
+
+    // Is Right to Left language
+    TBool IsRtoLLanguage();
+    TBool IsRtoLLanguage( TInt aLanguage );    
+    TBool IsLangDirectionSwitch() const;
+    inline void SetLangDirectionSwitch( TBool aIsChange );
+        
+    void SetTextAlignment();
+    
+    void SetIcfTextAlignment(TInt aAlignment);
+    
+    void SetNumericKeymap( const TInt aKeymap );
+    
+    void SetNumericKeymapData( TInt* aKeymapData );
+    
+    inline TBool IsCharFlagChanged();
+    
+    inline void SetNumericOnly( TBool aIsNumberOnly );
+    
+    inline TBool IsNumericOnly() const;
+	
+    TMenuItem* GetMenuItem(TInt aCommand); 
+    	
+	TPoint iSelectionTl;
+    TSize iSelectionItemSize;
+    TInt iSelectionItemMargin;
+    TInt iSelectionHorMargin;
+    TInt iSelectionVerMargin;
+    TSize iSelectionNaviSize;
+    TSize iSelectionNaviInnerSize;
+    TAknTextLineLayout iSelectionTextLine;
+    TAknTextLineLayout iSelectionPageTextLine;
+    
+    TInt iIcfTextLeftMargin;
+	TInt iIcfTextRightMargin;
+	TInt iIcfTextTopMargin;
+	TInt iIcfTextBottomMargin;
+	TInt iIcfTextLineSpaceMargin;
+	TInt iIcfTextHeight;
+	
+	TInt iIcfTextLeftMarginCn;
+	TInt iIcfTextRightMarginCn;
+	TInt iIcfTextTopMarginCn;
+	TInt iIcfTextBottomMarginCn;
+	TInt iIcfTextLineSpaceMarginCn;
+	TInt iIcfTextHeightCn;
+	
+	TRect iShiftIconRect;
+private:
+    CGenericItutDataMgr(MItutLayoutContext* aLayoutContext, CPtiEngine* aPtiEngine );
+
+    void ConstructL();
+
+    void NotifySubscriber( MItutPropertySubscriber::TItutProperty aPropertyName, 
+                           const TDesC& aValue);
+
+    // return current script index
+    TInt GetConfigResFileName(TInt aLang);
+    
+    // return index in aArray
+    TInt FindLang(const TInt* aArray, TInt aEndIdx, TInt aLang);
+    
+    static const TDesC& ResFileExtByScriptIdx(const TScriptExtIndex aIndex);
+
+    // whether both of aMode1 & aMode2 are chinese mode, or both of them are western mode
+   
+    void CalWesternIndicator();
+    
+    TInt ChineseKeypadResourceId();
+    
+    TInt HindiKeypadResourceId();
+    TInt KoreanKeypadResourceId();
+    
+private: // data member
+    RPointerArray<MItutPropertySubscriber> iSubscriberList;
+    CPtiEngine* iPtiEngine;
+    TInt iLanguage;
+    TInt iInputMode;
+    TInt iCase;
+
+    TSize iScreenSize;
+
+    // offset of layout, compare to screen
+    TPoint iLayoutOffset;
+    TRect iLayoutRect;
+
+    TRect iIcfWesRect;
+    TRect iIcfChnRect;
+    CFont* iIcfFont;
+    CFont* iIcfFontCn;
+    TInt iIcfTextAlignment;
+
+    TRect iBackspaceRect;
+    TRect iBackspaceInnerRect;
+    TRect iBackspaceCnRect;
+    TRect iBackspaceInnerCnRect;
+    TRect iSwitchRect;
+    TRect iSwitchInnerRect;
+    TRect iSwitchCnRect;
+    TRect iSwitchInnerCnRect;
+    TRect iArrowLeftRect;
+    TRect iArrowLeftInnerRect;
+    TRect iArrowLeftCnRect;
+    TRect iArrowLeftInnerCnRect;
+    TRect iArrowRightRect;
+    TRect iArrowRightInnerRect;
+    TRect iArrowRightCnRect;
+    TRect iArrowRightInnerCnRect;
+    TRect iArrowUpRect;
+    TRect iArrowDownRect;  
+    TRect iArrowUpInnerRect;
+    TRect iArrowDownInnerRect;
+    
+
+    TRect iImIndicatorWesRect;
+    TRect iCalindwesternRect;
+    TRect iImIndiOuterRect;
+    TRect iImIndiOuterRectCn;
+    TRect iImIndicatorChnRect;
+
+    TRect iSendRect;
+    TRect iDisconnRect;
+
+    TRect iKeypadRect;  
+    TRect iKeypadRectCn;
+    TRect iKeypadRectQuery;
+    RArray<TRect> iKeypadCellRects;
+    RArray<TRect> iKeypadCellRectsCn;
+    RArray<TRect> iKeypadCellRectsQuery;
+	
+    // properties of candidate list
+    TInt iCandsUnitWidth;
+    TInt iCandsUnitHeight;
+    TInt iCandsHorizontalMargin;
+    TInt iCandsVerticalMargin;
+    TInt iCandsNaviWidth;
+    TInt iCandsSpinBtnHeight;    
+    TPoint iCandsSpellLTPos;
+    TPoint iCandsLTPos;
+    TPoint iCandsPuncLTPos;
+    CFont* iCandsFont;
+    TInt iCandsTextMargin;
+    TRgb iCandsTextColor;    
+
+
+
+    TRect iSpellRect;
+    CFont* iSpellFont;
+    TRgb iSpellTextColor;
+
+    TAknTextLineLayout iVkAlphaText1;
+    TAknTextLineLayout iVkAlphaText2;
+    TAknTextLineLayout iVkAlphaText3;
+    TAknTextLineLayout iVkNumText;
+    
+    // Layout for Thai
+    TAknTextLineLayout iVkAlphaText1ForThai;
+    TAknTextLineLayout iVkAlphaText2ForThai;
+    TAknTextLineLayout iVkAlphaText3ForThai;
+
+    // resource id for generic itut resource file
+    TInt iCommonResId;
+    TInt iConfigResId;
+
+    TInt iAvkonResId;
+    
+    // not own
+    MItutLayoutContext* iLayoutContext;
+
+    // chinese related candidates
+    RPointerArray<HBufC> iCandidates;
+    RPointerArray<HBufC> iPuncCandidates;
+
+    TRect iOptionsRect;
+    TRect iCloseRect;
+    TRect iCloseInnerRect;
+    TRect iOptionInnerRect;
+    TRect iSpellIndiRect;
+    TRect iOptionsRectCn;
+    TRect iCloseRectCn;    
+    TRect iCloseInnerRectCn;
+    TRect iOptionInnerRectCn;
+    
+    // preview bubble
+    TRect iPreviewWndRect;
+    TRect iPreviewWndInnerRect;
+    CFont* iBubbleFont;
+	TAknTextLineLayout iPreviewWndText;
+
+    TBuf<KMaxFileLength> iResourceFilename;
+    TBool iLangCaseSensitive;
+    TInt iCurrentScriptIdx;
+
+    TBool iLandScape;
+    TBool iSpellMode;
+    
+    // spell popup window data
+    TRect iSpellQueryPaneRect;
+    TRect iSpellICFRect;
+    TRect iSpellClrRect;
+    TRect iSpellClrInnerRect;
+    TRect iOkRect;
+    TRect iCancelRect;
+    TRect iSpellEditIndicator;
+    TAknTextLineLayout iBtnTextFormat;
+    TAknTextLineLayout iBtnTextFormat1; 
+    TFepIndicatorInfo iIndicatorData; 
+    
+    RPointerArray<TMenuItem> iMenuItemList;
+
+    TBool iNeedUpdate;
+    TBool iLatinOnly;
+	
+	TBool iIsLangDirectionSwitch;    
+	
+	TInt iNumericKeymap;
+	HBufC* iNumericKeymapData;
+	TBool iExistPlusChar;
+	TBool iPlusCharFlagChanged;
+	TBool iNumberOnly;
+
+    };
+
+inline CPtiEngine* CGenericItutDataMgr::PtiEngine()
+    {
+    return iPtiEngine;
+    }
+    
+inline TInt CGenericItutDataMgr::InputMode()
+    {
+    return iInputMode;
+    }
+    
+inline TInt CGenericItutDataMgr::InputLanguage()
+    {
+    return iLanguage;
+    }
+
+inline TInt CGenericItutDataMgr::TextCase()
+    {
+    return iCase;
+    }
+
+inline TBool CGenericItutDataMgr::IsLandScape()
+    {
+    return iLandScape;
+    }
+
+inline TBool CGenericItutDataMgr::IsSpellMode()
+    {
+    return iSpellMode;
+    }
+
+inline void CGenericItutDataMgr::SetSpellMode(TBool aSpellMode)
+    {
+    iSpellMode = aSpellMode;
+    }
+    
+inline void CGenericItutDataMgr::SetIndicatorData(TFepIndicatorInfo &aIndicatorData)
+    {
+    iIndicatorData.iIndicatorImgID = aIndicatorData.iIndicatorImgID;
+    iIndicatorData.iIndicatorMaskID = aIndicatorData.iIndicatorMaskID;
+    iIndicatorData.iIndicatorTextImgID = aIndicatorData.iIndicatorTextImgID;
+    iIndicatorData.iIndicatorTextMaskID = aIndicatorData.iIndicatorTextMaskID;
+    }
+    
+inline TFepIndicatorInfo CGenericItutDataMgr::IndicatorData()
+    {
+    return iIndicatorData;
+    } 
+    
+
+inline void CGenericItutDataMgr::SetLatinOnly( TBool aLatinOnly )
+    {
+    iLatinOnly = aLatinOnly;
+    } 
+
+inline TBool CGenericItutDataMgr::IsValidLanguage(TInt aLanguage)
+	{
+	return (aLanguage != ELangTest && aLanguage != ELangNone);	
+	}
+	
+inline void CGenericItutDataMgr::SetLangDirectionSwitch( TBool aIsChange )
+	{
+	iIsLangDirectionSwitch = aIsChange;
+	}
+
+inline TBool CGenericItutDataMgr::IsCharFlagChanged()
+    {
+    if( iExistPlusChar != IsExistPlusChar() )
+    	{
+    	iExistPlusChar = IsExistPlusChar();
+        iPlusCharFlagChanged = ETrue;
+    	}
+    else
+    	{
+        iPlusCharFlagChanged = EFalse;
+    	}
+    return iPlusCharFlagChanged;
+    }
+
+inline void CGenericItutDataMgr::SetNumericOnly( TBool aIsNumberOnly )
+	{
+	iNumberOnly = aIsNumberOnly;
+	}
+
+inline TBool CGenericItutDataMgr::IsNumericOnly() const
+	{
+	return iNumberOnly;
+	}
+
+#endif // C_GENERICITUTDATAMGR_H