--- /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 <peninputlayoutbasecontrol.h>
+/**
+ * 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<CFbsBitmap> 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<MPositionObserver> 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<CFepUiBaseCtrl> 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 <peninputlayoutbutton.inl>
+#endif //C_CBUTTONBASE_H
\ No newline at end of file