--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputhwrtrui/inc/truihwrbox.h Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,593 @@
+/*
+* 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: hand writing box - control in Training UI application
+*
+*/
+
+
+#ifndef C_TRAININGUIHWRBOX_H
+#define C_TRAININGUIHWRBOX_H
+
+// includes
+#include <coecntrl.h>
+#include <AknInfoPopupNoteController.h> // Tooltip
+
+// forward declarations
+class MTruiHwrBoxObserver;
+class CAknInfoPopupNoteController;
+class CAknsBasicBackgroundControlContext;
+
+const TPoint KTail( 0xFFFF,0 );
+
+// Class declaration
+/**
+ * CTruiHwrBox
+ * CTruiHwrBox is new component, which allows input and output a character
+ * model by strokes
+ * @lib avkon.lib
+ */
+class CTruiHwrBox : public CCoeControl, public MAknInfoPopupNoteObserver
+ {
+public:
+
+ /* Flags for hwrbox state. HwrBox must be one and only one state */
+ enum TBoxState
+ {
+ /* Already has model but doesn't play the animation */
+ EExistModelStop = 0,
+ /* Already has model and play the animation */
+ EExistModelDraw,
+ /* Ready to input an new character model */
+ ENewModelStop,
+ /* Use is inputting an new character model */
+ ENewModelDraw,
+ };
+
+ enum THwrBoxFlag
+ {
+ ENoFrameHwrBox = 0x00000000,
+ EFrameHwrBox = 0x00000001,
+ EReadOnlyHwrBox = 0x00000002,
+ EWritableHwrBox = 0x00000004
+ };
+
+public:
+
+ /**
+ * Two-phased constructor.
+ * @param aParent the parent control for choice list
+ * @param aRect the extent of the control
+ * @return Pointer to CTruiHwrBox's instance
+ */
+ static CTruiHwrBox* NewL( CCoeControl* aParent,
+ MTruiHwrBoxObserver* aHwrBoxObserver = NULL,
+ MAknsControlContext* aBgContext = NULL );
+
+ /**
+ * Two-phased constructor.
+ * @param aParent the parent control for choice list
+ * @param aRect the extent of the control
+ * @return Pointer to CTruiHwrBox's instance
+ */
+ static CTruiHwrBox* NewLC( CCoeControl* aParent,
+ MTruiHwrBoxObserver* aHwrBoxObserver = NULL,
+ MAknsControlContext* aBgContext = NULL );
+
+ /**
+ * Destructor
+ */
+ ~CTruiHwrBox();
+
+ /**
+ * Periodic Callback function
+ * To save the model
+ *
+ * @param aObject: Transfer the pointer to CTruiHwrBox into this function
+ * @return system-wide err code
+ */
+ static TInt TimeToSaveL( TAny* aObject );
+
+ /**
+ * Save the new inputting model
+ */
+ void SaveModelL();
+
+ /**
+ * Save the new inputting model by manual.
+ */
+ void SaveModelByManuallyL();
+
+ /**
+ * Periodic Callback function
+ * To draw the next piont in the animation
+ *
+ * @param aObject: Transfer the pointer to CTruiHwrBox into this function
+ * @return system-wide err code
+ */
+ static TInt TimeToDrawNextL( TAny* aObject );
+
+ /**
+ * Draw the next piont in the animation
+ */
+ void DrawNextL();
+
+ /**
+ * Begin to draw the existing model
+ *
+ * @param aIsScale ETrue scale points to the fitable size before playing.
+ * @param aRefSize The size as the reference coordination for scaling.
+ */
+ void PlayAnimation( TBool aIsScale = EFalse, const TSize& aRefSize = TSize( 1, 1 ) );
+
+ /**
+ * clear the existing model
+ */
+ void ClearExistModel();
+
+ /**
+ * Set HwrBox observer
+ * @param aHwrBoxObserver the observer
+ */
+ void SetHwrBoxObserver( MTruiHwrBoxObserver* aHwrBoxObserver );
+
+ /**
+ * Get the Hwrbox's model
+ *
+ * @return Reference to iPointArrayModel
+ */
+ RArray<TPoint>& Model();
+
+ /**
+ * Get the Hwrbox's state
+ *
+ * @return Current HWR box's state
+ */
+ TInt BoxState() const;
+
+ /**
+ * Pause the playing of animation
+ */
+ void PausePlaying();
+
+ /**
+ * Resume the playing of animation
+ */
+ void ResumePlaying();
+
+ /**
+ * Set guiding line
+ *
+ * @param aTop The vertical coordinate of top guiding line
+ * @param aBottom The vertical coordinate of bottom guiding line
+ * @return system-wide err code
+ */
+ TInt SetGuidingLine( TInt aTop, TInt aBottom );
+
+ /**
+ * Show trails statically
+ *
+ * @param aPointArray The points that will be shown in HwrBox
+ */
+ void ShowTrails( const RArray<TPoint>& aPointArray,
+ TBool aIsScale = EFalse,
+ const TSize& aRefSize = TSize( 1, 1 ) );
+
+ /**
+ * Show tooltip
+ *
+ * @param aText The tooltip tex.
+ * @param aPosition The tooltip's location.
+ * @param aBeforeTimeout The time internal that will popup tooltip
+ * @param aInViewTimeout The time internal that will hide tooltip
+ */
+ void ShowTooltipL( const TDesC& aText,
+ const TPoint& aPosition,
+ const TInt aBeforeTimeout,
+ const TInt aInViewTimeout );
+
+ /**
+ * Set the position for tooltip
+ *
+ * @param aPosition The tooltip's location.
+ */
+ void SetTooltipPosition( const TPoint& aPosition );
+
+ /**
+ * Hide tooltip
+ *
+ */
+ void HideInfoPopupNote();
+// From CCoeControl
+
+ /**
+ * From CCoeControl. Handles key events.
+ * @param aKeyEvent the key event
+ * @param aType The type of key event
+ * @return Indicates whether or not the keyevent was used by this control
+ */
+ TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+
+ /**
+ * From CCoeControl. Draws control to given area
+ * @param aRect The rectangle that should be drawn by the control.
+ */
+ void Draw( const TRect& aRect ) const;
+
+ /**
+ * Draw character model
+ */
+ void DrawModel();
+
+ /**
+ * Set box state from outside
+ *
+ * @param aReady ture means model is loaded
+ * false means no model is loaded
+ */
+ void ModelIsReady( TBool aReady = ETrue );
+
+ TRect DrawableRect() const;
+
+ inline void SetHwrBoxFlag( TUint aFlag )
+ {
+ iFlag = aFlag;
+ };
+
+ /**
+ * Set flag to indicate if draw bottom guideline
+ *
+ * @param aBottomGuideLineDisplay ETrue means draw bottom guideline
+ */
+ inline void SetDisplayBottomGuideLine( TBool aBottomGuideLineDisplay )
+ {
+ iBottomGuideLineDisplay = aBottomGuideLineDisplay;
+ };
+
+ /**
+ * Set flag to indicate if draw top guideline
+ *
+ * @param aTopGuideLineDisplay ETrue means draw bottom guideline
+ */
+ inline void SetDisplayTopGuideLine( TBool aTopGuideLineDisplay )
+ {
+ iTopGuideLineDisplay = aTopGuideLineDisplay;
+ };
+
+ /**
+ * Set editing mode to readonly or writable
+ *
+ * @param aReadOnly ETrue means hwrbox is readonly
+ * EFalse means hwrbox is loaded
+ */
+ void SetHwrBoxReadOnly( TBool aReadOnly );
+
+// from CCoeControl
+
+ /**
+ * From CCoeControl. Handles pointer events
+ * @param aPointerEvent the pointer event be be handled.
+ */
+ void HandlePointerEventL( const TPointerEvent& aPointerEvent );
+
+protected:
+
+
+ /**
+ * From CoeControl.
+ * Responds to changes to the size and position of the contents of this control.
+ */
+ void SizeChanged();
+
+ /**
+ * Handles a change to the control's resources.
+ *
+ * @param aType A message UID value.
+ */
+ void HandleResourceChange( TInt aType );
+
+ /**
+ * Handle focus changed
+ *
+ */
+ void FocusChanged( TDrawNow aDrawNow );
+
+private:
+
+ /**
+ * C++ Default Constructor
+ */
+ CTruiHwrBox();
+
+ /**
+ * 2nd phase constructor
+ * @param aParent the parent control for choice list
+ * @param aRect the extent of the control
+ */
+ void ConstructL( CCoeControl* aParent,
+ MTruiHwrBoxObserver* aHwrBoxObserver = NULL,
+ MAknsControlContext* aBgContext = NULL );
+
+ /**
+ * Check if the point is contained in drawing area
+ *
+ * @param aPoint The point which to be checked
+ * @return ETrue: The point is in drawing area
+ * EFalse: The point isn't in drawing area
+ */
+ TBool IsContained( const TPoint& aPoint ) const;
+
+ /**
+ * Adjust shortcut model's point to fit the popup hwr box.
+ * @param aOriginSize Origin size of which input character model.
+ * @param aRealSize Real popup hwr box's size.
+ * @param aModel The model to be adjuested.
+ */
+ void ScaleModel( const TSize& aOriginSize,
+ const TSize& aRealSize,
+ RArray<TPoint>& aModel );
+
+ /**
+ * Draws all points.
+ */
+ void DrawTrails( CWindowGc& aGc ) const;
+
+ /**
+ * Set context for this control.
+ *
+ * @param aGc Handle for CWindowGc
+ */
+ void PrepareContext( CWindowGc& aGc ) const;
+
+ /**
+ * Load bitmaps for border.
+ *
+ */
+ void LoadBorderBitmapsL();
+
+ /**
+ * Load bitmaps for shadows.
+ *
+ */
+ void LoadShadowBitmapsL();
+
+ /**
+ * Load bitmaps for guidelines.
+ *
+ */
+ void LoadGuideLineBitmapsL();
+
+ /**
+ * Load layouts for borders from LAF.
+ *
+ * @param aVarity Varity for LAF
+ */
+ void LoadBorderLayout( TInt aVarity );
+
+ /**
+ * Load layouts for shadows from LAF.
+ *
+ * @param aVarity Varity for LAF
+ */
+ void LoadShadowLayout( TInt aVarity );
+
+ /**
+ * Load layouts for guidelines from LAF.
+ *
+ * @param aVarity Varity for LAF
+ */
+ void LoadGuideLineLayout( TInt aVarity );
+
+ /**
+ * Draw borders.
+ *
+ */
+ void DrawBorders( CWindowGc& aGc ) const;
+
+ /**
+ * Draw shadows.
+ *
+ */
+ void DrawShadows( CWindowGc& aGc ) const;
+
+ /**
+ * Draw guideliens.
+ *
+ */
+ void DrawGuideLines( CWindowGc& aGc ) const;
+
+// From MAknInfoPopupNoteObserver
+ /**
+ * Handles events reported from info popup note.
+ * @param aController The controller that controls the note, from
+ * where the event originates.
+ * @param aEvent The event.
+ */
+ void HandleInfoPopupNoteEvent( CAknInfoPopupNoteController* aController,
+ TAknInfoPopupNoteEvent aEvent );
+
+private: // data
+
+ /**
+ * When this timer time out, the inputting of new character is over.
+ * Own.
+ */
+ CPeriodic* iTimeToSave;
+
+ /**
+ * To control drawing speed
+ * Own.
+ */
+ CPeriodic* iTimeToDrawNext;
+
+ /**
+ * Contain the points need to be drawn on screen
+ * Own
+ */
+ RArray<TPoint> iPointArrayDraw;
+
+ /**
+ * Contain the character model points
+ * Own
+ */
+ RArray<TPoint> iPointArrayModel;
+
+ /**
+ * Current control state
+ */
+ TBoxState iBoxState;
+
+ /**
+ * Observe user's input
+ * Not own
+ */
+ MTruiHwrBoxObserver* iHwrBoxObserver;
+
+ /**
+ * Use this attribute to count the last animated point
+ * zero implies the first point
+ */
+ TInt iLastAnimatedPoint;
+
+ /**
+ * Guideline top left point
+ */
+ TPoint iGuideLineTopL;
+
+ /**
+ * Guideline top right point
+ */
+ TPoint iGuideLineTopR;
+
+ /**
+ * Guideline bottom left point
+ */
+ TPoint iGuideLineBottomL;
+
+ /**
+ * Guideline bottom right point
+ */
+ TPoint iGuideLineBottomR;
+
+ /**
+ * Indicate pen position
+ */
+ TBool iPenInRect;
+
+ /**
+ * Flag of training box.
+ */
+ TUint iFlag;
+
+ /**
+ * Component used to show tooltip
+ * Own.
+ */
+ CAknInfoPopupNoteController* iTooltip;
+
+ /**
+ * Check if draw bottom guideline.
+ */
+ TBool iBottomGuideLineDisplay;
+
+ /**
+ * Check if draw bottom guideline.
+ */
+ TBool iTopGuideLineDisplay;
+
+ /**
+ * Pointer array to store pointers to bitmaps of borders
+ *
+ * Own
+ */
+ RPointerArray<CFbsBitmap> iBorderBitmaps;
+
+ /**
+ * Pointer array to store pointers to mask bitmaps of borders
+ *
+ * Own
+ */
+ RPointerArray<CFbsBitmap> iBorderBitmapMasks;
+
+ /**
+ * Array to store pointers to TAknLayoutRect for borders
+ *
+ * Own
+ */
+ RArray<TAknLayoutRect> iBorderLayout;
+
+
+ /**
+ * Pointer array to store pointers to bitmaps of shadows
+ *
+ * Own
+ */
+ RPointerArray<CFbsBitmap> iShadowBitmaps;
+
+ /**
+ * Pointer array to store pointers to mask bitmaps of shadows
+ *
+ * Own
+ */
+ RPointerArray<CFbsBitmap> iShadowBitmapMasks;
+
+ /**
+ * Array to store pointers to TAknLayoutRect for shadows
+ *
+ * Own
+ */
+ RArray<TAknLayoutRect> iShadowLayout;
+
+ /**
+ * Pointer array to store pointers to bitmaps of guideline
+ *
+ * Own
+ */
+ RPointerArray<CFbsBitmap> iGuideLineBitmaps;
+
+ /**
+ * Pointer array to store pointers to mask bitmaps of guideline
+ *
+ * Own
+ */
+ RPointerArray<CFbsBitmap> iGuideLineBitmapMasks;
+
+ /**
+ * Array to store pointers to TAknLayoutRect for guidelines
+ *
+ * Own
+ */
+ RArray<TAknLayoutRect> iGuideLineLayout;
+
+ /**
+ * Rect of drawable for trails;
+ *
+ */
+ TRect iDrawabelRect;
+
+ /**
+ * Color of pen;
+ *
+ */
+ TRgb iPenColor;
+
+
+ CAknsBasicBackgroundControlContext* iBgContext;
+
+ TBool iStartSave;
+ };
+
+#endif // TRAININGUIHWRBOX_H
+
+// end of file
+