diff -r 000000000000 -r eb1f2e154e89 textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutbutton.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputarc/inc/peninputlayoutcontrolinc/peninputlayoutbutton.h Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,814 @@ +/* +* Copyright (c) 2005-2006 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: header file of button and dragbar +* +*/ + +#ifndef C_CBUTTONBASE_H +#define C_CBUTTONBASE_H + +#include +/** + * CButtonBase + * + * Button base control. This class could be used directly by user. + * + * @lib peninputlayoutcontrol.lib + * @since S60 V4.0 + */ +class CButtonBase: public CFepUiBaseCtrl + { +public: + //constructor and destructor + /** + * Destructor. + * + * @since S60 V4.0 + */ + IMPORT_C virtual ~CButtonBase(); + + /** + * Factory function. + * + * @since S60 V4.0 + * @param aRect The rectangle area for this control + * @param aUiLayout Ui layout who contains this control.Ownership not transferred + * @param aControlId control Id + * @return An instance of CButtonBase class + */ + IMPORT_C static CButtonBase* NewL(const TRect& aRect,CFepUiLayout* aUiLayout,TInt aControlId); + + /** + * Set button active or deactive. + * + * @since S60 V4.0 + * @param aFlag Button status flag. + */ + IMPORT_C void SetActive(TBool aFlag); + + /** + * Set button dimmed. + * + * @since S60 V4.0 + * @param aFlag Dim status. Default value is ETrue. + */ + IMPORT_C void SetDimmed(TBool aFlag); + + /** + * Set bitmap for given status . + * + * @since S60 V4.0 + * @param aBmp The bitmap. Ownership transferred to button + * @param aType The bitmap type used for + */ + IMPORT_C void SetBitmapL(CFbsBitmap* aBmp, TButtonBmpType aType); + + /** + * Set mask bitmap for given status. + * + * @since S60 V4.0 + * @param aBmp The bitmap. Ownership transferred to button + * @param aType The bitmap type used for + */ + IMPORT_C void SetMaskBitmapL(CFbsBitmap* aBmp, TButtonBmpType aType); + + /** + * get bitmap for given type . + * + * @since S60 V4.0 + * @param aType The bitmap type used for + * @param aMaskFlag EFalse if want to get the mask bitmap, otherwise, + * return the bitmap. Default value is EFalse. + * @return The bitmap + */ + IMPORT_C CFbsBitmap* Bitmap(TButtonBmpType aType,TBool aMaskFlag = EFalse); + + /** + * Set caption. + * + * @since S60 V4.0 + * @param aText The button caption + */ + IMPORT_C void SetCaptionL(const TDesC& aText); + + /** + * Get button dimmed status . + * + * @since S60 V4.0 + * @return Button dimmed status + */ + inline TBool IsDimmed(); + + + /** + * Enable bitmap stretchable. When it's set, all bitmap in this control + * will be stretched to fit in the control. It's stretchable by default + * + * @since S60 V4.0 + * @param aFlag the bitmap stretching flag + */ + inline void SetBmpStretchable(TBool aFlag = ETrue); + + /** + * Get bitmap stretchable flag + * + * @since S60 V4.0 + * @return aFlag the bitmap stretching flag + */ + inline TBool BmpStretchable(); + + + //from base class CFepUiBaseCtrl + /** + * From CFepUiBaseCtrl + * Draw control + * + * @since S60 V4.0 + */ + IMPORT_C virtual void Draw(); + + /** + * From CFepUiBaseCtrl + * Handle pointer levae event. + * This will be called only when it's got pointer down event before and + * now pointer leaves without pointer up event + * + * @since S60 V4.0 + * @param aPoint current pointer position + */ + IMPORT_C virtual void HandlePointerLeave(const TPoint& aPoint); + + /** + * From CFepUiBaseCtrl + * Handle pointer enter event. + * This will be called only when it's got pointer down event before and + * pointer leaves but now comes back without pointer up event. + * + * @since S60 V4.0 + * @param aPoint current pointer position + */ + IMPORT_C virtual void HandlePointerEnter(const TPoint& aPoint); + + /** + * From CFepUiBaseCtrl + * Set control's rectangle + * + * @since S60 V4.0 + * @param aRect The new control area + */ + //IMPORT_C virtual void SetRect(const TRect& aRect); + + /** + * Hide or shoe control. A hiden control will not handle the event. + * + * @since S60 V4.0 + * @param aFlag ETrue if want to hide the control. + */ + //IMPORT_C virtual void Hide(TBool aFlag); + + /* Set the font for caption + * + * @since S60 V4.0 + * @param aFontSpec the font spec to be used. + */ + IMPORT_C void SetFont(const TFontSpec& aFontSpec); + + /** + * Set font information + * + * @since S60 V4.0 + * @param aFont The font info for key drawing.Ownership not transferred + */ + IMPORT_C void SetFont(const CFont* aFont); + + /** + * Set caption color + * + * @since S60 V4.0 + * @param aCol The caption font color + */ + inline void SetCaptionColor(const TRgb& aCol); + + /** + * Set font shadow color + * + * @since S60 V4.0 + * @param aCol The font color + */ + inline void SetCaptionShadowColor(const TRgb& aCol); + + /** + * Reset the bitmap pool. + * + * @since S60 v4.0 + */ + IMPORT_C void ResetBmpPool(); + + IMPORT_C void Hide(TBool aFlag); + +protected: + /** + * Constructor + * + * @since S60 V4.0 + * @param aRect The rectangle area for this control + * @param aUiLayout Ui layout who contains this control.Ownership not transferred + * @param aControlId control Id + */ + IMPORT_C CButtonBase(const TRect& aRect,CFepUiLayout* aUiLayout,TInt aControlId); + /** + * From CFepUiBaseCtrl + * Handle pointer down event + * + * @since S60 V4.0 + * @param aPoint The point position relative the layout + * @return The control which handles the event. + */ + IMPORT_C virtual CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint); + + /** + * Handle pointer move event + * From CFepUiBaseCtrl + * + * @since S60 V4.0 + * @param aPoint The point position relative the layout + * @return The control which handles the event. + */ + IMPORT_C virtual CFepUiBaseCtrl* HandlePointerMoveEventL(const TPoint& aPoint); + + /** + * From CFepUiBaseCtrl + * Handle pointer up event + * + * @since S60 V4.0 + * @param aPoint The point position relative the layout + * @return The control which handles the event + */ + IMPORT_C virtual CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPoint); + + /** + * Set background bitmap + * + * @since S60 V4.0 + * @param aBmp The background bitmap. Ownership transferred to control + */ + IMPORT_C virtual void SetBackgroundBitmapL(CFbsBitmap* aBmp); + + /** + * Set background mask bitmap + * + * @since S60 V4.0 + * @param aBmp The background bitmap. Ownership transferred to control + */ + IMPORT_C virtual void SetBackgroundMaskBitmapL(CFbsBitmap* aBmp); + +private: + /** + * Add a bitmap to bitmap pool + * + * @since S60 V4.0 + * @param aBmp The bitmap to be added + */ + void AddBmpToPool(CFbsBitmap* aBmp); + + +protected: + /** + * bitmap for active state + * Own. + */ + CFbsBitmap* iActiveBmp; + + /** + * bitmap for pressing in active state + * Own. + */ + CFbsBitmap* iActiveBmpPressed; + + /** + * bitmap for non active state + * Own. + */ + CFbsBitmap* iNonActiveBkBmp; + + /** + * bitmap for pressing in non active state + * Own. + */ + CFbsBitmap* iNonActiveBkBmpPressed; + + /** + * mask bitmap for active state + * Own. + */ + CFbsBitmap* iActiveMaskBmp; + + /** + * mask bitmap for pressing in active state + * Own. + */ + CFbsBitmap* iActiveMaskBmpPressed; + + /** + * mask bitmap for non active state + * Own. + */ + CFbsBitmap* iNonActiveBkMaskBmp; + + /** + * mask bitmap for pressing in non active state + * Own. + */ + CFbsBitmap* iNonActiveBkMaskBmpPressed; + +private: + /** + * Button pressed status + */ + TBool iPressed; + + /** + * Button dim status + */ + TBool iDimmed; + + /** + * Bitmap stretchable flag + */ + TBool iStretchable; + + /** + * bitmap for dimmed state + * Own. + */ + CFbsBitmap* iDimmedBmp; + + /** + * mask bitmap for dim stute + * Own. + */ + CFbsBitmap* iDimmedMaskBmp; + + /** + * Button caption + */ + HBufC* iCaption; + + /** + * Font object for key drawing + * Ownership depends on flag iFontOwnership. + */ + CFont* iFont; + + /** + * Font information for key drawing + */ + TFontSpec iFontSpec; + + /** + * Flag ownership flag. ETrue if CFont object is owned by this control. + */ + TBool iFontOwnership; + /** + * Baseline for caption + */ + TInt iBaseline; + + /** + * Pen color for first level caption + */ + TRgb iCaptionColor; + + /** + * Pen color for caption shadow + */ + TRgb iCaptionShadowColor; + + /** + * bitmap pool for all bitmaps. + */ + RPointerArray iBmpPool; + + /** + * keep the bitmap for background bitmap set by SetBackgroundBitmapL in case someone used. + * Own. + */ + CFbsBitmap* iNoUsedBkbmp; + + /** + * keep the bitmap for mask background bitmap set by SetBackgroundMaskBitmapL in case someone used. + * Own. + */ + CFbsBitmap* iNoUsedMaskBkbmp; + + /** + * Reserved item1 + */ + TInt iReserved1; + + /** + * Reserved item2 + */ + TInt iReserved2; + + }; + + +/** + * CDragBar + * + * Drag bar + * + * @lib peninputlayoutcontrol.lib + * @since S60 V4.0 + */ +class CDragBar: public CButtonBase,public MTimerHandler,public MEventObserver + { +public: + /** + * Factory function + * + * @since S60 V4.0 + * @param aRect The rectangle area for this control + * @param aUiLayout Ui layout who contains this control.Ownership not transferred + * @param aControlId control Id + * @return The class instance + */ + IMPORT_C static CDragBar* NewL(const TRect& aRect,CFepUiLayout* aUiLayout,TInt aControlId); + + /** + * Destructor + * + * @since S60 V4.0 + */ + IMPORT_C virtual ~CDragBar(); + + /** + * Add position observer. When drag bar moved, the observer will get notified. + * + * @since S60 V4.0 + * @param aObserver The event observer + */ + IMPORT_C void AddPositionObserver(MPositionObserver* aObserver); + + /** + * Remove position observer. + * + * @since S60 V4.0 + * @param aObserver The event observer to be removed + */ + IMPORT_C void RemovePositionObserver(MPositionObserver* aObserver); + + /** + * Set the long press time out. + * + * @since S60 V4.0 + * @param aTime The long press event time out interval + */ + IMPORT_C void SetLongpressTimer(TTimeIntervalMicroSeconds32 aTime); + + /** + * Check a control is the position observer of the dragbar + * + * @since S60 V4.0 + * @param aControl The control to be checked + * @return ETrue if the control is position observer of the dragbar + */ + IMPORT_C TBool IsDraggingComponent(CFepUiBaseCtrl* aControl); + + /** + * Get dragging status. + * + * @since S60 V4.0 + * @param None + * @return ETrue if is dragging, otherwise EFalse + */ + inline TBool IsDragging(); + + /** + * Set the moving draw interval. + * + * @since S60 V4.0 + * @param aTime The drawing interval while moving + */ + inline void SetRedrawInterval(TTimeIntervalMicroSeconds32 aTime); + + /** + * Enable/disable dragging feature. + * Dragging is enabled by default when created. + * + * @since S60 V4.0 + * @param aFlag dragging flag. Default value is ETrue + */ + inline void EnableDragging(TBool aFlag = ETrue); + + /** + * Set bitmap for given status . + * + * @since S60 V4.0 + * @param aBmp The bitmap. Ownership transferred to dragbar + * @param The type of the bitmap + */ + IMPORT_C void SetBitmapL(CFbsBitmap* aBmp, TButtonBmpType aType); + + /** + * Set mask bitmap for given status . + * + * @since S60 V4.0 + * @param aBmp The bitmap. Ownership transferred to dragbar + * @parma aType The type of bitmap + */ + IMPORT_C void SetMaskBitmapL(CFbsBitmap* aBmp, TButtonBmpType aType); + + //From base class CFepUiBaseCtrl + + /** + * From CFepUiBaseCtrl + * Update control and it's components rect + * + * @since S60 V4.0 + * @param aOffset The offset to be moved + */ + IMPORT_C void Move(const TPoint& aOffset); + + //from base class MEventObserver + + /** + * From MEventObserver + * Handle control event + * + * @since S60 V4.0 + * @param aEventType The event type + * @param aCtrl The control who sends the event + * @param aEventData The event data + */ + IMPORT_C void HandleControlEvent(TInt aEventType, CFepUiBaseCtrl* aCtrl, + const TDesC& aEventData); + + //from base class MTimerHandler + /** + * From MTimerHandler + * HandleTimerOut. Handling time out event + * + * @since S60 V4.0 + * @param aTimeType The timer type + */ + IMPORT_C void HandleTimerOut(TInt aTimeType); + + /** + * From CFepUiBaseCtrl + * OnDeActivate. Called when the layout is going to be hidden + * + * @since S60 v4.0 + */ + IMPORT_C void OnDeActivate(); + + /** + * Cancel pointer down event. + * This will be called when a control has pointer down but pointer up + * event happens in other ways. If overrided, this base implementation + * must be called in order to report the event. + * + * @since S60 V4.0 + * @param aFocusedFlag ETrue if got focused, otherwise EFalse + */ + IMPORT_C virtual void CancelPointerDownL(); + + /** + * Recalculate moving area. It's called when it's observer changes size. + * + * @since S60 v4.0 + */ + void ReCalculateDragArea(); + +protected: + /** + * Constructor + * + * @since S60 V4.0 + * @param aRect The rectangle area for this control + * @param aUiLayout Ui layout who contains this control. Ownership not transferred + * @param aControlId control Id + */ + IMPORT_C CDragBar(const TRect& aRect,CFepUiLayout* aUiLayout, + TInt aControlId); + + /** + * Second phrase constructor + * + * @since S60 V4.0 + */ + IMPORT_C void ConstructL(); + + /** + * Test whether the moving destination is valid + * + * @since S60 V4.0 + * @param aPt The destionation point + * @param aVInfo The valid information in vertial dirtection + * @param aHInfo The valid information in horizontal dirtection + * @return ETrue if valid, otherwise EFalse + */ + IMPORT_C TBool IsValidDestination(const TPoint& aPt,TBool& aVInfo, + TBool& aHInfo); + + + /** + * From CFepUiBaseCtrl + * Handle pointer down event + * + * @since S60 V4.0 + * @param aPoint The point position relative the layout + * @return The control which handles the event. + */ + IMPORT_C virtual CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint); + + /** + * From CFepUiBaseCtrl + * Handle pointer move event + * + * @since S60 V4.0 + * @param aPoint The point position relative the layout + * @return The control which handles the event. + */ + IMPORT_C virtual CFepUiBaseCtrl* HandlePointerMoveEventL(const TPoint& aPoint); + + /** + * From CFepUiBaseCtrl + * Handle pointer up event + * + * @since S60 V4.0 + * @param aPoint The point position relative the layout + * @return The control which handles the event. + */ + IMPORT_C virtual CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPoint); + +private: + /** + * Draw control frame + * + * @since S60 V4.0 + * @param aFrameRect The rect to be drawn + * @param aDrawFlag Draw or erase flag. ETrue if draw + * @return The affected rect + */ + TRect DrawFrame(const TRect& aFrameRect, TBool aDrawFlag = ETrue); + + /** + * Show or hide the moving indicator + * + * @since S60 V4.0 + * @param aDrawFlag ETrue if show the moving indicator. Default value ETrue + */ + void ShowMovingIndicator(TBool aDrawFlag = ETrue); + + /** + * Add a control to the dragging list + * + * @since S60 V4.0 + * @param aCtrl The control to be added + */ + void AddToDraggingCtrlList(CFepUiBaseCtrl* aCtrl); + + /** + * Do preparation before dragging + * + * @since S60 V4.0 + */ + void PrepareDragging(); + + /** + * Restore states after dragging + * + * @since S60 V4.0 + */ + void AfterDragging(); + +private: + /** + * dragging flag + */ + TBool iIsDragging; + + /** + * Moving offset when drag bar is moving. + */ + TPoint iMoveOffset; + + /** + * dragging start position + */ + TPoint iDraggingStartPt; + + /** + * Position change observer list + */ + RPointerArray iPosObserverList; + + /** + * The rect to be drawn when dragging. It's the rect of whole dragging area + */ + TRect iDragFrameRect; + + /** + * Moving flag, is it moving. + */ + TBool iMoved; + + /** + * Flag tells whether whole layout is being draged + */ + TBool iLayoutBeingDraged; + + /** + * Long time press event flag. + * When this is enabled, dragbar starts move only after long press time out + */ + TBool iNeedLongtimePress; + + /** + * Long time press timer interval + */ + TTimeIntervalMicroSeconds32 iLongtimePressTimeout; + + /** + * Flag tells whether long pressing happend + */ + TBool iLongPressed; + + /** + * Draing enabler flag. Only this flag set can dragbar movable. + * Default value is ETrue + */ + TBool iDraggingEnabled; + + /** + * The position where moving indidator is displayed + */ + TPoint iMovingIndicatorPos; + + /** + * Currnt pointer position. Need to kept since we use timely drawing. + */ + TPoint iCurrentPointerPos; + + /** + * Redraw timer interval. + * While moving, it's not drawn if another redraw event comes + */ + TTimeIntervalMicroSeconds32 iDrawInterval; + + /** + * A list keeps all the control belongs to the dragging area + */ + RPointerArray iDraggingCtrlList; + + /** + * long press timer + * Own. + */ + CLayoutTimer* iLongPressTimer; + + /** + * Moving indicator bitmap + * Own. + */ + CFbsBitmap* iMovingIndicatorBmp; + + /** + * Moving indicator mask bitmap + * Own + */ + CFbsBitmap* iMovingIndicatorMaskBmp; + + /** + * Redraw timer for moving + * Own + */ + CLayoutTimer* iMoveTimer; + + /** + * Reserved item1 + */ + TInt iReserved1; + + /** + * Reserved item2 + */ + TInt iReserved2; + }; +//end of CDragBar + +#include +#endif //C_CBUTTONBASE_H \ No newline at end of file