diff -r 000000000000 -r eb1f2e154e89 textinput/GSLangPlugin/inc/GSLangModel.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/GSLangPlugin/inc/GSLangModel.h Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,417 @@ +/* +* Copyright (c) 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: Data model for GSLangPlugin. +* +*/ + +#ifndef GSLANGMODEL_H +#define GSLANGMODEL_H + +// INCLUDES +#include "GSLangPlugin.hrh" + +#include +#include +#include +#include +#include +#include +#include +#ifdef RD_INTELLIGENT_TEXT_INPUT +#include +#endif +//class CCommsDatabase; +class CGSLangContainer; + +#ifdef RD_INTELLIGENT_TEXT_INPUT +class CCoeEnv; +#endif + +// CONSTANTS +const TInt KGSLanguageMask = 0x03FF; +const TInt KGSPredTxtFlagDefault = 1; // Default ON +#ifdef RD_INTELLIGENT_TEXT_INPUT +const TInt KGSPredTxtBitMaskDefault = 0xFFFF; +#endif + +// For switching values in SwitchValue() +const TInt KGSSettingOff = 0; + +_LIT( KGSWelcomeNoteImgPath, "c:\\resource\\apps\\welcomeimage.mbm" ); + +// Multitap timer default value +const TInt KGSMultiTapTimerDefault = 1000000; // 1.0sec +// Japanese Special Char Flag default value +const TInt KGSJapaneseSpecialCharFlagDefault = 0x000F; + +/** +* Data model for GSLangPlugin. +* @lib GSLangPlugin.dll +* @since Series60 3.1 +*/ +class CGSLangModel : public CBase, + public MCenRepNotifyHandlerCallback + { + public: // Constructor and destructor + /** + * Two-phased constructor + */ + static CGSLangModel* NewL( CGSLangContainer* aContainer ); + + /** + * Destructor + */ + ~CGSLangModel(); + + public: // Enums + enum TLanguage + { + // Phone language + EGSUiLanguage, + // Writing language + EGSInputLanguage +#ifdef RD_INTELLIGENT_TEXT_INPUT +#ifdef FF_DUAL_LANGUAGE_SUPPORT + // Secondary writing language + ,EGSInputLanguageSecondary +#endif +#endif + }; + + enum TPredictiveType + { + // Japanese predictive + EGSLangJapanese, + // predictive for other (common) languages + EGSLangOther + }; + public: // New + + /** + * Get the list of supported languages from PTIEngine + * @param aInstalledLangCodes array of installed lang codes + * from SysLangUtil + * @param aSeedLanguages array of Pti Language codes + * @param aLanguageNames array for language names + * + * @since 2.6 + */ + void GetLanguagesFromPtiL( + CArrayFix* aInstalledLangCodes, + CArrayFix* aSeedLanguages, + CDesCArray* aLanguageNames ); + + /** + * Display/Input Text Language Selection. + * @param aType Language type (UI/Input) + * Returns language value(Symbian OS value) from HAL, or from CenRep + * in some special cases. + * @return 0: Automatic + * 1: English + * 2: French + * 3. German + * 4. Spanish + * 5. Italian + * 6. Swedish + * 7. Danish + * 8. Norwegian + * 9. Finnish + * 13. Portuguese + * 14. Turkish + * 15. Icelandic + * 16. Russian + * 17. Hungarian + * 18. Dutch + * 25. Czech + * 26. Slovak + * 27. Polish + * 28. Slovenian + * 39. Tagalog + * 42. Bulgarian + * 45. Croatian + * 49. Estonian + * 54. Greek + * 59. Indonesian + * 67. Latvian + * 68. Lithuanian + * 70: Malaysia + * 78. Romanian + * 79. Serbian + * 93: Ukrainian + */ + TInt LanguageL( TLanguage aType ); + + /** + * Set Display/Input Text Language value to HAL and/or CenRep + * @param aType Language type (UI/Input) + * @param aLanguage Symbian OS Value of Display Text Language. + * + * @return ETrue: no errors + * EFalse: an error has occurred + */ + TBool SetLanguageL( TLanguage aType, TInt aLanguage ); + + /** + * Predictive Text Language selection. + * Get setting value from CenRep + * @param aPredictive Japanese/Other + * @return 0: Off + * 1: On + */ + TInt PredictiveOnOff( TPredictiveType aPredictive ); + + /** + * Set Predictive Text Lanuage value to CenRep + * @param aPredictive Japanese/Other + * @param aMode OnOff Value of T9/FEP + * + * @return ETrue: no errors + * EFalse: an error has occurred + */ + TBool SetPredictiveOnOff( TPredictiveType aPredictive, TInt aMode ); + + /* + * Returns Bool value according to predictive dictionary availability. + * PTI Engine used for lang avaibility retrieving + * @return ETrue: no errors + * EFalse: an error has occurred + * @since 2.6 + */ + TBool CheckDictionaryFromPtiL(TInt aLangCode, TBool aCheckEngine = EFalse); + +#ifdef RD_INTELLIGENT_TEXT_INPUT + /* + * Returns Bool value according to predictive dictionary availability. + * PTI Engine used for lang avaibility retrieving + * @return ETrue: no errors + * EFalse: an error has occurred + */ + TBool CheckT9FromPtiLForPredictionL(TPtiEngineInputMode inputMode = EPtiEngineInputModeNone, TInt aLangCode = 0); +#endif + + /* Gets default number mode when arabic language is used. + * @param aNbrModeType number mode type from GSLangPlugin.hrh + * @return TInt corresponding value in language variant + */ + TInt DefaultNumberMode( TInt aNbrModeType ); + + /* Sets default number mode when arabic language is used. + * @param aMode either Latin or Arabic + * @param aNbrModeType number mode type from GSLangPlugin.hrh + */ + void SetDefaultNumberMode( TInt aMode, TInt aNbrModeType ); + + /* + * Default Input Method Selection. + * Returns input method value(In Hexadecimal value) from CenRep. + * @return 0x10: (Pinyin) + * 0x20: (Zhuyin) + * 0x40: (Stroke) + * 0x80: (Latin Upper Case) + * 0x100: (Latin Lower Case) + */ + TInt DefaultInputMethodL(); + + /* + * Sets default Input Method. + * @param aMethod Permanent input method . + */ + void SetDefaultInputMethodL( TInt aMethod ); + + /** + * Predictive On/Off + * @param + * @param + */ + void ChangePredictiveOnOffSettingL( TBool aShowOnOffSettingPage, + TPredictiveType aPredictive ); + + /** + * Shows predictive setting page. + */ + TBool ShowPredictiveOnOffSettingPageL( TInt& aOnOffcurrent ); + + /** + * Checks call state. + */ + TInt CheckCallStateL(); + + /** + * Keypress timeout (means Multitap timer). + * Get setting value + * @since 3.0 + * @return milli second + * + */ + TInt KeypressTimeout(); + + /** + * Set Keypress timeout value to CenRep + * Keypress timeout value means Multitap timer. + * @since 3.0 + * @param aMilliSecond + * @return ETrue: no errors + * EFalse: an error has occurred + */ + TBool SetKeypressTimeout( TInt aMilliSecond ); + + /** + * Japanese qwerty specific flags. + * Get setting value of each apanese qwerty specific flags + * @since 3.0 + * @param aFlag one of flag is set + * @return TBool ON/OFF or Full/Half-width + * (Flags) : (Arguments) : (Return value) + * Comma : EGSJapQwertyFlagComma : ETrue-Japanese comma + * Period : EGSJapQwertyFlagPeriod : ETrue-Japanese period + * Width Of Space : EGSJapQwertyFlagSpaceFullWidth : ETrue-Full width + */ + TBool JapanQwertyFlags( const TGSJapQwertyFlags aFlag ); + + /** + * Set Keypress timeout value to CenRep + * Set value of each Japanese qwerty specific flags + * @since 3.0 + * @param aFlag one of flag is set + * @param aValue is set ON/OFF + * @return ETrue: no errors + * EFalse: an error has occurred + */ + TBool SetJapanQwertyFlags( const TGSJapQwertyFlags aFlag, + TBool aValue ); + + /** + * Get Chinese CangJie input method value + * @return currently selected setting page index + */ + TInt ChiCangJieInputL(); + + /** + * Set Chinese CangJie input method value + * @param newly selected setting page index + */ + void SetChiCangJieInputL( TInt aMode ); + + /** + * Check if Chinese Cangjie input is supported + * @param newly selected setting page index + */ + TBool CheckCangjieSupportL( TInt aLangCode ); + + /* + * Get Predictive mode value + * 0 --> Normal + * 1 --> Autocompletion + * @return currently selected setting page index + */ + TInt PredictiveModeL(); + + /* + * Set Predictive mode value + * 0 --> Normal + * 1 --> Autocompletion + * @param newly selected setting page index + */ + void SetPredictiveModeL( TInt aMode ); + + /* + * Checks free disk space on device for language switch + * @return ETrue if there is not enough free space + * @return EFalse if there is enough free space + */ + TBool CheckDiskSpaceL(); + + /* + * Checks for autoword completion feature support + * @return ETrue if supported + * @return EFalse if not supported + */ + TBool CheckAutoWordCompletionSupportL(); + +#ifdef RD_INTELLIGENT_TEXT_INPUT + /* + * Checks for multiple keyboards + * @return ETrue if device has multiple keyboards + * @return EFalse if device has one keyboard + */ + TBool DeviceHasMultipleKeyboardsL(); + + TInt PredictionBitMaskL(); + + void SetPredictionBitMaskL(TInt aBitMask); + + TInt PhysicalKeyboardsL(); + + /** + * Get the list of supported secondary input languages + * Some input languages will not be on this list, e.g. + * Chinese, Japanese etc. + * @param aSeedLanguages array of Pti Language codes + * @param aLanguageNames array for language names + * + * @since 3.2 + */ + void GetSecondaryInputLanguagesL( + CArrayFix* aSeedLanguages, + CDesCArray* aLanguageNames, + CCoeEnv* aCoeEnv); +#endif + + private: // from MCenRepNotifyHandlerCallback + void HandleNotifyInt( TUint32 aId, TInt aNewValue ); + + private: // Private constructors + + /** + * Default C++ contructor + */ + CGSLangModel( CGSLangContainer* aContainer ); + + /** + * Symbian OS default constructor + * @return void + */ + void ConstructL(); + + private: + void InitializeCentralRepositoriesL(); + void CloseCentralRepositories(); + void HandleCenrepValueChangedL( TUint32 aId ); + + private: // Data + + // Pointer to container. Not owned. + CGSLangContainer* iContainer; + + CRepository* iAknFepRepository; + CRepository* iCommonEngineRepository; + CRepository* iPersonalizationRepository; + CRepository* iLocaleRepository; + CRepository* iStartupConfRepository; + CRepository* iScreensaverRepository; + // CenRep notify handler for input language + CCenRepNotifyHandler* iNotifyHandlerForITL; + // CenRep notify handler for dictionary + CCenRepNotifyHandler* iNotifyHandlerForT9; +#ifdef RD_INTELLIGENT_TEXT_INPUT + // CenRep notify handler for prediction extension + CCenRepNotifyHandler* iNotifyHandlerForPredExt; +#endif + // CenRep notify handler for Japanese predictive mode + CCenRepNotifyHandler* iNotifyHandlerForJapanesePredTxt; + }; + + +#endif // GSLANGMODEL_H +// End of File