textinput/peninputarc/gsplugin/gspeninputplugin/inc/gspeninputmodel.h
changeset 0 eb1f2e154e89
child 7 6defe5d1bd39
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputarc/gsplugin/gspeninputplugin/inc/gspeninputmodel.h	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,714 @@
+/*
+* 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:  Model for gspeninputplugin.
+*
+*/
+
+
+#ifndef  C_GSPENINPUTMODEL_H
+#define  C_GSPENINPUTMODEL_H
+
+// INCLUDES
+#include <backgroundimage.h>
+#include <badesca.h>
+#include <bldvariant.hrh>
+#include <centralrepository.h>
+#include <e32base.h>
+#include <generalsettingsvariant.hrh>
+#include <e32property.h>
+#include <cenrepnotifyhandler.h>
+#include <peninputclient.h>
+
+#include "gspeninputplugin.hrh"
+
+_LIT(HLP_GS_PEN_INPUT, "CP_HLP_PEN_INPUT"); // temp fix for helps integration build break replace KCP_HLP_PEN_INPUT in cp.hlp.hrh;
+
+// FORWARD DECLARATION
+class CGSPenInputContainer;
+class CPtiEngine;
+class MGsCenRepNotifyHandlerCallback;
+
+// CONSTANTS
+const TInt KGSBufSize = 128;
+
+/**
+ *  GSPenInputPlugin Repository Watcher class
+ *
+ *  This class provides a callback function for watchering repository key. 
+ *
+ *  @lib gspeninputplugin.dll
+ *  @since S60 v3.2
+ */
+class CGSRepositoryWatcher : public CBase, public MCenRepNotifyHandlerCallback
+    {
+    
+public:
+
+    /**
+     * Symbian constructor
+     *
+     * @since S60 v3.2
+     * @param aCallBack Call back function 
+     * @param aRepository Repository for watchering
+     * @param aRepositoryUid The repository for each key
+     * @return Pointer to created CGSRepositoryWatcher object
+     */
+    static CGSRepositoryWatcher* NewL(MGsCenRepNotifyHandlerCallback* aOwner,
+                                         CRepository* aRepository,
+                                         TUid aRepositoryUid );
+
+    /**
+     * Destructor
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+    virtual ~CGSRepositoryWatcher();
+
+// From MCenRepNotifyHandlerCallback
+ 
+    /**
+     * From MCenRepNotifyHandlerCallback
+     * Notify call back function
+     *
+     * @since S60 v3.2
+     * @param aKey Repository UID  
+     * @param aNewValue Changed value
+     * @return None
+     */
+    void HandleNotifyInt(TUint32 aKey, TInt aNewValue);
+
+    void HandleNotifyGeneric(TUint32 aId);
+    
+private:
+    
+    /**
+     * C++ default constructor
+     *
+     * @since S60 v3.2
+     * @param aCallBack Call back function 
+     * @param aRepository Repository for watchering
+     * @param aRepositoryUid The reposotory uid for each key
+     * @return None
+     */          
+    CGSRepositoryWatcher(MGsCenRepNotifyHandlerCallback* aOwner,
+                            CRepository* aRepository,
+                            TUid aRepositoryUid );
+
+    /**
+     * Symbian second-phase constructor
+     *
+     * @since S60 v3.2
+     * @return None
+     */          
+    void ConstructL();
+
+private:
+
+    /**
+     * Owner pointer for call back 
+     */
+    MGsCenRepNotifyHandlerCallback* iOwner;
+
+    /**
+     * The Repository for watchering (Not own)
+     */
+    CRepository* iRepository;
+
+    /**
+     * The handle of Repository notify (Own)
+     */
+    CCenRepNotifyHandler* iNotifyHandler;
+    
+    /**
+     * The reposotory uid
+     */
+    TUid iRepositoryUid;
+    
+    };
+    
+/**
+ *  GSPenInputPlugin model class
+ *
+ *  This class is GSPenInputPlugin model class. It handle GSPenInputPlugin
+ *  data and store value to Repository.
+ *
+ *  @lib gspeninputplugin.dll
+ *  @since S60 v3.2
+ */
+class CGSPenInputModel : public CBase
+    {
+   
+public:
+
+    /**  DPI type for pen trail width */
+    enum TDPIType 
+        {
+        EDPILow = 150, // low DPI    
+        EDPIMiddle = 200, // middle DPI
+        EDPIHigh = 250 // high DPI       
+        };
+    
+    /**  List box item array length */        
+    enum TPenInputArray
+        {
+        EWritingSpeedArrayLength = 5, 
+        ETrailWidthArrayLength = 3, 
+        };
+
+    /**
+     * Symbian constructor
+     *
+     * @since S60 v3.2
+     * @param aOwner Pointer to owner 
+     * @return Pointer to created CGSPenInputModel object
+     */
+    static CGSPenInputModel* NewL(MGsCenRepNotifyHandlerCallback* aOwner);
+
+    /**
+     * Symbian constructor
+     *
+     * @since S60 v3.2
+     * @return Pointer to created CGSPenInputModel object
+     */
+    static CGSPenInputModel* NewL();
+
+    /**
+     * Set owner for call back
+     *
+     * @since S60 v3.2
+     * @param aOwner Pointer to owner  
+     * @return None
+     */
+    inline void SetOwner(MGsCenRepNotifyHandlerCallback* aOwner);
+
+    /**
+     * Destructor
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+    virtual ~CGSPenInputModel();
+
+    /**
+     * Get current input language index in list box item
+     *
+     * @since S60 v3.2
+     * @return The index of input language setting page 
+     */
+    inline TInt InputLanguageIndex() const;
+
+    /**
+     * Set current input language index in list box item
+     *
+     * @since S60 v3.2
+     * @param aIndex Language index in input language setting page
+     * @return None 
+     */
+    inline void SetInputLanguageIndex(TInt aIndex);
+
+    /**
+     * Current input language name in list box item
+     *
+     * @since S60 v3.2
+     * @param aLanguage Reference to current input language name
+     * @return None
+     */
+    void InputLanguage(TDes& aLanguage);
+
+    /**
+     * Current input language ID
+     *
+     * @since S60 v3.2
+     * @return Language ID
+     */
+    TInt InputLanguage(); 
+    
+    /**
+     * Get languages from ptiengine    
+     *
+     * @since S60 v3.2
+     * @param aLanguageNames Poniter to language name array from ptiengine
+     * @param aISOCode ETrue language name with ISO code.
+     * @return None
+     */
+    void GetLanguagesFromPtiL(TBool aISOCode,CDesCArray* aLanguageNames);
+    
+    /**
+     * Get Popup Query languages from ptiengine    
+     *
+     * @since S60 v3.2
+     * @param aLanguageNames Poniter to language name array from ptiengine
+     * @return None
+     */
+    void GetPopupQuerylanguagesFromPtiL(CDesCArray* aLanguageNames);    
+
+    /**
+     * Store input language to Repository
+     *
+     * @since S60 v3.2
+     * @return None 
+     */
+    void SetInputLanguageL();
+    
+    /**
+     * Current writing speed index in list box item
+     *
+     * @since S60 v3.2
+     * @return None 
+     */
+    TInt WritingSpeed();
+
+    /**
+     * Store writing speed to Repository
+     *
+     * @since S60 v3.2
+     * @param aSpeed Index in list box item     
+     * @return None 
+     */
+    void SetWritingSpeed(const TInt aSpeed);
+
+    /**
+     * Store guid line to Repository
+     *
+     * @since S60 v3.2
+     * @return ETrue for guid line on; otherwise EFalse
+     */
+    void SetGuideLine(TInt aGuideLine);
+    void SetRecognitionWithDictionary(TInt aRecognitionWithDictionary);
+
+    /**
+     * Get current guide line from Repository
+     *
+     * @since S60 v3.2
+     * @return ETrue for guid line on; otherwise EFalse
+     */
+    TInt GuideLine();
+    
+    TInt RecognitionWithDictionary();
+
+    /**
+     * Store input method for find to Repository
+     *
+     * @since S60 v5.0
+     */
+    void SetInputMethodForFind(TInt aInputMethodForFind);
+
+    /**
+     * Get current input method for find from Repository
+     *
+     * @since S60 v5.0
+     */
+    TInt InputMethodForFind();
+
+    /**
+     * Get chinese find method resource id
+     *
+     * @since S60 v5.0
+     */
+    TInt ChineseFindMethodResourceID();
+
+    /**
+     * Store chinese find method to Repository
+     *
+     * @since S60 v5.0
+     */
+    void SetChineseFindMethod(TInt aChineseFindMethod);
+
+    /**
+     * Get chinese find method from Repository
+     *
+     * @since S60 v5.0
+     */
+    TInt ChineseFindMethod();
+
+    /**
+     * Current pen trail width index in list box item
+     *
+     * @since S60 v3.2
+     * @return The index of writing speed item 
+     */
+    TInt TrailWidth();
+
+    /**
+     * Store pen trail width to Repository
+     *
+     * @since S60 v3.2
+     * @param aWidth Index in list box item     
+     * @return None 
+     */
+    void SetTrailWidth(const TInt aWidth);
+        
+    /**
+     * Current pen trail colour index in list box item
+     *
+     * @since S60 v3.2
+     * @return The index of trail colour item 
+     */
+    TInt TrailColour();
+
+    /**
+     * Store pen trail colour to Repository
+     *
+     * @since S60 v3.2
+     * @param aColour Index in list box item     
+     * @return None 
+     */
+    void SetTrailColour(const TInt aColour);
+
+    /**
+     * Set input mode.
+     *
+     * @since S60 v3.2
+     * @param aIndex Item idex of setting page.
+     * @return None
+     */
+    void SetInputModeBySettingPage(const TInt aIndex);    
+    
+    /**
+     * Get input mode index in setting page
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+    TInt InputModeInSettingPage();
+
+    /**
+     * Get input mode resource id
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+    TInt InputModeResourceID();
+
+    /**
+     * Current language is chinese language
+     *
+     * @since S60 v3.2
+     * @return ETrue for chinese language; otherwise EFalse
+     */
+    inline TBool ChineseLanguage();
+    
+    /**
+     * Current language is chinese and Japanese language
+     *
+     * @since S60 v3.2
+     * @return ETrue for chinese language; otherwise EFalse
+     */
+    inline TBool JapaneseLanguage();
+    
+    /**
+     * Reset input mode destription array
+     *
+     * @since S60 v3.2
+     * @param aIndex Item idex of setting page.  
+     * @return None
+     */
+    void ResetInputModeArray(CDesCArrayFlat* aInputModeItems);
+    
+    /**
+     * Reset input mode to default input mode when language changed 
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+    void ResetDefaultInputMode();
+    
+    /**
+     * Set FEP default input mode when language changed 
+     *
+     * @since S60 v3.2
+     * @param aInputMode Default input mode.     
+     * @return None
+     */
+    void SetFepInputMode(TInt aInputMode);
+        
+    /**
+     * Get FEP default input mode when language changed 
+     *
+     * @since S60 v3.2
+     * @return Default input mode
+     */
+    TInt GetFepInputMode();
+    
+    /**
+     * Get input mode from repository
+     *
+     * @since S60 v3.2
+     * @return Current input mode
+     */          
+    TInt InputMode();    
+    
+    /**
+     * Reset Fep input mode based on current input language
+     *
+     * @since S60 v3.2
+     * @return None
+     */          
+    void ResetFepDefaultInputMode();
+    
+    TBool IsSettingItemAvailable( TInt aItemId );
+    
+private: 
+
+    /**
+     * C++ default constructor
+     *
+     * @since S60 v3.2
+     * @param aOwner Pointer to owner       
+     * @return None
+     */  
+    CGSPenInputModel(MGsCenRepNotifyHandlerCallback* aOwner);
+    
+    /**
+     * C++ default constructor
+     *
+     * @since S60 v3.2
+     * @return None
+     */  
+    CGSPenInputModel();
+
+    /**
+     * Symbian second-phase constructor
+     *
+     * @since S60 v3.2
+     * @return None
+     */          
+    void ConstructL();
+
+    /**
+     * Initializes Repository
+     *
+     * @since S60 v3.2
+     * @return None
+     */          
+    void InitializeCentralRepositoriesL();
+
+    /**
+     * Initializes pen trail width array
+     *
+     * @since S60 v3.2
+     * @return None
+     */          
+    void InitTrailWidthArrayL();
+
+    /**
+     * Initializes writing speed array
+     *
+     * @since S60 v3.2
+     * @return None
+     */          
+    void InitWritingSpeedArray();
+
+    /**
+     * Initializes low dpi array
+     *
+     * @since S60 v3.2
+     * @return None
+     */          
+    void InitLowDPI();
+
+    /**
+     * Initializes middle dpi array
+     *
+     * @since S60 v3.2
+     * @return None
+     */          
+    void InitMiddleDPI();
+
+    /**
+     * Initializes high dpi array
+     *
+     * @since S60 v3.2
+     * @return None
+     */          
+    void InitHighDPI();
+    
+    /**
+     * Set input mode to repository
+     *
+     * @since S60 v3.2
+     * @param aInputMode Input Mode
+     * @return None
+     */          
+    void SetInputMode(TInt aInputMode);
+    
+    /**
+     * The trail color got from key is available
+     *
+     * @since S60 v3.2
+     * @return ETrue for Available; otherwise EFalse
+     */
+     inline TBool AvailableTrailColor(TRgb color);         
+    
+    /**
+     * Adjust language name
+     *
+     * @since S60 v3.2
+     * @param aLangId Language Id
+     * @param aLangName Input/output of language name
+     * @return None
+     */          
+    void AdjustLanguageName(TInt aLangId, TDes& aLangName);
+
+    /**
+     * Get chinese find method cenrep key id
+     *
+     * @since S60 v5.0
+     */
+    TUint ChineseFindMethodCRKey();
+
+    /**
+     * Return current application's uid
+     *
+     * @param aWndGrpId Current application's window group id
+     * @since S60 v5.0
+     */
+    TUid AppUidFromWndGroupId( TInt aWndGrpId );
+    
+    TUid AppUidFromWndGroupIdL( TInt aWndGrpId );
+    TBool IsTruiSupportedLanguage();
+
+private: 
+
+    /**
+     * Owner pointer for call back 
+     */
+    MGsCenRepNotifyHandlerCallback* iOwner;
+
+    /**
+     * The personalization repository (Own)
+     */
+    CRepository* iPersonalizationRepository;
+
+    /**
+     * The fep repository (Own)
+     */
+    CRepository* iAknfepRepository;
+
+    /**
+     * The avkon repository (Own)
+     */
+    CRepository* iAknRepository;
+
+    /**
+     * The input language index in setting page 
+     */
+    TInt iLanguageIndex;
+
+    /**
+     * The input language for storing in repository 
+     */
+    TInt iInputLanguage;
+
+    /**
+     * The writhing speed for storing in repository  
+     */
+    TInt iSpeed;
+
+    /**
+     * The pen input width for storing in repository 
+     */
+    TInt iWidth;
+
+    /**
+     * The pen color for storing in repository 
+     */
+    TInt iColor;
+    
+    /**
+     * The input method for find for storing in repository 
+     */
+    TInt iInputMethodForFind;    
+
+    /**
+     * The input method for find for storing in repository 
+     */
+    TInt iChineseFindMethod;
+
+    /**
+     * The last used chinese find method item,
+     * -1 == not queried from repo
+     * 0 == not used
+     * >0 == cenrep key id
+     */
+    TInt iLastChineseFindMethodItem;
+
+    /**
+     * The guid line for storing in repository 
+     */
+    TInt iGuideLine;    
+    /**
+     * Indicate HwrTraining is aviliable or not
+     */
+    TInt iIsRecognitionWithDictionary;      
+    
+    /**
+     * The default input mode 
+     */
+    TInt iInputMode;    
+
+    /**
+     * The icon array of list box item 
+     */
+    TInt iTrailWidthValue[ETrailWidthArrayLength];
+
+    /**
+     * The icon array of list box item 
+     */
+    TInt iWritingSpeedValue[EWritingSpeedArrayLength];
+
+    /**
+     * The personalization watcher (Own)
+     */
+    CGSRepositoryWatcher* iPersonalizationWatcher;    
+
+
+    /**
+     * The Aknfep watcher (Own)
+     */
+    CGSRepositoryWatcher* iAknfepWatcher;    
+
+    /**
+     * The Akn watcher (Own)
+     */
+    CGSRepositoryWatcher* iAknWatcher;
+    
+    /**
+    * Pti Engine (Own)
+    */
+    CPtiEngine* iPtiEngine;
+    
+    /**
+     * Indicate HwrTraining is aviliable or not
+     */
+    TBool iIsHwrTrainingAviliable;
+    
+    /**
+     * PeninputServer Client
+     */
+    RPeninputServer iPenInputServer;
+    
+    /**
+     * PeninputServer connect error
+     */
+    TInt iConnectErr;
+    
+    };
+    
+#include "gspeninputmodel.inl"    
+
+#endif // C_GSPENINPUTMODEL_H
+
+// End Of File