videditor/VideoEditorUiComponents/inc/VeiCutterBar.h
changeset 0 951a5db380a0
--- /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