textinput/GSLangPlugin/inc/GSLangModel.h
changeset 0 eb1f2e154e89
--- /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    <backgroundimage.h>
+#include    <badesca.h>
+#include    <bldvariant.hrh>
+#include    <centralrepository.h>
+#include    <cenrepnotifyhandler.h>
+#include    <e32base.h>
+#include    <generalsettingsvariant.hrh>
+#ifdef RD_INTELLIGENT_TEXT_INPUT
+#include    <PtiDefs.h>
+#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<TInt>* aInstalledLangCodes,
+                      CArrayFix<TInt>* 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<TInt>* 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