diff -r 000000000000 -r 951a5db380a0 videditor/VideoEditorUiComponents/inc/VeiCutterBar.h --- /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 + +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 ETrue for "is finished"; + * EFalse 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 EKeyWasNotConsumed + */ + 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