diff -r ebd48d2de13c -r ecbabf52600f textinput/peninputhwrtrui/inc/truimainviewcontainer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputhwrtrui/inc/truimainviewcontainer.h Wed Sep 01 12:23:33 2010 +0100 @@ -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 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 iLineWidthArray; + }; + +#endif // C_TRUIMAINVIEWCONTAINER_H +