textinput/peninputhwrtrui/inc/truiengine.h
changeset 0 eb1f2e154e89
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputhwrtrui/inc/truiengine.h	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,484 @@
+/*
+* Copyright (c) 2007 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:  CTruiEngine class of TrainingUI
+*
+*/
+
+
+#ifndef C_TRUIENGINE_H
+#define C_TRUIENGINE_H
+
+#include <e32base.h>
+#include <badesca.h>
+
+const TInt KShortcutMaxLength = 164;
+class CPtiEngine;
+class MTruiEngine;
+class TLanguageRelation;
+class CEikonEnv;
+    
+/**
+ *  CTruiEngine view class.
+ *
+ */
+class CTruiEngine : public CBase
+    {
+public:
+    /** 
+     * Two phase construction.
+     * 
+     * @return Pointer to CTruiEngine's instance
+     */
+    static CTruiEngine* NewL( CEikonEnv* aEikonEnv );
+
+    /** 
+     * Two phase construction.
+     * 
+     * @return Pointer to CTruiEngine's instance
+     */
+    static CTruiEngine* NewLC( CEikonEnv* aEikonEnv );   
+        
+    /**  
+     * Destroy the object and release all memory objects
+     */    
+    virtual ~CTruiEngine();
+
+    /**
+     * Get the current input language
+     *
+     * @return Current input language
+     */    
+    inline TLanguage InputLanguage() const;
+    
+//Language Script
+    /**
+     * Set current language script
+     *
+     * @param aIndex The index of language script in the array named iSupportedScript
+     */
+    void SetLanguageScriptByIndexL( TInt aIndex );
+    
+    /**
+     * Get name list of all supported language scripts
+     *
+     * @return CDesCArray* The name list
+     */
+    inline const CDesCArray* LanguageScriptName();
+    
+    /**
+     * Get id of supported language script
+     *
+     * @return RArray<Tint> list of the script id
+     */
+    inline const RArray<TInt>& SupportedLanguageScript();
+    
+    /**
+     * Get enum ID of the current language script
+     *
+     * @return  ID of the current language
+     */
+    inline TInt CurrentLanguageScript() const;
+    
+//Character Range
+    /**
+     * Set current character range
+     *
+     * @param aIndex The index of character range in the array named iSupportedRange
+     */
+    void SetCharacterRangeByIndexL( TInt aIndex );
+    
+    /**
+     * Get name list of all supported character range
+     *
+     * @return CDesCArray* The name list
+     */
+    CDesCArray* GetCharacterRangeName();
+    
+    /**
+     * Get enum ID of the current character range
+     *
+     * @return TInt ID of the character range
+     */
+    TInt GetCurrentCharacterRange();
+    
+    /**
+     * Get enum ID of the supported character ranges
+     *
+     * @return Reference to the array saving IDs of the supported range
+     */    
+    inline const RArray<TInt>& GetCurrentSupportedRangesId();
+    
+    /**
+     * Transform character range to engine's subrange
+     */
+    void SetSubrange();
+    
+//Character Set
+
+    /**
+     * Get current character set
+     *
+     * @return HBufC* The string contained character set
+     */
+    const HBufC* CharacterSet();
+    
+    /**
+     * Check if character has model
+     *
+     * @param aLanguageScript Where the character is come from
+     * @param aChar The character which is checked
+     * @return TBool True means this character has model
+     *               False means this character doesn't has model yet
+     */
+    TBool CheckCharacterModel( const TDesC& aChar );
+    
+    /**
+     * Get character model
+     *
+     * @param aChar Get this character's model
+     * @param aModel Array of points where the character's model is stored.     
+     */
+    void GetCharacterModelL( const TDesC& aChar, RArray<TPoint>& aModel );
+    
+    /**
+     * Set character model
+     *
+     * @param aChar Set model to this character
+     * @param aModel Array of points where the character's model is stored.
+     * @param aSimilarMsg Text exists in the HWREngine with the similar model.
+     * @return none, if the symbol model is invalid, leave with KErrAlreadyExists
+     */
+    void SetCharacterModelL( const TDesC& aChar,
+                             RArray<TPoint>& aModel,
+                             TDes& aSimilarMsg );
+        
+    /**
+     * Delete character model
+     *
+     * @param aChar Delete this character's model
+     * @return TInt Error value. If no error occurred, KErrNone is returned
+     */
+    TInt DeleteCharacterModel( const TDesC& aChar );
+    
+//Shortcut
+    
+    /**
+     * Check if shortcut has model
+     *
+     * @param aText The shortcut which is checked
+     * @return TBool True means this shortcut has model
+     *               False means this shortcut doesn't has model yet
+     */
+    TBool CheckShortcutModel( const TDesC& aText );
+        
+    /**
+     * Change the text of an existing shortcut
+     *
+     * @param aOldText The text of an existing shortcut
+     * @param aNewText The new text of the shortcut     
+     */
+    void ChangeShortcutTextL( const TDesC& aNewText );    
+
+    /**
+     * Set current editing shortcut
+     *
+     * @param sShortcut text of the shortcut
+     * @return TInt Error value. If no error occurred, KErrNone is returned
+     */
+    TInt SetShortcut( const TDesC& aText );
+    
+    /**
+     * Get current edited shortcut
+     *
+     * @return TDes shortcut text
+     */
+    inline TDes& Shortcut();
+    
+    /**
+     * Get all shortcuts from HWR engine
+     *
+     * @return Pointer to iShortcutList to contain all existing shortcut
+     */
+    inline CDesCArray* ShortcutTextList();
+    
+    /**
+     * Save shortcut text and its assigned character model into PTI Engine
+     *
+     * @param aText Save this Shortcut's model
+     * @param aModel Array of points where the Shortcut's model is stored.
+     * @param aSimilarMsg Text exists in the HWREngine with the similar model.
+     * @return none, if the symbol model is invalid, leave with KErrAlreadyExists
+     */
+    void SaveShortcutL( const TDesC& aText,
+                        RArray<TPoint>& aModel,
+                        TDes& aSimilarMsg );
+    
+    /**
+     * Delete Shortcut model
+     *
+     * @param aText Delete this Shortcut's model
+     * @return TInt Error value. If no error occurred, KErrNone is returned
+     */
+    TInt DeleteShortcut( const TDesC& aText );
+    
+    /**
+     * Update Shortcut list
+     *
+     */
+    void UpdateShortcutListL();
+    
+    /**
+     * Set edit state
+     *
+     * @param aNew: ETrue, perform the function of adding new shortcut. 
+     *              EFalse, perform the function of editting old shortcut.
+     */
+    inline void NewShortcut( TBool aNew );
+    
+    /**
+     * Get edit state
+     *
+     */
+    inline TBool NewShortcut();
+    
+    /**
+     * Set if display shortcut wizard view.
+     *
+     * @param aIsDisplay ETrue: Display shortcut wizard view
+     */
+    inline void SetDisplayWizard( TBool aIsDisplay );
+
+    /**
+     * Get if display shortcut wizard view
+     *
+     * @return ETrue: Display shortcut wizard view
+     */
+    inline TBool DisplayWizard() const;
+    
+    /**
+     * Set the current selected index
+     *
+     * @param aSelectedIndex currently selected index of shortcuts
+     */
+    inline void SetCurrentSelectedIndex( TInt aSelectedIndex );
+        
+    /**
+     * Get the current selected index
+     *
+     * @return aSelectedIndex currently selected index of shortcuts
+     */
+    inline TInt CurrentSelectedIndex();
+
+    /**
+     * Get guiding line pos
+     * 
+     * @param aSize The size of WritingBox
+     * @param aTop The vertical coordinate of top guiding line
+     * @param aBottom The vertical coordinate of bottom guiding line
+     * @return TInt Error value. If no error occurred, KErrNone is returned
+     */
+    TInt GetGuidingLinePos( const TSize& aSize, TInt& aTop , TInt&  aBottom); 
+
+    /**
+     * Get the number of the maximum of shortcuts
+     *
+     * @return TInt The number of the maximum of shortcuts
+     */
+    TInt MaxShortCutLength(); 
+    
+    /**
+     * Get trails assigned to the specified shortcut.
+     * 
+     * @param aText The specified shortcut text
+     * @param aModel Trails of the shortcut.
+     * @param aUnicode The assigned preset text if it is a preset shortcut,
+     *        otherwise, it is 0;     
+     */
+    void GetShortcutModelL( const TDesC& aText, RArray<TPoint>& aModel, TUint& aUnicode );
+    
+    /**
+     * Save preset shortcuts.
+     * 
+     * @param aUnicode The assigned preset text.
+     * @param aShortcut The shortcut to be save.
+     */
+    void SavePresetShortcutL( TUint aUnicode, const TDesC& aShortcut );
+
+    /**
+     * Get trails assigned to a preset text.
+     * 
+     * @param aUnicode The unicode of the preset text.
+     * @param aModel Store trails of the preset text.
+     * @param aShortcut Indicate whether the preset text has been assigned to a shortcut text.
+     *        If KNullDesC, it is not in use.
+     */
+    void GetPresetSymbolByUnicodeL( TUint aUnicode, RArray<TPoint>& aModel, TDes& aShortcut );
+    
+    /**
+     * Return all unicodes of preset text stored in PTI engine
+     * 
+     * @param aPresets All preset text's unicodes are stored in this array.     
+     */
+    void GetAllPresetSymbolsL( RArray<TUint>& aPresets );    
+    
+private:
+
+    /** 
+     * Perform the first phase of two phase construction.
+     */
+    CTruiEngine( CEikonEnv* aEikonEnv );
+    
+    /**
+     * Perform the second phase construction of a CTruidemoAppUi object 
+     */
+    void ConstructL(); 
+    
+    /**
+     * Initialize the table used to map language to language script
+     * @param aResourceId ResourceId of Language script set.
+     * @param aLanguageRelation Store the mappint relation.
+     */
+    void InitLanguageRelationL( TInt aResourceId, 
+                            RArray<TLanguageRelation>& aLanguageRelation );
+    
+    /**
+     * Initialize the supported language script.    
+     * @param aSupportedScript Store the suppotred script.
+     * @param aEngine PtiEngine from which get supported input language.
+     * @param aLanguageRelation Mapping relation used to convert language 
+     *                          into language script.     
+     */
+    void InitSupportedLanguageScriptL( RArray<TInt>& aSupportedScript,
+                                       CPtiEngine* aEngine,
+                              const RArray<TLanguageRelation>& aLanguageRelation );
+    
+    /**
+     * Get the active language script from the active input language
+     * @param aLanguageCode Currently active input language code.
+     * @param aLanguageRelation Mapping relation used to convert language 
+     *                          into language script.     
+     */
+    TInt GetActiveLanguageScript( TInt aLanguageCode, 
+                           const RArray<TLanguageRelation>& aLanguageRelation );
+                           
+    /**
+     * Get the resourc id of lower case of Cyrillic according to the current input language
+     * @param aLanguage Currently input language.
+     * @return resource id 
+     */
+    TInt CyrillicLowerResourceId( TLanguage aLanguage );
+    
+    /**
+     * Get the resourc id of upper case of Cyrillic according to the current input language
+     * @param aLanguage Currently input language.
+     * @return resource id 
+     */
+    TInt CyrillicUpperResourceId( TLanguage aLanguage );
+
+private:
+
+    /**
+     * Current edited shortcut
+     */
+    TBuf<KShortcutMaxLength> iShortcut;
+    
+    /**
+     * Array of all supported language script
+     * Own
+     */
+    RArray<TInt> iSupportedScript;
+        
+    /**
+     * Current language script
+     */
+    TInt iCurrentScript;
+    
+    /**
+     * Array of all supported character range
+     * Own
+     */
+    RArray<TInt> iSupportedRange;
+    
+    /**
+     * Array of the name of all supported character range
+     * Own
+     */
+    CDesCArray* iRangeName;
+    
+    /**
+     * Current character range
+     */
+    TInt iCurrentRange;
+    
+    /**
+     * String of character set
+     * Own
+     */
+    HBufC* iCharacterSet;
+       
+    /**
+     * Array of the shortcut
+     * Own
+     */
+    CDesCArray* iShortcutList;
+    
+    /**
+     * Indicate if current edited shortcut is new created
+     */
+    TBool iNewShortcut;
+    
+    /**
+     * The currently selected index of shortcuts
+     */
+    TInt iSelectedShortcut;
+    
+    /**
+     * PtiEngine
+     * Own
+     */
+    CPtiEngine* iEngine;
+    
+    /**
+     * Interface trui used in PtiEngine
+     * Not own
+     */
+    MTruiEngine* iPtiEngine;
+    
+    /**
+     * Current subrange
+     */
+    TInt iSubrange;
+    
+    /**
+     * Pointer to eikon enviroment.
+     * Not own
+     */
+    CEikonEnv* iEnv;
+    
+    /**
+     * Check if need to display shortcut wizard view
+     */
+    TBool iIsDisplay;
+    
+    /**
+     * Current input language
+     */    
+    TLanguage iInputLanguage;
+    };
+    
+#include "truiengine.inl"
+
+#endif // C_TRUIENGINE_H
+
+