diff -r 000000000000 -r 951a5db380a0 videditor/TrimForMms/inc/VeiTrimForMmsContainer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videditor/TrimForMms/inc/VeiTrimForMmsContainer.h Fri Jan 29 14:08:33 2010 +0200 @@ -0,0 +1,378 @@ +/* +* 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: +* +*/ + + + + +#ifndef VEITRIMFORMMSCONTAINER_H +#define VEITRIMFORMMSCONTAINER_H + +// INCLUDES +// System includes +#include // TAknLayoutText +#include +#include +#include +#include +// User includes +#include "VeiVideoDisplay.h" +#include "VeiFrameTaker.h" +#include "VeiTrimForMmsView.h" +#include "VeiDisplayLighter.h" + +// FORWARD DECLARATIONS +class CVeiCutterBar; +class CVeiTrimForMmsView; +class CVeiTrimForMmsView; +class CAknsBasicBackgroundControlContext; +class CAknProgressDialog; +//class CEikProgressInfo; + +// CLASS DECLARATION + +/** + * + */ +class CVeiTrimForMmsContainer : public CCoeControl, + public MVedMovieObserver, + public MVeiVideoDisplayObserver, + public MVeiFrameTakerObserver, + public MProgressDialogCallback + { + public: + + static CVeiTrimForMmsContainer* NewL( const TRect& aRect, + CVedMovie& aMovie, + CVeiTrimForMmsView& aView ); + + static CVeiTrimForMmsContainer* NewLC( const TRect& aRect, + CVedMovie& aMovie, + CVeiTrimForMmsView& aView); + + ~CVeiTrimForMmsContainer(); + + public: // New functions + + const TTimeIntervalMicroSeconds& CutInTime() const; + + const TTimeIntervalMicroSeconds& CutOutTime() const; + + void SetMaxMmsSize( TInt aMaxSizeInBytes ); + + /** + * Start full screen preview. Calls CVeiVideoDisplay. + * + * @param aFilename filename. + * @param aRect full screen size. + */ + void PlayL( const TDesC& aFilename, const TRect& aRect ); + + /** + * Stop preview. Stops CVeiVideoDisplay + * + * @param aCloseStream + */ + void Stop( TBool aCloseStream ); + + /** + * + */ + void PauseL(); + + /** + * Return the video display state of CVeiTrimForMmsContainer. + * + * @param + */ + TInt PreviewState() const; + + void StartFrameTakerL( TInt aIndex ); + + private: // From CCoeControl + + virtual void DialogDismissedL( TInt aButtonId ); + + CCoeControl* ComponentControl(TInt aIndex) const; + + TInt CountComponentControls() const; + + /** + * Gets the control's help context. Associates the control with a + * particular Help file and topic in a context sensitive application. + * + * @param aContext The control's help context. + */ + void GetHelpContext( TCoeHelpContext& aContext ) const; + + void Draw( const TRect& aRect ) const; + + void SizeChanged(); + + TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, + TEventCode aType); + + private: // From MVeiVideoDisplayObserver + + virtual void NotifyVideoDisplayEvent( const TPlayerEvent aEvent, const TInt& aInfo = 0 ); + + virtual void NotifyFramesCompleted( CFbsBitmap* aFirstFrame, CFbsBitmap* aLastFrame, + CFbsBitmap* /*aTimelineFrame*/, TInt aError ); + + + /** + * Gets an object whose type is encapsulated by the specified TTypeUid + * object. + * + * @param aId Encapsulates the Uid that identifies the type of object + * required. + * + * @return + */ + virtual TTypeUid::Ptr MopSupplyObject( TTypeUid aId ); + + protected: // From MVedMovieObserver + + virtual void NotifyVideoClipAdded(CVedMovie& aMovie, TInt aIndex); + + virtual void NotifyVideoClipAddingFailed(CVedMovie& aMovie, TInt aError); + + virtual void NotifyVideoClipRemoved(CVedMovie& aMovie, TInt aIndex); + + virtual void NotifyVideoClipIndicesChanged(CVedMovie& aMovie, TInt aOldIndex, + TInt aNewIndex); + + virtual void NotifyVideoClipTimingsChanged(CVedMovie& aMovie, + TInt aIndex); + + virtual void NotifyVideoClipColorEffectChanged(CVedMovie& aMovie, + TInt aIndex); + + virtual void NotifyVideoClipAudioSettingsChanged(CVedMovie& aMovie, + TInt aIndex); + + virtual void NotifyVideoClipGeneratorSettingsChanged(CVedMovie& aMovie, + TInt aIndex); + + virtual void NotifyVideoClipDescriptiveNameChanged(CVedMovie& aMovie, + TInt aIndex); + + virtual void NotifyStartTransitionEffectChanged(CVedMovie& aMovie); + + virtual void NotifyMiddleTransitionEffectChanged(CVedMovie& aMovie, + TInt aIndex); + + virtual void NotifyEndTransitionEffectChanged(CVedMovie& aMovie); + + virtual void NotifyAudioClipAdded(CVedMovie& aMovie, TInt aIndex); + + virtual void NotifyAudioClipAddingFailed(CVedMovie& aMovie, TInt aError); + + virtual void NotifyAudioClipRemoved(CVedMovie& aMovie, TInt aIndex); + + virtual void NotifyAudioClipIndicesChanged(CVedMovie& aMovie, TInt aOldIndex, + TInt aNewIndex); + + virtual void NotifyAudioClipTimingsChanged(CVedMovie& aMovie, + TInt aIndex); + + virtual void NotifyMovieQualityChanged(CVedMovie& aMovie); + + virtual void NotifyMovieReseted(CVedMovie& aMovie); + + virtual void NotifyMovieOutputParametersChanged(CVedMovie& aMovie); + + virtual void NotifyAudioClipDynamicLevelMarkInserted(CVedMovie& aMovie, + TInt aClipIndex, + TInt aMarkIndex); + + virtual void NotifyAudioClipDynamicLevelMarkRemoved(CVedMovie& aMovie, + TInt aClipIndex, + TInt aMarkIndex); + + virtual void NotifyVideoClipDynamicLevelMarkInserted(CVedMovie& aMovie, + TInt aClipIndex, + TInt aMarkIndex); + + virtual void NotifyVideoClipDynamicLevelMarkRemoved(CVedMovie& aMovie, + TInt aClipIndex, + TInt aMarkIndex); + + private: // New functions + TInt TimeIncrement(TInt aKeyCount) const; + + private: // Constructors + + CVeiTrimForMmsContainer( CVedMovie& aMovie, CVeiTrimForMmsView& aView); + + void ConstructL( const TRect& aRect ); + + private: // Enumeration + + enum TTrimForMmsControls + { + ECutFrame, + EVideoDisplayStart, + EVideoDisplayEnd, + EVideoPreview, + ENumberOfControls // This is always the last one! + }; + + public: + enum TPreviewState + { + EIdle = 0, + ELoading, + EPreview, + EPlaying, + EStop, + EStopAndExit, + EOpeningFile, + EPause + }; + + private: // Data + + /** + * Whether or not the last key pressed was left or right navi-key. + */ + TBool iLastKeyLeftOrRight; + + /** + * + */ + TInt iVideoDisplayStartIndex; + + /** + * + */ + TInt iVideoDisplayEndIndex; + + /** + * + */ + TRect iVideoDisplayEndRect; + + /** + * Text layout for main pane's end text. + */ + TAknLayoutText iLayoutTextEnd; + + /** + * Text layout for main pane's start text. + */ + TAknLayoutText iLayoutTextStart; + + /** + * Layout for start thumbnail. + */ + TAknLayoutRect iLayoutRectStart; + + /** + * Layout for end thumbnail. + */ + TAknLayoutRect iLayoutRectEnd; + + /** + * Layout for trim timeline icon. + */ + TAknLayoutRect iLayoutRectIcon; + + /** + * Layout for cut frame. + */ + TAknLayoutRect iLayoutRectCutFrame; + + /** + * Text shown above the end thumbnail. + */ + HBufC* iEndText; + + /** + * Text shown above the start thumbnail. + */ + HBufC* iStartText; + + /** + * + */ + CVeiCutterBar* iCutterBar; + /** + * + */ + CVedMovie& iMovie; + + /** + * + */ + CVeiVideoDisplay* iVideoDisplayStart; + + /** + * + */ + CVeiVideoDisplay* iVideoDisplayEnd; + + CVeiVideoDisplay* iVideoDisplay; + + TPreviewState iPreviewState; + + TRect iPreviewRect; + + CVeiFrameTaker* iFrameTaker; + + /* + * Updated by NotifyVideoClipAdded( CVedMovie& aMovie, TInt aIndex ) + */ + TInt iClipIndex; + + CVeiTrimForMmsView& iView; + + + TRect iStartTextBox; + TRect iEndTextBox; + TRect iVideoDisplayStartRect; + TRect iTimelineRect; + TRect iCutIconRect; + TRect iAdjustRect; + + TPoint iCutIconPoint; + TSize iCutIconSize; + + TTimeIntervalMicroSeconds iSeekPos; + TTimeIntervalMicroSeconds iSeekEndPos; + TTimeIntervalMicroSeconds iDuration; + TInt iKeyRepeatCount; + /** Background context. Skin stuff. */ + CAknsBasicBackgroundControlContext* iBgContext; + + CVeiDisplayLighter* iScreenLight; + TInt iMaxMmsSize; + TBool iBlack; + + + TBool iSeekEvent; + /** + * Progress dialog. + */ + CAknProgressDialog* iProgressNote; + + /** Progress info for the progress note. */ + CEikProgressInfo* iProgressInfo; + TBool iKeyEnable; + }; + +#endif