textinput/peninputvkbcn/inc/peninputvkbdatamgr.h
changeset 0 eb1f2e154e89
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputvkbcn/inc/peninputvkbdatamgr.h	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,834 @@
+/*
+* 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:  Interface of vkb ui state
+*
+*/
+
+
+#ifndef C_AKNFEPVKBDATAMGR_H
+#define C_AKNFEPVKBDATAMGR_H
+
+// System includes
+#include <e32base.h>
+#include <w32std.h>
+
+// User includes
+#include "peninputvkbdataprovider.h"
+#include <peninputpluginutils.h>
+
+// The max length for language string 
+const TInt KMaxLangStringLength = 30;
+
+// The max length for language string 
+const TInt KMaxLengthCompFieldElemCount = 50;
+const TInt KMaxLengthPredictiveString = KMaxLengthCompFieldElemCount + 
+                                        KMaxLengthCompFieldElemCount;
+
+const TInt KMaxPredictCandCnt = 250;
+
+/** class forward decalaration */
+class CPtiEngine;
+class MAknFepVkbLayoutContext;
+class CRepository;
+
+// class declarations
+/**
+ *  Data manager class
+ *
+ *  @lib peninputvkbcn.lib
+ *  @since S60 v3.2
+ */
+class CAknFepVkbDataMgr: public CBase, 
+                         public MAknFepVkbDataProvider
+    {
+public:   
+    /**
+     * struct SLanguageItem
+     * Language item struct
+     * 
+     */
+    //struct SLanguageItem
+    //    {
+        /*
+         * the language id(Symbian)
+         */
+    //    TInt iLangId;
+        
+        /*
+         * the display text for the language corresponding
+         */
+    //    TBuf<KMaxLangStringLength> iDisplayText;
+    //    };
+                  
+public:
+
+    /**
+     * Create one CAknFepVkbWindow object
+     *
+     * @since S60 v3.2
+     * @param aContext The layout context
+     * @return The CFepCtrlDropdownList object.
+     */ 
+    static CAknFepVkbDataMgr* NewL(MAknFepVkbLayoutContext* aContext, 
+                                   CPtiEngine* aPtiEngine = NULL);
+    
+    /**
+     * Create one CAknFepVkbWindow object
+     *
+     * @since S60 v3.2
+     * @param aContext The layout context
+     * @return The CFepCtrlDropdownList object.
+     */ 
+    static CAknFepVkbDataMgr* NewLC(MAknFepVkbLayoutContext* aContext, 
+                                    CPtiEngine* aPtiEngine = NULL);
+
+    /**
+     * Destructor
+     *
+     * @since S60 v3.2
+     * @return None.
+     */ 
+    virtual ~CAknFepVkbDataMgr();
+
+    /**
+     * Reset data in manager
+     *
+     * @since S60 v3.2
+     * @return None.
+     */     
+    void Reset();
+                    
+    /**
+     * Get candidates
+     *
+     * @since S60 v3.2
+     * @return candidates list.
+     */       
+    RPointerArray<HBufC> Candidates();
+
+    /**
+     * Notify engine to generate candidates
+     *
+     * @since S60 v3.2
+     * @param aInputString The string sent to engine    
+     * @param aIsPredictive The predictive flag, if true, tell engine to predict, 
+     * @param aForNextPage Is it for next page candidate
+     * @return The count of candidates
+     */      
+    TInt GetCandidatesL(const TDesC& aInputString, 
+                        const TBool aIsPredictive,
+                        TBool aForNextPage = EFalse);
+
+    /**
+     * Notify engine to generate candidates
+     *
+     * @since S60 v3.2
+     * @param aTriggerStr The string sent to engine    
+     * @param aPredictives The predictive 
+     * @return None
+     */      
+    void DoPredictive(const TDesC& aTriggerStr, 
+                      RPointerArray<HBufC>& aPredictives);
+
+    /**
+     * Clear trigger string
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+    void ClearTriggerString();
+
+    /**
+     * Get the count of candidates
+     *
+     * @since S60 v3.2
+     * @return Candidates count.
+     */      
+    TInt CandidatesCount();
+        
+    /**
+     * Get case
+     *
+     * @since S60 v3.2
+     * @return Case.
+     */      
+    TInt Case();
+
+    /**
+     * Get peninput language
+     *
+     * @since S60 v3.2
+     * @return Peninput language.
+     */      
+    TInt InputLanguage();
+
+    /**
+     * Get permitted range
+     *
+     * @since S60 v3.2
+     * @return Permitted range.
+     */      
+    TInt PermittedRange();
+    
+    /**
+     * Get current range
+     *
+     * @since S60 v3.2
+     * @return Current range.
+     */      
+    TInt CurrentRange();
+
+    /**
+     * Get current accent
+     *
+     * @since S60 v3.2
+     * @return The current accent.
+     */      
+    TInt CurrentAccent();
+        
+    /**
+     * Get editor numeric keymap
+     *
+     * @since S60 v3.2
+     * @return The editor numeric keymap.
+     */      
+    TInt EditorNumericKeymap();
+    
+    /**
+     * Get input method layout
+     *
+     * @since S60 v3.2
+     * @return The input method layout.
+     */      
+    TInt IMLayout();
+
+    /**
+     * Get shift down flag
+     *
+     * @since S60 v3.2
+     * @return The shift down flag.
+     */      
+    TBool ShiftDown();
+    
+    /**
+     * Get capslock down flag
+     *
+     * @since S60 v3.2
+     * @return The capslock down flag.
+     */      
+    TBool CapslockDown();
+    
+    /**
+     * Get length in composition field when button down on backspace button
+     *
+     * @since S60 v3.2
+     * @return The length in composition field when button down on backspace button.
+     */      
+    TInt LengthWhenButtondownOnBack();
+
+    /**
+     * Get window position
+     *
+     * @since S60 v3.2
+     * @return The window position.
+     */      
+    TInt WindowPosition();
+    
+    /**
+     * Set window position
+     *
+     * @since S60 v3.2
+     * @param aPosition The new value
+     * @return None.
+     */      
+    void SetWindowPosition(TInt aPosition);
+    
+    /**
+     * Set candidate count
+     *
+     * @since S60 v3.2
+     * @param aCandidatesCount The new value
+     * @return None.
+     */         
+    void SetCandidatesCount(TInt aCandidatesCount);
+    
+    /**
+     * Set case
+     *
+     * @since S60 v3.2
+     * @param aCase The new value
+     * @return None.
+     */         
+    void SetCase(TInt aCase);
+    void SetPermittedCase(TInt aCase);
+    TInt PermittedCase();
+
+    /**
+     * Set peninput language
+     *
+     * @since S60 v3.2
+     * @param aInputLanguage The new value
+     * @return Display language shown on switch button
+     */         
+    TInt SetInputLanguage(TInt aInputLanguage = -1);
+
+    /**
+     * Set permitted range
+     *
+     * @since S60 v3.2
+     * @param aRange The new value
+     * @return None.
+     */         
+    void SetPermittedRange(TInt aRange);
+
+    /**
+     * Set current range
+     *
+     * @since S60 v3.2
+     * @param aPosition The new value
+     * @return None.
+     */         
+    void SetCurrentRange(TInt aRange);
+    
+    /**
+     * Set data query rect
+     *
+     * @since S60 v3.2
+     * @param aRect The rect of data query
+     * @return None.
+     */         
+    void SetDataQueryRect(const TRect& aRect);
+    
+    /**
+     * Set current accent
+     *
+     * @since S60 v3.2
+     * @param aAccent The new value
+     * @return None.
+     */         
+    void SetCurrentAccent(TInt aAccent);    
+    
+    /**
+     * Set editor numbric keymap
+     *
+     * @since S60 v3.2
+     * @param aEditorNumericKeymap The new value
+     * @return None.
+     */         
+    void SetEditorNumericKeymap(TInt aEditorNumericKeymap);
+
+    /**
+     * Set input method layout
+     *
+     * @since S60 v3.2
+     * @param aImLayout The new value
+     * @return None.
+     */         
+    void SetImLayout(TInt aImLayout);
+
+    /**
+     * Change shift down flag
+     *
+     * @since S60 v3.2
+     * @return New case.
+     */         
+    TInt ChangeShiftDown();
+    
+    /**
+     * Change capslock down flag
+     *
+     * @since S60 v3.2
+     * @return New case.
+     */          
+    TInt ChangeCapslockDown();
+    
+    /**
+     * Set shift down flag
+     *
+     * @since S60 v3.2
+     * @param aFlag The new value
+     * @return None.
+     */         
+    void SetShiftDown(TBool aFlag);
+        
+    /**
+     * Set capslock down flag
+     *
+     * @since S60 v3.2
+     * @param aFlag The new value
+     * @return None.
+     */          
+    void SetCapslockDown(TBool aFlag);
+    
+    /**
+     * Set length when button down on backspace button
+     *
+     * @since S60 v3.2
+     * @param aLength The new value
+     * @return None.
+     */        
+    void SetLengthWhenButtondownOnBack(TInt aLength);
+    
+    /**
+     * Shift button permit or not
+     *
+     * @since S60 v3.2
+     * @return ETrue if shift button permit, or EFalse.
+     */         
+    TBool IsShiftPermitted();
+    TBool IsCapsLockPermitted();
+    /**
+     * Set screen mode
+     *
+     * @since S60 v3.2
+     * @param aScreenMode The new value
+     * @return None.
+     */         
+    void SetScreenMode(const TPixelsTwipsAndRotation& aScreenMode);
+
+    /**
+     * Save window position
+     *
+     * @since S60 v3.2
+     * @param aBr The new value
+     * @return None.
+     */         
+    void SaveWindowPos(const TPoint& aBr);
+
+    /**
+     * Save range
+     *
+     * @since S60 v3.2
+     * @param aRange The new value
+     * @return None.
+     */    
+    void SaveRange(TInt aRange);
+
+    /**
+     * Handle notification from CenRep monitor
+     *
+     * @since S60 v3.2
+     * @param aPtr The data manager self
+     * @return None.
+     */         
+    static TInt HandleFepRepositoryCallBack(TAny* aPtr);
+    
+    /**
+     * Handle notification from CenRep monitor
+     *
+     * @since S60 v3.2
+     * @param aPosition The data manager self
+     * @return None.
+     */         
+    static TInt HandleGSRepositoryCallBack(TAny* aPtr);
+    
+    /**
+     * Write window position
+     *
+     * @since S60 v3.2
+     * @param aPosition The new value
+     * @return None.
+     */         
+    void WriteWindowPostion(TInt aPosition);
+    
+    /**
+     * Write last used range into CenRep
+     *
+     * @since S60 v3.2
+     * @param aLastUsedRange The new value
+     * @return None.
+     */         
+    void WriteLastUsedRange(TInt aLastUsedRange);
+    
+// From class MAknFepVkbDataProvider
+
+    /**
+     * Request data according to the data type
+     *
+     * @since S60 v3.2
+     * @param aDataType The data type need to get
+     * @return candidates list.
+     */      
+    TInt RequestData(TAknFepDataType aDataType);   
+     
+    /**
+     * Set data according to the data type
+     *
+     * @since S60 v3.2
+     * @param aDataType The data type need to set
+     * @param aData The new data
+     * @return candidates list.
+     */      
+    void SetData(TAknFepDataType aDataType,TInt aData);
+    
+    /**
+     * Read unit size and shadow from scalable data
+     *
+     * @since S60 v3.2
+     * @return None.
+     */      
+    void ReadUnitShadowSize();
+    
+    /**
+     * Get info of whether it is size changing
+     *
+     * @since S60 v3.2
+     * @return ETrue if size is changing, otherwise EFalse
+     */      
+    TBool SizeChanging();
+    
+    /**
+     * Get info of whether unit and shadow size have been read
+     *
+     * @since S60 v3.2
+     * @return Flag to indicate whether unit and shadow size
+     * have been read
+     */      
+    TBool UnitShadowSizeSet();
+
+    /**
+     * Judge if next candidate after current page exist
+     *
+     * @since S60 v3.2
+     * @return ETrue if candidate exist, otherwise EFalse
+     */      
+    TBool NextCandidateExist();
+     
+    /**
+     * Reset unit size by current im layout
+     *
+     * @since S60 v3.2
+     * @return None.
+     */      
+    void ResetUnitSize();
+    
+    /**
+     * Set flag to indicate whether it is size changing
+     *
+     * @since S60 v3.2
+     * @param aFlag Whether it is size changing
+     * @return None.
+     */      
+    void SetSizeChanging(TBool aFlag);
+    
+protected:
+
+    /**
+     * Constructor
+     *
+     * @since S60 v3.2
+     * @param aContext The layout context     
+     * @return None.
+     */      
+    CAknFepVkbDataMgr(MAknFepVkbLayoutContext* aContext);
+        
+    /**
+     * 2nd constructor function
+     *
+     * @since S60 v3.2
+     * @return None.
+     */      
+    void ConstructL(CPtiEngine* aPtiEngine);  
+    
+    /**
+     * Get language item according to the id
+     *
+     * @since S60 v3.2
+     * @param aLangId The language id
+     * @return The language item.
+     */      
+    //const SLanguageItem* GetItemByLangId(TInt aLangId);    
+    
+    /**
+     * notification function when the window position is changed in CenRep
+     *
+     * @since S60 v3.2
+     * @return The deal result.
+     */      
+    TInt PositionChangeNotification();
+
+    /**
+     * notification function when the default mode is changed in CenRep
+     *
+     * @since S60 v3.2
+     * @return The deal result.
+     */      
+    TInt DefaultModeChangeNotification();
+
+    /**
+     * notification function when the peninput language is changed in CenRep
+     *
+     * @since S60 v3.2
+     * @return The deal result.
+     */      
+    TInt PeninputlanguageChangeNotification();
+    
+    /**
+     * Calculate case according to shiftdown and capslock down
+     *
+     * @since S60 v3.2
+     * @return New case.
+     */      
+    TInt CalculateCase();
+    
+    /**
+     * Judge if given language is Chinese
+     *
+     * @since S60 v3.2
+     * @param aLang Given language code
+     * @return ETrue if given language is Chinese, otherwise EFalse
+     */      
+    TBool LanguageIsChinese(TInt aLang);
+    
+    /**
+     * Set engine language to given language
+     *
+     * @since S60 v3.2
+     * @param aLang Given language code
+     * @return None
+     */      
+    void SetEngineLanguage(TInt aLang);
+    
+private: // Data
+
+    /**
+     * The case
+     * Own
+     */
+    TInt iCase;
+    
+    /**
+     * The last used range
+     * Own
+     */    
+    TInt iLastUsedRange;
+    
+    /**
+     * The peninput language
+     * Own
+     */    
+    TInt iInputLanguage;
+
+    /**
+     * The permitted range
+     * Own
+     */    
+    TInt iPermittedRange;
+    TInt iPermittedCase;
+
+    /**
+     * The candidate count
+     * Own
+     */    
+    TInt iCandidatesCount;
+    
+    /**
+     * The current range
+     * Own
+     */    
+    TInt iCurrentRange; 
+       
+    /**
+     * The current accent
+     * Own
+     */    
+    TInt iCurrentAccent;
+    
+    /**
+     * The unit width
+     * Own
+     */    
+    TInt iUnitWidth;
+    
+    /**
+     * The unit height
+     * Own
+     */    
+    TInt iUnitHeight;
+    
+    /**
+     * The im layout
+     * Own
+     */    
+    TInt iImLayout; 
+
+    /**
+     * The default im layout for HK
+     * Own
+     */    
+    TInt iDefaultImLayout4HK;
+    
+    /**
+     * The default im layout for PRC
+     * Own
+     */    
+    TInt iDefaultImLayout4PRC;
+    
+    /**
+     * The default im layout for TW
+     * Own
+     */    
+    TInt iDefaultImLayout4TW;
+
+    //TAknEditorNumericKeymap iEditorNumericKeymap;
+    /**
+     * The editor numeric key map
+     * Own
+     */    
+    TInt iEditorNumericKeymap;
+
+    /**
+     * The flag of shift down
+     * Own
+     */    
+    TBool iShiftDown;
+    
+    /**
+     * The flag of capslock down
+     * Own
+     */    
+    TBool iCapslockDown;
+    
+    /**
+     * The string length in composition field when mouse down on back button
+     * Own
+     */    
+    TInt iLengthWhenButtondownOnBack;
+    
+    /**
+     * The candidate list
+     * Own
+     */    
+    RPointerArray<HBufC> iCandidates;
+    
+    /**
+     * The pti engine
+     * Ownership is deternimed by 
+     */    
+    CPtiEngine* iPtiEngine;
+    
+    /**
+     * The pti engine ownership flag
+     */    
+    TBool iOwnPtiEngine;
+    
+    /**
+     * The layout context
+     * Not wwn
+     */    
+    MAknFepVkbLayoutContext* iContext;
+    
+    /**
+     * The language string list
+     * Own
+     */    
+    //RPointerArray<SLanguageItem> iLangStringList;
+    
+    /**
+     * The fep repository (Own);
+     */
+    CRepository* iFepRepository;
+    
+    /**
+     * The repository watcher
+     * Own
+     */    
+    CAknFepRepositoryWatcher* iFepRepositoryWatcher;
+    
+    /**
+     * The gs repository 
+     * Own
+     */
+    CRepository* iGSRepository;
+
+    /**
+     * The repository watcher
+     * Own
+     */    
+    CAknFepRepositoryWatcher* iGSRepositoryWatcher;
+    
+    /**
+     * The position setting id
+     * Own
+     */    
+    TInt iPositionSettingId;    
+    
+    /**
+     * The window position
+     * Own
+     */    
+    TInt iWindowPosition;
+    
+    /**
+     * The screen mode
+     * Own
+     */    
+    TPixelsTwipsAndRotation iScreenMode;
+
+    /**
+     * The rect of data query dialog
+     * Own
+     */    
+    TRect iDataQueryRect;    
+
+    /**
+     * The user defined resource for number
+     * Own
+     */    
+    HBufC* iUserDefinedResource;    
+    
+    /**
+     * The predictive buffer
+     * Own
+     */    
+    TBuf<KMaxLengthPredictiveString> iPredictiveBuf;
+    
+    /**
+     * The array of units size
+     * Own
+     */    
+    RArray<TSize> iUnits;
+    
+    /**
+     * Flag of size changing
+     */    
+    TBool iSizeChanging;
+    
+    /**
+     * The size of top left shadow corner
+     */
+    TSize iShadowTl;
+    
+    /**
+     * The size of bottom right shadow corner
+     */
+    TSize iShadowBr;
+    
+    /**
+     * The rect of main pane
+     */
+    TRect iMainPaneRect;
+    
+    /**
+     * Indicate whether unit, shadow size have been read
+     */
+    TBool iUnitShadowSizeRead;
+    
+    TBool iNeedBrJustify;
+    };
+
+#endif // C_AKNFEPVKBDATAMGR_H
+
+// End Of File
+ 
\ No newline at end of file