diff -r ebd48d2de13c -r ecbabf52600f fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/insertionpoint.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/insertionpoint.h Wed Sep 01 12:23:33 2010 +0100 @@ -0,0 +1,282 @@ +/* +* Copyright (c) 2008-2008 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: +* Provides the CInsertionPoint definition. +* +*/ + + + + + + + + + + + +#ifndef INSERTIONPOINT_H +#define INSERTIONPOINT_H + +#include // For CActive, link against: euser.lib +#include // For RTimer, link against: euser.lib +#include +#include "aknfepuilayoutdatamgr.h" + +/** + * The cursor observer interface. + * + * @lib aknfepuiavkonplugin.dll + * @since S60 v5.0 + */ +class MRefreshObserver + { +public: + /** + * When the cursor state is changed,it will notify its observer through this function. + * + * @since S60 v5.0 + * @param None. + * @return None. + */ + virtual void Refresh( ) = 0; + }; + +/** + * The cursor class. + * + * @lib aknfepuiavkonplugin.dll + * @since S60 v5.0 + */ + +class CInsertionPoint : public CActive + { +public: + enum TInsertionPointState + { + EUninitialized, + EInitialized, + EError + }; + + /** + * Cancel and destroy. + * + * @since S60 v5.0. + * @return none. + */ + virtual ~CInsertionPoint( ); + + /** + * NewL function. + * + * @since S60 v5.0. + * @return none. + */ + static CInsertionPoint* NewL( CAknFepUiLayoutDataMgr* aLafDataMgr ); + + /** + * NewLC funciton. + * + * @since S60 v5.0. + * @return none. + */ + static CInsertionPoint* NewLC( CAknFepUiLayoutDataMgr* aLafDataMgr ); + + /** + * Set iRefreshObserver member. + * + * @since S60 v5.0 + * @param aObserver. The observer you want to set. + * @return none. + */ + void SetRefreshObserver( MRefreshObserver* aObserver ); + + /** + * Set the position of cursor. + * The max position of cursor is larger than length of visual text + * by 1 stride. + * + * @since S60 5.0 + * @param aOffset. The cursor position which based on 0 index. + * @return None. + */ + void SetPosition( TInt aOffSet ); + + /** + * Set the rect where visual text will be displayed. + * + * @since S60 v5.0 + * @param aRect. The rect you want to display the visual text in. + * @return None. + */ + void SetTextRect( TRect aRect ); + + /** + * Set the height of cursor. + * + * @since S60 v5.0 + * @param aHeight. The cursor height you want to set. + * @return. + */ + void SetHeight(); + + /** + * Draw the cursor on the screen. + * + * @since S60 v5.0 + * @param aGc. the gc you used to draw the cursor. + * @return. + */ + void Draw( CWindowGc& aGc ); + + /** + * Active the cursor into active state. + * + * @since S60 v5.0 + * @param None. + * @return None. + */ + void Active(); + + /** + * Deactive the cursor into deactive state. + * + * @since S60 v5.0 + * @param None. + * return None. + */ + void Deactive(); + +private: + + /** + * Insertion Point. + * + * @since S60 v5.0 + * @param None. + */ + CInsertionPoint( CAknFepUiLayoutDataMgr* aLafDataMgr ); + + /** + * Two-phrase constructor. + * + * @since S60 v5.0 + * @param None. + * @return None. + */ + void ConstructL(); + + /** + * From CActive. + * The callback function used by CActiveScheduler. + * + * @since S60 v5.0 + * @param None. + * @return None. + */ + void RunL(); + + /** + * From CActive. + * How to cancel me. + * + * @since S60 v5.0 + * @param None. + * @return None. + */ + void DoCancel(); + + /** + * From CActive. + * Handle leaves from RunL(). + * + * @since S60 v5.0 + * @param None. + * @return None. + */ + TInt RunError( TInt aError ); + + /** + * Start the cursor with glint if actived or with gray color if deactived. + * + * @since S60 v5.0 + * @param aDelay. After this time, the RunL should be called. + * @return None. + */ + void StartL( TTimeIntervalMicroSeconds32 aDelay ); + +private: + // Data. + /** + * The state of CInsertionPoint object. + */ + TInt iState; + /** + * The timer for changing the visibility of this cursor. + */ + RTimer iTimer; + /** + * The rect that visual text must be displayed on. + */ + TRect iTextRect; + /** + * the cursor rect which will be drawn onto the screen. + */ + TRect iCursorRect; + /** + * Whether this cursor should be displayed. + */ + TBool isVisible; + /** + * the length from the beginning of visual text to the cursor position. + */ + TInt iOffSet; + /** + * the height of cursor. + */ + TInt iHeight; + /** + * the BrushColor of active cursor. + */ + TRgb iActiveBrushColor; + /** + * the PenColor of active cursor. + */ + TRgb iActivePenColor; + /** + * the BrushColor of active cursor. + */ + TRgb iInactiveBrushColor; + /** + * the PenColor of active cursor. + */ + TRgb iInactivePenColor; + /** + * the width of cursor. + */ + TInt iWidth; + /** + * Whether this cursor is actived. + */ + TBool isActive; + /** + * The observer for caring of the cursor's change. + * Not own. + */ + MRefreshObserver* iRefreshObserver; + CAknFepUiLayoutDataMgr* iLafDataMgr; + }; + +#endif /* INSERTIONPOINT_H */