textinput/peninputhwrboxcn/inc/peninputhwrbxdatastore.h
changeset 0 eb1f2e154e89
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputhwrboxcn/inc/peninputhwrbxdatastore.h	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,591 @@
+/*
+* 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:  Data store
+*
+*/
+
+
+#ifndef C_CAKNFEPHWRBXDATASTORE_H
+#define C_CAKNFEPHWRBXDATASTORE_H
+
+//  INCLUDES
+#include <e32base.h>
+#include <e32def.h>
+#include <w32std.h>
+#include <gdi.h>
+#include <PtiEngine.h>
+#include <eikon.hrh>
+
+#include "peninputhwrpropertysubscriber.h"
+#include <peninputpluginutils.h>
+
+// constant definition
+const TInt KMaxPredictiveLen = 128;
+const TInt KMaxCandidateLen = 128;
+
+const TInt KMaxPredictCandCnt = 250;
+
+
+//const TUint16 KBackRep = 0x2408;
+// convert displayable backspace
+const TUint16 KBackRep = 0x2190;
+const TUint16 KEnterRep = 0xF801;
+const TUint16 KSpaceRep = 0xF800;
+const TUint16 KEnterCode = 0x2029;
+
+class CAknFepHwrTriggerStr;
+class CRepository;
+class CAknFepHwrEngine;
+class CPtiEngine;
+
+/**
+ *  CAknFepHwrBxDataStore
+ *
+ *  @lib peninputhwrboxcn.lib
+ *  @since S60 v3.2
+ */
+class CAknFepHwrBxDataStore : public CBase
+    {
+public:
+
+    /**
+     * Symbian constructor.
+     *
+     * @since S60 v3.2
+     * @return Pointer to created CAknFepHwrBxDataStore object
+     */
+    static CAknFepHwrBxDataStore* NewL(CPtiEngine* aPtiEngine);
+
+    /**
+     * destructor
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+    virtual ~CAknFepHwrBxDataStore();
+
+    /**
+     * Is candidate in Chinese range
+     *
+     * @since S60 v3.2
+     * @param aCandidateIndex The index the candidate in list.
+     * @return ETrue if candidate is in Chinese range; otherwise EFalse
+     */
+    TBool IsChinese(TInt aCandidateIndex) const;
+    
+    /**
+     * Do recoginize by engine
+     *
+     * @since S60 v3.2
+     * @param aTraceData The trace data.
+     * @return None
+     */            
+    void DoRecognizeL(const RArray<TPoint>& aTraceData);
+
+    /**
+     * Do predictive using trigger string
+     *
+     * @since S60 v3.2
+     * @return None
+     */            
+    void DoPredictiveL();
+    
+    /**
+     * Get the predictive count
+     *
+     * @since S60 v3.2
+     * @return The count of predictives
+     */            
+    TInt PredictiveCount() const;
+
+    /**
+     * Get the candidate count
+     *
+     * @since S60 v3.2
+     * @return The count of candidate
+     */            
+    TInt CandidateCount() const;
+
+    /**
+     * Add property subscriber
+     *
+     * @since S60 v3.2
+     * @param aSubscriber The property subscriber.
+     * @return None
+     */            
+    void AddSubscriber(MAknFepHwrPropertySubscriber* aSubscriber);
+
+    /**
+     * Get the trigger string
+     *
+     * @since S60 v3.2
+     * @return Pointer to CAknFepHwrTriggerStr object
+     */            
+    CAknFepHwrTriggerStr* TriggerStr() const;
+
+    /**
+     * Set permitted ranges
+     *
+     * @since S60 v3.2
+     * @param aPermittedRanges The permitted ranges.
+     * @return None
+     */            
+    void SetPermittedRanges(TInt aPermittedRanges);
+
+    /**
+     * Get the permitted ranges count
+     *
+     * @since S60 v3.2
+     * @return The count of permitted ranges 
+     */            
+    TInt PermittedRangesCount() const;
+
+    /**
+     * Set premary range
+     *
+     * @since S60 v3.2
+     * @param aPremaryRange The premary range
+     * @return None
+     */            
+    void SetPremaryRange(TInt aPremaryRange);
+
+    /**
+     * Set case
+     *
+     * @since S60 v3.2
+     * @param aCase The case
+     * @return None
+     */            
+    void SetCase(TInt aCase);
+    
+    /**
+     * Set language
+     *
+     * @since S60 v3.2
+     * @param aLanguage The language
+     * @return None
+     */            
+    void SetLanguageL(TInt aLanguage);
+    
+    /**
+     * Get language
+     *
+     * @since S60 v3.2
+     * @return Input Language
+     */            
+    TInt InputLanguage();    
+    
+    /**
+     * Set writting speed.
+     *
+     * @since S60 v3.2
+     * @param aCharDelay The submit character timer in micro seconds
+     * @return None
+     */
+    void SetWritingSpeed(TInt aWritingSpeed);
+
+    /**
+     * Set trail drawing pen size.
+     *
+     * @since S60 v3.2
+     * @param aSize New pen size
+     * @return None
+     */
+    void SetBoxPenSize(const TSize& aSize);
+
+    /**
+     * Set trail drawing pen color.
+     *
+     * @since S60 v3.2
+     * @param aCol New pen color
+     * @return None
+     */
+    void SetBoxPenColor(const TRgb& aCol);
+
+    /**
+     * Set the candidate list.
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+    void SetCandidates();
+
+    /**
+     * Set the predictive list.
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+    void SetPredictives();
+    
+    /**
+     * Add new predictives to list
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+    void AddPredictives();
+
+    /**
+     * Get the candidate.
+     *
+     * @since S60 v3.2
+     * @param aIndex The index of candidate
+     * @param aCharCode The result candidate
+     * @return Candidate char code
+     */
+    void GetCandidate(TInt aIndex, TDes& aCharCode) const;
+
+    /**
+     * Get the predictive.
+     *
+     * @since S60 v3.2
+     * @param aIndex The index of predictive
+     * @param aCharCode The result predictive
+     * @return Predictive char code
+     */
+    void GetPredictive(TInt aIndex, TDes& aCharCode) const;
+
+    /**
+     * Clear the candidate list.
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+    void ClearCandidates();
+    
+    /**
+     * Set number mode
+     *
+     * @since S60 v3.2
+     * @param aNumberMode Given number mode
+     * @return None
+     */
+    void SetNumberMode(const TAknEditorNumericKeymap aNumberMode);
+    
+    /**
+     * Set number mode
+     *
+     * @since S60 v3.2
+     * @param aCustomMode The customized number key mapping, 0-9
+     *                    are not included.
+     * @return None
+     */
+    void SetNumberModeL(const TDesC& aCustomMode);
+
+    /**
+     * Load and publish default repository values
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+    void LoadAndPublishDefaultL();
+
+    /**
+     * Set the screen mode.
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+     void SetScreenMode(const TPixelsTwipsAndRotation& aScreenMode);
+
+    /**
+     * Set the screen mode.
+     *
+     * @since S60 v3.2
+     * @param aBr The Bottom right point
+     * @return None
+     */
+    void SaveWindowPos(const TPoint& aBr);
+
+    /**
+     * Set the screen mode.
+     *
+     * @since S60 v3.2
+     * @param aRange The range
+     * @return None
+     */
+    void SaveRange(TInt aRange);
+
+    /**
+     * Get window position
+     *
+     * @since S60 v3.2
+     * @return The bottom-right point of layout from repository
+     */            
+    TPoint GetWindowPos(); 
+       
+    /**
+     * Callback method to notify client about change.
+     *
+     * @since S60 v3.2
+     * @param aPtr The callback data
+     * @param aSetting The setting Uid
+     * @return None
+     */
+    static TInt HandleFepRepositoryCallBack(TAny* aPtr);
+    
+    /**
+     * Callback method to notify client about change.
+     *
+     * @since S60 v3.2
+     * @param aPtr The callback data
+     * @return None
+     */
+    static TInt HandleGSRepositoryCallBack(TAny* aPtr);
+
+    /**
+     * Set permitted ranges
+     *
+     * @since S60 v3.2
+     * @param aPermittedRanges The permitted ranges.
+     * @return None
+     */            
+    void SetPermittedCases(TInt aPermittedCases);
+    TInt PermittedCases();
+    
+    /**
+     * Get next predictive page
+     *
+     * @since S60 v3.2
+     * @return None
+     */            
+    void GetNextPredictivePage();
+    
+    /**
+     * Judge if next predictive candidate exist
+     *
+     * @since S60 v3.2
+     * @return ETrue if candidate exist, otherwise EFalse;
+     */            
+    TBool PredictiveCandidateExisted();
+    
+    /**
+     * Set stroke end mark to stroke end mark control
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+    void SetStrokeEndMark();
+    
+    /**
+     * Set control which handle stroke end mark info
+     *
+     * @since S60 v3.2
+     * @aStrokeControl The control that handle stroke end mark info
+     * @return None
+     */
+    void SetStrokeEndMarkControl(MAknFepHwrPropertySubscriber* aStrokeControl);
+    
+    /**
+     * Get stroke end mark from control which handle it
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+    TPoint StrokeEndMarkFromControl();
+    
+    /**
+     * Judge if current permitted range is only number range
+     *
+     * @since S60 v3.2
+     * @return ETrue f current permitted range is only number range
+     */
+    TBool IsNumberOnly();
+
+    /**
+     * Set flag to indicate whether size is changing
+     *
+     * @since S60 v3.2
+     * @param aFlag ETrue means size is changing, otherwise EFalse
+     * @return None
+     */            
+    void SetSizeChanging(TBool aFlag);
+    
+    /**
+     * Get flag of whether size is changing
+     *
+     * @since S60 v3.2
+     * @return ETrue if size is changing, otherwise EFalse
+     */            
+    TBool SizeChanging();
+    
+    /**
+     * Get pen trail color
+     *
+     * @since S60 v3.2
+     */        
+    TInt GetPenTrailColor();
+    TInt SetInputAreaSize(TSize& aSize);
+    TInt SetScreenSize(TSize& aSize);
+private:  
+
+    /**
+     * C++ constructor
+     *
+     * @since S60 v3.2
+     * @return None
+     */            
+    CAknFepHwrBxDataStore();
+    
+    /**
+     * Second phase constructor
+     *
+     * @since S60 v3.2
+     * @return None
+     */
+    void ConstructL(CPtiEngine* aPtiEngine);
+
+    /**
+     * Notify subscriber
+     *
+     * @since S60 v3.2
+     * @param aPropertyName The property name
+     * @param aValue The new value
+     * @return None
+     */            
+    void NotifySubscriber(MAknFepHwrPropertySubscriber::TAknFepHwrProperty aPropertyName, 
+                          const TDesC& aValue);
+
+    /**
+     * Get new value from cenrep of aId.
+     *
+     * @since S60 v3.2
+     * @param aWatcher The watcher to read
+     * @param aId The Uid
+     * @return None
+     */
+    TInt GetNewValue(CAknFepRepositoryWatcher* aWatcher, TInt aId);
+    
+    /**
+     * Judge if a language is Chinese
+     *
+     * @since S60 v3.2
+     * @param aLanguage Given language code
+     * @return ETrue if aLanguage is Chinese, otherwise EFalse
+     */
+    TBool LanguageIsChinese(TInt aLanguage);
+    
+    /**
+     * Set engine language
+     *
+     * @since S60 v3.2
+     * @param aLanguage Given language code
+     * @return None
+     */
+    void SetEngineLanguage(TInt aLanguage);
+
+    void ClearExtCandidate();
+private:// data
+    
+    /**
+     * Subscriber List
+     */
+    RPointerArray<MAknFepHwrPropertySubscriber> iSubscriberList;
+    
+    /**
+     * Trigger string (Own)
+     */
+    CAknFepHwrTriggerStr* iTriggerStr;
+    
+    /**
+     * predictive list
+     */
+    RPointerArray<HBufC> iPredictives;
+
+    /**
+     * candidate list
+     */
+    RPointerArray<HBufC> iCandidates;
+    
+    /**
+     * The candidate range start index
+     */
+    RArray<TInt> iRangeStartPos;
+
+    /**
+     * Permitted ranges
+     */
+    RArray<TInt> iPermittedRanges;
+    
+    /**
+     * Permitted range in int format
+     */
+    TInt iIntRange;
+    
+    /**
+     * Current case
+     */
+    TInt iCase;
+
+    /**
+     * Current language
+     */
+    TInt iLanguage;
+    
+    /**
+     * Pen size
+     */
+    TSize iPenSize;
+
+    /**
+     * Pen color
+     */
+    TRgb iPenColor;
+    
+    /**
+     * The repository (Own);
+     */
+    CRepository* iRepositoryFep;
+    
+    /**
+     * The repository (Own);
+     */
+    CRepository* iRepositorySetting;
+
+    /**
+     * The engine (Own);
+     */
+    CAknFepHwrEngine* iHwrEngine;
+    
+    /**
+     * The screen mode setting id;
+     */
+    TUint32 iSettingId;
+
+    /**
+     * The repository watcher(Own);
+     */
+    CAknFepRepositoryWatcher* iFepRepositoryWatcher;
+
+    /**
+     * The repository watcher(Own);
+     */    
+    CAknFepRepositoryWatcher* iGSRepositoryWatcher;
+    
+    /**
+     * The Bottom-right position of layout;
+     */    
+    TPoint iWindowPosition;
+    
+    TInt iPermittedCases;
+    
+    MAknFepHwrPropertySubscriber* iStrokeControl;
+
+    TBool iSizeChanging;
+ };
+
+#endif // C_CAKNFEPHWRBXDATASTORE_H
+
+// End Of File