--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/videditor/VideoEditorUiComponents/inc/VeiCutterBar.h Fri Jan 29 14:08:33 2010 +0200
@@ -0,0 +1,351 @@
+/*
+* Copyright (c) 2010 Ixonos Plc.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "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:
+* Ixonos Plc
+*
+* Description:
+* Declares CVeiCutterBar control for the Video Editor.
+*
+*/
+
+
+
+#ifndef VEICUTTERBAR_H
+#define VEICUTTERBAR_H
+
+#include <coecntrl.h>
+
+class CPeriodic;
+
+/**
+ * CVeiCutterBar control class.
+ */
+class CVeiCutterBar : public CCoeControl, public MCoeControlObserver
+ {
+ public:
+ /**
+ * CVeiCutterBar components.
+ */
+ enum TCutterBarComponent
+ {
+ EScissorsIcon = 1,
+ EProgressBar,
+ ESliderLeftEndIcon,
+ ESliderMiddleIcon,
+ ESliderRightEndIcon,
+ ESliderSelectedLeftEndIcon,
+ ESliderSelectedMiddleIcon,
+ ESliderSelectedRightEndIcon,
+ EPlayheadIcon,
+ ECutAreaBorderIcon,
+ EStartMarkIcon,
+ EEndMarkIcon,
+ EPlayheadTouch,
+ EStartMarkTouch,
+ EEndMarkTouch
+ };
+
+ // CVeiCutterBar icons that can be in pressed state
+ enum TCutterBarPressedIcon
+ {
+ ENoPressedIcon = 0,
+ EPressedPlayheadTouch,
+ EPressedStartMarkTouch,
+ EPressedEndMarkTouch
+ };
+ public:
+ /**
+ * Destructor.
+ */
+ IMPORT_C virtual ~CVeiCutterBar();
+
+ /**
+ * Static factory method.
+ *
+ * @param aCont pointer to the container
+ *
+ * @return the created CVeiCutterBar object
+ */
+ IMPORT_C static CVeiCutterBar* NewL( const CCoeControl* aParent, TBool aDrawBorder = EFalse );
+
+ /**
+ * Static factory method. Leaves the created object in the cleanup
+ * stack.
+ *
+ * @param aCont pointer to the container
+ *
+ * @return the created CVeiCutterBar object
+ */
+ IMPORT_C static CVeiCutterBar* NewLC( const CCoeControl* aParent, TBool aDrawBorder = EFalse );
+
+ public:
+
+ IMPORT_C virtual void SetPlayHeadVisible( TBool aVisible );
+ /**
+ * Sets the mark in point.
+ *
+ * @param aIn new In-point
+ */
+ IMPORT_C virtual void SetInPoint( const TTimeIntervalMicroSeconds& aIn );
+
+ /**
+ * Sets the mark out point.
+ *
+ * @param aOut new Out-point
+ */
+ IMPORT_C virtual void SetOutPoint( const TTimeIntervalMicroSeconds& aOut );
+
+ /**
+ * Sets the "finished" status, i.e., if the clip is finished, the
+ * leftover areas outside in/out points are grayed out.
+ *
+ * @param aStatus <code>ETrue</code> for "is finished";
+ * <code>EFalse</code> for "not finished"
+ */
+ IMPORT_C virtual void SetFinishedStatus( TBool aStatus );
+
+ IMPORT_C virtual void SetTotalDuration( const TTimeIntervalMicroSeconds& aDuration );
+
+ IMPORT_C virtual void SetCurrentPoint( TInt aLocation );
+
+ IMPORT_C virtual void Dim( TBool aDimmed );
+
+ /**
+ * Getter for iCutBarRect
+ * CVeiCutterBar's rect covers also the scissor icon area but iCutBarRect
+ * is the visible area of the progress bar
+ *
+ * @param -
+ *
+ * @return the progress bar rect
+ */
+ IMPORT_C TRect ProgressBarRect();
+
+ /**
+ * Returns the playhead rectangle.
+ * If the playheadhasn't been set, returns an empty rect
+ *
+ * @param -
+ *
+ * @return playhead rect or empty rect
+ */
+ IMPORT_C TRect PlayHeadRect();
+
+ /**
+ * Returns the start mark rectangle.
+ * If the start mark hasn't been set, returns an empty rect
+ *
+ * @param -
+ *
+ * @return start mark rect or empty rect
+ */
+ IMPORT_C TRect StartMarkRect();
+
+ /**
+ * Returns the end mark rectangle.
+ * If the end mark hasn't been set, returns an empty rect
+ *
+ * @param -
+ *
+ * @return end mark rect or empty rect
+ */
+ IMPORT_C TRect EndMarkRect();
+
+ /**
+ * Returns the start mark position in progress bar
+ *
+ * @param -
+ *
+ * @return the start mark position
+ */
+ IMPORT_C TUint StartMarkPoint();
+
+ /**
+ * Returns the end mark position in progress bar
+ *
+ * @param -
+ *
+ * @return the end mark position
+ */
+ IMPORT_C TUint EndMarkPoint();
+
+ /**
+ * Sets the rect of a component
+ *
+ * @param aComponentIndex specifies the component
+ * @param aRect the rect that the component is set
+ *
+ * @return the end mark position
+ */
+ IMPORT_C void SetComponentRect(TCutterBarComponent aComponentIndex, TRect aRect);
+
+ /**
+ * Sets one of the cutterbar components to pressed state. This function
+ * can also be used to set ENoPressedIcon as pressed component (= none
+ * of the components is pressed)
+ *
+ * @param aComponentIndex specifies the component that should be
+ * set to pressed state
+ *
+ * @return -
+ */
+ IMPORT_C void SetPressedComponent(TCutterBarPressedIcon aComponentIndex);
+
+ public:
+
+ /**
+ * Handles key events from framework.
+ *
+ * @param aKeyEvent the key event
+ * @param aType the type of key event
+ *
+ * @return always <code>EKeyWasNotConsumed</code>
+ */
+ TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,
+ TEventCode aType);
+
+ private:
+
+ /**
+ * Default constructor.
+ *
+ * @param aCont pointer to the container
+ */
+ void ConstructL( const CCoeControl* aParent, TBool aDrawBorder );
+
+ /**
+ * From CoeControl,SizeChanged.
+ */
+ void SizeChanged();
+
+ /**
+ * From CoeControl,CountComponentControls.
+ *
+ * @return number of component controls in this control
+ */
+ TInt CountComponentControls() const;
+
+ /**
+ * From CCoeControl,ComponentControl.
+ *
+ * @param aIndex index of the control to return
+ */
+ CCoeControl* ComponentControl(TInt aIndex) const;
+
+ /**
+ * From CCoeControl,Draw.
+ *
+ * @param aRect rectangle to draw
+ */
+ void Draw(const TRect& aRect) const;
+
+ /**
+ * From MCoeControlObserver, called when there is a control event
+ * to handle.
+ *
+ * @param aControl control originating the event
+ * @param aEventType event type
+ */
+ void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);
+
+ // for test use
+ void DrawCoordinate(TInt aX, TInt aY, TInt aData1, TInt aData2, const TDesC& aInfo) const;
+
+ /**
+ * Calculates the rect of the slider area that the user
+ * has selected to be cut
+ *
+ * @param -
+ *
+ * @return rect of the area to be cut
+ */
+ TRect CVeiCutterBar::CalculateCutAreaRect() const;
+
+ private:
+
+ /** In point. */
+ TUint iInPoint;
+
+ /** Out point. */
+ TUint iOutPoint;
+
+ TUint iTotalDuration;
+ /** Current point. This is where the vertical bar is drawn. */
+ TUint iCurrentPoint;
+
+ /** Flag for marking when the editing is finished. */
+ TBool iFinished;
+
+ TRect iCutBarRect;
+ TRect iScissorsIconRect;
+
+ TBool iDimmed;
+ TBool iDrawBorder;
+ TBool iDrawPlayHead;
+
+ /** Slider Graphics */
+ CFbsBitmap* iScissorsIcon;
+ CFbsBitmap* iScissorsIconMask;
+ CFbsBitmap* iSliderLeftEndIcon;
+ CFbsBitmap* iSliderLeftEndIconMask;
+ CFbsBitmap* iSliderMiddleIcon;
+ CFbsBitmap* iSliderMiddleIconMask;
+ CFbsBitmap* iSliderRightEndIcon;
+ CFbsBitmap* iSliderRightEndIconMask;
+ CFbsBitmap* iSliderSelectedLeftEndIcon;
+ CFbsBitmap* iSliderSelectedLeftEndIconMask;
+ CFbsBitmap* iSliderSelectedMiddleIcon;
+ CFbsBitmap* iSliderSelectedMiddleIconMask;
+ CFbsBitmap* iSliderSelectedRightEndIcon;
+ CFbsBitmap* iSliderSelectedRightEndIconMask;
+ CFbsBitmap* iPlayheadIcon;
+ CFbsBitmap* iPlayheadIconMask;
+ CFbsBitmap* iPlayheadIconPressed;
+ CFbsBitmap* iPlayheadIconPressedMask;
+ CFbsBitmap* iStartMarkIcon;
+ CFbsBitmap* iStartMarkIconMask;
+ CFbsBitmap* iStartMarkIconPressed;
+ CFbsBitmap* iStartMarkIconPressedMask;
+ CFbsBitmap* iEndMarkIcon;
+ CFbsBitmap* iEndMarkIconMask;
+ CFbsBitmap* iEndMarkIconPressed;
+ CFbsBitmap* iEndMarkIconPressedMask;
+ CFbsBitmap* iCutAreaBorderIcon;
+ CFbsBitmap* iCutAreaBorderIconMask;
+
+ /** Rects for the slider graphics */
+ TRect iSliderLeftEndIconRect;
+ TRect iSliderRightEndIconRect;
+ TRect iSliderMiddleIconRect;
+ TRect iSliderSelectedLeftEndIconRect;
+ TRect iSliderSelectedMiddleIconRect;
+ TRect iSliderSelectedRightEndIconRect;
+ TRect iPlayheadIconRect;
+ TRect iCutAreaBorderIconRect;
+
+ /** Start mark rect. Position moves dynamically. */
+ TRect iStartMarkRect;
+
+ /** End mark rect. Position moves dynamically. */
+ TRect iEndMarkRect;
+
+ TRect iStartMarkTouchRect;
+ TRect iEndMarkTouchRect;
+ TRect iPlayheadTouchRect;
+
+ // Tells what cutter bar component is pressed if any
+ TCutterBarPressedIcon iPressedComponent;
+
+ };
+#endif
+
+// End of File