textinput/peninputhwrtrui/inc/truimainviewcontainer.h
changeset 0 eb1f2e154e89
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputhwrtrui/inc/truimainviewcontainer.h	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,439 @@
+/*
+* 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:  CTruiMainViewContainer class of TrainingUI
+*
+*/
+
+
+#ifndef C_TRUIMAINVIEWCONTAINER_H
+#define C_TRUIMAINVIEWCONTAINER_H
+
+#include "truicontainerbase.h"
+#include "truihwrboxobserver.h"
+
+class CAknButton;
+class CAknChoiceList;
+class CTruiHwrBox;
+class CAknCharMapDialog;
+class CAknsBasicBackgroundControlContext;
+class CEikLabel;
+class CAknPreviewPopUpController;
+
+const TInt KActiveCharSize = 1;
+const TInt KLabelTextLen = 100;
+/**
+ *  CTruiMainViewContainer container control
+ *  Used as the component to training ui main view
+ *
+ *  @code
+ *      iContainer = CTruiMainViewContainer::NewL( ClientRect() );
+ *      iContainer->SetMopParent( this );
+ *      AppUi()->AddToStackL( *this, iContainer );
+ *  @endcode
+ *
+ */
+class CTruiMainViewContainer : public CTruiContainerBase, 
+                               public MCoeControlObserver,
+                               public MTruiHwrBoxObserver
+    {
+public:
+    
+    /**
+     * Two-phased constructor.
+     * @param aRect The rectangle that defines the control's extent. 
+     *              The rectangle's origin is relative to the origin of its associated window.
+     * @return Pointer to the component control
+     */
+    static CTruiMainViewContainer* NewL( const TRect& aRect );
+    
+    /**
+     * Two-phased constructor.
+     * @param aRect The rectangle that defines the control's extent. 
+     *              The rectangle's origin is relative to the origin of its associated window.
+     * @return Pointer to the component control
+     */
+    static CTruiMainViewContainer* NewLC( const TRect& aRect );
+
+    /**
+     * Destructor.
+     */
+    virtual ~CTruiMainViewContainer();
+    
+    /**
+     * Handles an event from an observed control.
+     *
+     * @param aControl The control that sent the event.    
+     * @param aEventType The event type.     
+     */    
+    void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType );
+    
+    /**
+     * Handles language script changed.
+     *
+     * @param aScriptId The selected language script's Id
+     */  
+    void HandleLanguageScriptChangedL( TInt aScriptId );
+
+    /**
+     * Handles character range changed.     
+     *          
+     * @param aIndex The index of range item in Menu "character range" or choicelist
+     * @param aRangeId The range Id.
+     */  
+    void HandleCharRangeChangedL( TInt aIndex, TInt aRangeId );
+    
+    /**
+     * Handles choosing an active char from SCT.
+     *          
+     */  
+    void HandleChooseCharEventL();
+    
+    /**
+     * Preview character model
+     *          
+     */  
+    void PreviewCharacterModel();
+    
+    /**
+     * Set current trained character
+     *
+     * @param aChar the trained character         
+     */ 
+    void SetCurrentCharL( const TPtrC& aChar );
+    
+    /**
+     * Clear current model
+     *        
+     */ 
+    void ClearCurrentModel();
+    
+    /**
+     * Delete model of current character
+     *        
+     */ 
+    void DeleteModelL();
+    
+    /**
+     * Delete all models of current character
+     *        
+     */ 
+    void DeleteAllModelL();
+
+    /**
+     * Check if clear button has been dimmed
+     *       
+     * @return ETrue: dimmed; EFalse: undimmed  
+     */    
+    TBool IsButtonDimmed();
+    
+    /**
+     * Check if all delete button has been dimmed
+     *       
+     * @return ETrue: dimmed; EFalse: undimmed  
+     */
+    TBool IsAllDelete();
+    
+    /**
+     * Get character set Id, used to choose which characters will be displayed in SCT
+     *
+     * @param aRangeId Character range Id for special character table 
+     *     
+     * @return Id of character set. 
+     */       
+    TInt SctCharacterSetId( TInt aRangeId );
+
+    /**
+     * Get cyrillic lower character set Id
+     *
+     * @param aInputLanguage Current input language
+     *     
+     * @return Id of character set. 
+     */       
+    TInt SctCyrillicLowerCharacterSetId( TLanguage aInputLanguage );
+
+    /**
+     * Get cyrillic upper character set Id
+     *
+     * @param aInputLanguage Current input language
+     *     
+     * @return Id of character set. 
+     */       
+    TInt SctCyrillicUpperCharacterSetId( TLanguage aInputLanguage );
+        
+    /**
+     * Before exit, do some necessary operation
+     *
+     */
+    void PrepareToExitL();
+    
+    /**
+     * Handle size changed
+     *
+     * @param aVarity: Use aVarity to load different resulotion's LAF data.
+     */    
+    void DoSizeChanged( TInt aVarity );
+
+private:
+
+   /**
+    * Constructor.
+    */    
+    CTruiMainViewContainer();
+
+   /**
+    * Perform the second phase construction of a CTruiMainViewContainer object.
+    *
+    * @param aRect: The rectangle that defines the control's extent. 
+    */
+    void ConstructL( const TRect& aRect );
+    
+    /**
+     * Create controls to be displayed in this container.
+     *
+     */    
+    void InitializeControlsL();
+    
+    /**
+     * Create label and display it in the container.
+     *
+     * @param aResourceID The resource ID
+     * @param aParent The parent of the control.
+     * @param aObserver The observer of the control.
+     * @return The pointer to the label.
+     */
+    CEikLabel* CreateLabelL( const TInt aResourceId,
+                             const CCoeControl* aParent,
+                             MCoeControlObserver* aObserver );
+                             
+    /**
+     * Create choicelist and display it in the container.
+     *
+     * @param aParent The parent of the control.
+     * @param aObserver The observer of the control.   
+     * @param aTextArray The content displayed in the control.
+     * @param aButton The attached button.
+     * @return The pointer to the choiclist.
+     */
+    CAknChoiceList* CreateChoiceListL( CCoeControl* aParent,
+                                       MCoeControlObserver* aObserver,
+                                       CDesCArray* aTextArray,
+                                       CAknButton* aButton );
+                             
+    /**
+     * Create HWRBox and display it in the container.
+     *
+     * @param aParent The parent of the control.
+     * @param aObserver The observer of the control.
+     * @return The pointer to the choiclist.
+     */
+    CTruiHwrBox* CreateHwrBoxL( CCoeControl* aParent, 
+                                MTruiHwrBoxObserver* aObserver );
+     
+     /**
+     * Return button's resourceId by Character Range Id.
+     *
+     * @param aRangeId The character range ID.     
+     * @return Reource Id to be used to create button for choicelist.
+     */                                           
+    TInt ButtonResourceId( TInt aRangeId ) const;
+
+    /**
+     * Pop Sct dialog
+     *
+     * @param aCharCase Character case for special character table 
+     *
+     * @param aSpecialChar Reference to the buffer where selected special characters are put.
+     * @param aCharSetResourceId The resource ID of special character table 
+     * @return Id of the button used to dismiss dialog.
+     * 
+     */    
+    TInt PopupSctDialogL( TInt aCharCase, TDes& aSpecialChars, TInt aCharSetResourceId );
+
+    /**
+     * Popup information note
+     *
+     * @param aText The text to be displayed in CAknInformationNote.
+     */ 
+    void PopupInformationNoteL( const TDesC& aText );       
+                                   
+    /**
+     * Adjust special behavior characters to displayable characters.
+     * @param aResult Return result for adjustment.
+     *
+     */
+    void AdjustDisplayChars( TDes& aResult );
+    
+    /**
+     * From CoeControl.
+     * Handles key event.
+     *
+     * @param aKeyEvent The key event.
+     * @param aType The type of key event: EEventKey, EEventKeyUp or EEventKeyDown. 
+     * @return Indicates whether or not the key event was used by this control.
+     */    
+    TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+
+    /**
+     *  GetHelpContext()
+     *  Identify the help context so that the framework can look up
+     *  the corresponding help topic
+     *  @param aContext Returns the help context
+     */    
+    void GetHelpContext( TCoeHelpContext& aContext ) const;
+            
+    /**
+     * From CoeControl.
+     * Responds to changes to the size and position of the contents of this control.
+     */
+    void SizeChanged();
+    
+    /**
+     * From CoeControl.
+     * Responds to a change in focus.
+     *
+     * @param aRect Contains the value that was passed to it by SetFocus(). 
+     */
+    void FocusChanged( TDrawNow aDrawNow );
+    
+    /**
+     * From CoeControl.
+     * Draws the container.
+     *
+     * @param aRect The region of the control to be redrawn. Co-ordinates are relative to the control's origin (top left corner).      
+     */    
+    virtual void Draw( const TRect& aRect ) const;
+    
+    /**
+     * From CoeControl.
+     * Handles a change to the control's resources.
+     *
+     * @param aType A message UID value.
+     */
+    void HandleResourceChange( TInt aType );   
+    
+    void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+    
+// From MTruiHWRBoxObserver 
+    /**
+     * From MTruiHWRBoxObserver.
+     * Input times out
+     * Handle the save model event
+     */
+    void SaveNewModelL();
+    
+    /**
+     * From MTruiHWRBoxObserver.
+     * HandleEventL
+     * Handle the message event from the HWRBox
+     * @param aMessage According to the aMessage to handle the event
+     */
+    void HandleEventL( TMessageType aMessage );
+       
+private: // data
+
+    /**
+     * The current trained character
+     */
+    TBuf<KActiveCharSize> iCurrentChar;
+    
+    /**
+     * The current tip of training character
+     */
+    HBufC* iLabeltext;
+    
+    /**
+     * Store the wrapped text to indicate which character is being trained.
+     * 
+     * Own
+     */
+    HBufC* iWrappedLabelText;
+
+    /**
+     * This text helps a user understand that he / she is
+     * teaching his / her own character models to HWR engine
+     * Not own
+     */
+    CEikLabel* iLabel;
+    
+    /**
+     * The Clear button in toolbar, used to clean up the Writing Box
+     * Not own
+     */
+    CAknButton* iClearBtn;
+
+    /**
+     * The preview button in toolbar
+     * Not own
+     */
+    CAknButton* iPreviewBtn;
+    
+    /**
+     * The button currently associated with choicelist.
+     * Not own
+     */
+    CAknButton* iCurChoiceListBtn;
+
+    /**
+     * Left buttons allow quick access to the previous character
+     * in the selected character range.
+     * Not own
+     */
+    CAknButton* iLeftBtn;
+
+    /**
+     * Indicates which character is currently selected.
+     * Not own
+     */
+    CEikLabel* iIindicator;
+
+    /**
+     * Right buttons allow quick access to the Next character
+     * in the selected character range.
+     * Not own
+     */
+    CAknButton* iRightBtn;
+    
+    /**
+     * ChoiceList is used for switching between character ranges.
+     * Not own
+     */
+    CAknChoiceList* iChoicelist;
+
+    /**
+     * The Writing Box is used for drawing a character model.
+     * Not own
+     */
+    CTruiHwrBox* iHwrBox;
+    
+    /**
+     * Pointer to background
+     * Own
+     */
+    CAknsBasicBackgroundControlContext*	iBackGround;        
+    
+    /**
+     * Rect of parent pane of label     
+     */
+    TRect iLabelPaneRect;
+    
+    /**
+     * MultiLineTextLayout of Label
+     */
+    TAknMultiLineTextLayout iMultilineLayout;
+     
+    RArray<TInt> iLineWidthArray;    
+    };
+
+#endif // C_TRUIMAINVIEWCONTAINER_H
+