--- /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 <AknUtils.h> // TAknLayoutText
+#include <coecntrl.h>
+#include <AknProgressDialog.h>
+#include <VedMovie.h>
+#include <VedVideoClipInfo.h>
+// 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