diff -r 000000000000 -r eb1f2e154e89 textinput/peninputgenericitut/inc/peninputgenericitutdatamgr.h --- /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 +#include +#include + +#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& 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 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 iKeypadCellRects; + RArray iKeypadCellRectsCn; + RArray 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 iCandidates; + RPointerArray 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 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 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