--- a/videditor/TrimForMms/src/VeiTrimForMmsContainer.cpp Fri Jan 29 14:08:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1018 +0,0 @@
-/*
-* 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:
-*
-*/
-
-
-
-
-// INCLUDE FILES
-// System includes
-#include <AknIconUtils.h> // AknIconUtils
-#include <eikenv.h> // iEikonEnv
-#include <trimformms.rsg> // Video Editor resources
-#include <StringLoader.h> // StringLoader
-
-#include <aknbiditextutils.h>
-#include <gulfont.h>
-
-#include <aknsdrawutils.h>
-#include <aknsdatacontext.h>
-#include <aknsbasicbackgroundcontrolcontext.h>
-
-#include <AknProgressDialog.h>
-#include <eikprogi.h>
-#include <AknWaitDialog.h>
-
-
-// User includes
-#include "VeiTrimForMmsContainer.h"
-#include "VeiVideoDisplay.h"
-#include "VideoEditorCommon.h"
-//#include "VideoEditorHelp.hlp.hrh" // Topic contexts (literals)
-#include "veiframetaker.h"
-#include "VeiTrimForMmsView.h"
-#include "VeiCutterBar.h"
-#include "VeiVideoEditorSettings.h"
-#include "VideoEditorUtils.h"
-#include "VideoEditorDebugUtils.h"
-
-void CVeiTrimForMmsContainer::DialogDismissedL( TInt /*aButtonId*/ )
- {
- iProgressInfo = NULL;
- }
-
-
-CVeiTrimForMmsContainer* CVeiTrimForMmsContainer::NewL( const TRect& aRect,
- CVedMovie& aMovie, CVeiTrimForMmsView& aView )
- {
- CVeiTrimForMmsContainer* self = CVeiTrimForMmsContainer::NewLC( aRect,
- aMovie,
- aView );
- CleanupStack::Pop( self );
-
- return self;
- }
-
-CVeiTrimForMmsContainer* CVeiTrimForMmsContainer::NewLC( const TRect& aRect,
- CVedMovie& aMovie,
- CVeiTrimForMmsView& aView)
- {
- CVeiTrimForMmsContainer* self =
- new(ELeave)CVeiTrimForMmsContainer( aMovie, aView );
-
- CleanupStack::PushL( self );
- self->ConstructL( aRect );
-
- return self;
- }
-
-
-CVeiTrimForMmsContainer::CVeiTrimForMmsContainer( CVedMovie& aMovie, CVeiTrimForMmsView& aView ):
- iLastKeyLeftOrRight(EFalse),
- iMovie(aMovie),
- iView( aView )
-
- {
- }
-
-
-void CVeiTrimForMmsContainer::ConstructL( const TRect& aRect )
- {
- LOG(KVideoEditorLogFile, "CVeiTrimForMmsContainer::ConstructL: in");
-
- // Make this compound control window-owning.
- CreateWindowL();
-
- iMovie.RegisterMovieObserverL( this );
-
- // Read the texts shown above the thumbnails from resources
- iStartText = StringLoader::LoadL( R_VED_THUMBNAIL_START_TEXT, iEikonEnv );
- iEndText = StringLoader::LoadL( R_VED_THUMBNAIL_END_TEXT, iEikonEnv );
-
- iSeekPos = TTimeIntervalMicroSeconds( 0 );
-
- iVideoDisplayStart = CVeiVideoDisplay::NewL( iVideoDisplayStartRect, this, *this );
-
- iVideoDisplayEnd = CVeiVideoDisplay::NewL( iVideoDisplayEndRect, this, *this );
-
- iCutterBar = CVeiCutterBar::NewL( this );
- iCutterBar->SetPlayHeadVisible( EFalse );
- iVideoDisplay = CVeiVideoDisplay::NewL( aRect, this, *this );
-
- iFrameTaker = CVeiFrameTaker::NewL( *this );
-
- /* Timer to keep back light on when user is not giving key events */
- iScreenLight = CVeiDisplayLighter::NewL();
- CVeiVideoEditorSettings::GetMaxMmsSizeL( iMaxMmsSize );
- /* SharedData returns maxmmssize in kbytes. Change it to bytes(1000) and
- add some margin to final value.*/
- iMaxMmsSize = STATIC_CAST( TInt, iMaxMmsSize*0.98 );
- iBlack = EFalse;
-
- // Set this control extent.
- SetRect( aRect );
- iBgContext = CAknsBasicBackgroundControlContext::NewL( KAknsIIDQsnBgAreaMain, Rect(), EFalse );
-
- ActivateL();
-
- iKeyEnable = EFalse;
- LOG(KVideoEditorLogFile, "CVeiTrimForMmsContainer::ConstructL: out");
- }
-
-
-
-CVeiTrimForMmsContainer::~CVeiTrimForMmsContainer()
- {
- iMovie.UnregisterMovieObserver( this );
-
- delete iEndText;
- delete iStartText;
- delete iScreenLight;
-
- delete iCutterBar;
-
- delete iVideoDisplayStart;
- delete iVideoDisplayEnd;
- if( iVideoDisplay )
- {
- delete iVideoDisplay;
- iVideoDisplay = NULL;
- }
-
- if (iFrameTaker)
- {
- delete iFrameTaker;
- iFrameTaker = NULL;
- }
-
- if ( iProgressNote )
- {
- delete iProgressNote;
- iProgressNote = NULL;
- }
- iProgressInfo = NULL;
-
- delete iBgContext;
- }
-
-void CVeiTrimForMmsContainer::SetMaxMmsSize( TInt aMaxSizeInBytes )
- {
- iMaxMmsSize = aMaxSizeInBytes;
- }
-
-const TTimeIntervalMicroSeconds& CVeiTrimForMmsContainer::CutInTime() const
- {
- return iSeekPos;
- }
-
-
-const TTimeIntervalMicroSeconds& CVeiTrimForMmsContainer::CutOutTime() const
- {
- return iSeekEndPos;
- }
-
-
-// ----------------------------------------------------------------------------
-// CVeiTrimForMmsContainer::ComponentControl(...) const
-//
-// Gets the specified component of a compound control.
-// ----------------------------------------------------------------------------
-//
-CCoeControl* CVeiTrimForMmsContainer::ComponentControl( TInt aIndex ) const
- {
- LOG(KVideoEditorLogFile, "CVeiTrimForMmsContainer::ComponentControl()");
-
- switch( aIndex )
- {
- //
- // iCutterDisplay
- //
- case ECutFrame:
- {
- return iCutterBar;
- }
- //
- // iVideoDisplayStart
- //
- case EVideoDisplayStart:
- {
- return iVideoDisplayStart;
- }
- //
- // iVideoDisplayEnd
- //
- case EVideoDisplayEnd:
- {
- return iVideoDisplayEnd;
- }
- //
- // iVideoDisplay
- //
- case EVideoPreview:
- {
- return iVideoDisplay;
-
- }
-
- //
- // Default
- //
- default:
- {
- return NULL;
- }
- }
-
- }
-
-
-// ----------------------------------------------------------------------------
-// CVeiTrimForMmsContainer::CountComponentControls() const
-//
-// Gets the number of controls contained in a compound control.
-// ----------------------------------------------------------------------------
-//
-TInt CVeiTrimForMmsContainer::CountComponentControls() const
- {
- return ENumberOfControls;
- }
-
-
-void CVeiTrimForMmsContainer::Draw( const TRect& aRect ) const
- {
- LOG(KVideoEditorLogFile, "CVeiTrimForMmsContainer::Draw(): In");
-
- CWindowGc& gc = SystemGc();
- gc.Clear( aRect );
-
- // Black backbround for the preview
- if ( iBlack )
- {
- iVideoDisplay->MakeVisible( EFalse );
- gc.SetPenStyle( CWindowGc::ENullPen );
- gc.SetBrushColor( KRgbBlack );
- gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
- gc.DrawRect( aRect );
- gc.SetPenStyle( CWindowGc::ESolidPen );
- gc.DrawRoundRect(aRect, TSize(4,4));
- return;
- }
- else
- {
- // Draw skin background
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
- MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
- AknsDrawUtils::Background( skin, cc, this, gc, aRect );
-
- const CFont* font = AknLayoutUtils::FontFromId( EAknLogicalFontSecondaryFont );
- TBuf<95> startVisualText;
- TPoint startTextPoint;
- TBuf<95> endVisualText;
- TPoint endTextPoint;
-
- startTextPoint.iY = iStartTextBox.iTl.iY + font->HeightInPixels();
- endTextPoint.iY = iEndTextBox.iTl.iY + font->HeightInPixels();
-
- gc.UseFont( font );
-
- TBidiText::TDirectionality textDirectionality;
-
- textDirectionality = AknTextUtils::CurrentScriptDirectionality();
-
- TInt maxWidthNonClippingStart = iStartTextBox.Width();
-
- AknBidiTextUtils::ConvertToVisualAndClip( *iStartText, startVisualText, *font, maxWidthNonClippingStart,
- maxWidthNonClippingStart );
- /** check text alignment */
- if ( textDirectionality == TBidiText::ELeftToRight )
- {
- startTextPoint.iX = iVideoDisplayStartRect.iTl.iX;
- }
- else
- {
- startTextPoint.iX = iVideoDisplayStartRect.iBr.iX - font->TextWidthInPixels( startVisualText );
- }
-
- gc.DrawText( startVisualText, startTextPoint );
-
-
- TInt maxWidthNonClippingEnd = iEndTextBox.Width();
-
- AknBidiTextUtils::ConvertToVisualAndClip( *iEndText, endVisualText, *font, maxWidthNonClippingEnd,
- maxWidthNonClippingEnd );
- /** check text alignment */
- if ( textDirectionality == TBidiText::ELeftToRight )
- {
- endTextPoint.iX = iVideoDisplayEndRect.iTl.iX;
- }
- else
- {
- endTextPoint.iX = iVideoDisplayEndRect.iBr.iX - font->TextWidthInPixels( endVisualText );
- }
-
- gc.DrawText( endVisualText, endTextPoint );
-
- gc.DiscardFont();
-
- // Draw Start/End displays
- iVideoDisplayStart->SetRect( iVideoDisplayStartRect );
- iVideoDisplayEnd->SetRect( iVideoDisplayEndRect );
-
- if( iPreviewState == EPlaying )
- {
- iVideoDisplay->MakeVisible( ETrue );
- }
- else
- {
- iVideoDisplay->MakeVisible( EFalse );
- }
-
- }
-
- LOG(KVideoEditorLogFile, "CVeiTrimForMmsContainer::Draw(): Out");
- }
-
-
-// ----------------------------------------------------------------------------
-// CVeiTrimForMmsContainer::GetHelpContext(...) const
-//
-// Gets the control's help context. Associates the control with a particular
-// Help file and topic in a context sensitive application.
-// ----------------------------------------------------------------------------
-//
-void CVeiTrimForMmsContainer::GetHelpContext( TCoeHelpContext& /*aContext*/ ) const
- {
- LOG(KVideoEditorLogFile, "CVeiTrimForMmsContainer::GetHelpContext(): In");
-
- // Set UID of the CS Help file (same as application UID).
- //aContext.iMajor = KUidVideoEditor;
-
- // Set the context/topic.
- //aContext.iContext = KVED_HLP_TRIM_FOR_MMS_VIEW;
-
- LOG(KVideoEditorLogFile, "CVeiTrimForMmsContainer::GetHelpContext(): Out");
- }
-
-// ----------------------------------------------------------------------------
-// CVeiTrimForMmsContainer::SizeChanged()
-//
-// The function is called whenever SetExtent(), SetSize(), SetRect(),
-// SetCornerAndSize(), or SetExtentToWholeScreen() are called on the control.
-// ----------------------------------------------------------------------------
-//
-void CVeiTrimForMmsContainer::SizeChanged()
- {
- LOG(KVideoEditorLogFile, "CVeiTrimForMmsContainer::SizeChanged(): In");
-
- TRect rect = Rect();
- if ( iBgContext )
- {
- iBgContext->SetRect( rect );
- }
-
- if ( VideoEditorUtils::IsLandscapeScreenOrientation() ) //Landscape
- {
- // Start Text rect
- TInt startTextTlX = STATIC_CAST( TInt, rect.iBr.iX * 0.00962 );
- TInt startTextTlY = STATIC_CAST( TInt, rect.iBr.iY * 0.01389 );
- TInt startTextBrX = STATIC_CAST( TInt, rect.iBr.iX * 0.49512 );
- TInt startTextBrY = STATIC_CAST( TInt, rect.iBr.iY * 0.09375 );
-
- iStartTextBox = TRect(startTextTlX, startTextTlY, startTextBrX,
- startTextBrY);
- // End Text rect
- TInt endTextTlX = STATIC_CAST( TInt, rect.iBr.iX * 0.50481 );
- TInt endTextTlY = STATIC_CAST( TInt, rect.iBr.iY * 0.01389 );
- TInt endTextBrX = STATIC_CAST( TInt, rect.iBr.iX * 0.99039 );
- TInt endTextBrY = STATIC_CAST( TInt, rect.iBr.iY * 0.09375 );
-
- iEndTextBox = TRect(endTextTlX, endTextTlY, endTextBrX,
- endTextBrY);
-
- // Start Video rect
- TInt startVideoTlX = STATIC_CAST( TInt, rect.iBr.iX * 0.00962 );
- TInt startVideoTlY = STATIC_CAST( TInt, rect.iBr.iY * 0.10764 );
- TInt startVideoBrX = STATIC_CAST( TInt, rect.iBr.iX * 0.49512 );
- TInt startVideoBrY = STATIC_CAST( TInt, rect.iBr.iY * 0.68056 );
-
- iVideoDisplayStartRect = TRect(startVideoTlX, startVideoTlY, startVideoBrX,
- startVideoBrY);
- // End Video rect
- TInt endVideoTlX = STATIC_CAST( TInt, rect.iBr.iX * 0.50481 );
- TInt endVideoTlY = STATIC_CAST( TInt, rect.iBr.iY * 0.10764 );
- TInt endVideoBrX = STATIC_CAST( TInt, rect.iBr.iX * 0.99039 );
- TInt endVideoBrY = STATIC_CAST( TInt, rect.iBr.iY * 0.68056 );
-
- iVideoDisplayEndRect = TRect(endVideoTlX, endVideoTlY, endVideoBrX,
- endVideoBrY);
-
- // Timeline rect
- TInt timeLineTlX = STATIC_CAST( TInt, rect.iBr.iX * 0.0114 );
- TInt timeLineTlY = STATIC_CAST( TInt, rect.iBr.iY * 0.80208 );
-
- TSize cutBarSize = TSize(STATIC_CAST( TInt, rect.iBr.iX*0.9773 ),
- STATIC_CAST( TInt, rect.iBr.iY*0.0973 ) );
-
- iTimelineRect = TRect( TPoint(timeLineTlX, timeLineTlY), cutBarSize );
- }
- else // Portrait
- {
- // Start Text rect
- TInt startTextTlX = STATIC_CAST( TInt, rect.iBr.iX * 0.01136 );
- TInt startTextTlY = STATIC_CAST( TInt, rect.iBr.iY * 0.01389 );
- TInt startTextBrX = STATIC_CAST( TInt, rect.iBr.iX * 0.49432 );
- TInt startTextBrY = STATIC_CAST( TInt, rect.iBr.iY * 0.10417 );
-
- iStartTextBox = TRect(startTextTlX, startTextTlY, startTextBrX,
- startTextBrY);
-
- // End Text rect
- TInt endTextTlX = STATIC_CAST( TInt, rect.iBr.iX * 0.50568 );
- TInt endTextTlY = STATIC_CAST( TInt, rect.iBr.iY * 0.01389 );
- TInt endTextBrX = STATIC_CAST( TInt, rect.iBr.iX * 0.98864 );
- TInt endTextBrY = STATIC_CAST( TInt, rect.iBr.iY * 0.10417 );
-
- iEndTextBox = TRect(endTextTlX, endTextTlY, endTextBrX,
- endTextBrY);
-
- // Start Video rect
- TInt startVideoTlX = STATIC_CAST( TInt, rect.iBr.iX * 0.01136 );
- TInt startVideoTlY = STATIC_CAST( TInt, rect.iBr.iY * 0.11806 );
- TInt startVideoBrX = STATIC_CAST( TInt, rect.iBr.iX * 0.49432 );
- TInt startVideoBrY = STATIC_CAST( TInt, rect.iBr.iY * 0.60069 );
-
- iVideoDisplayStartRect = TRect(startVideoTlX, startVideoTlY, startVideoBrX,
- startVideoBrY);
-
- // End Video rect
- TInt endVideoTlX = STATIC_CAST( TInt, rect.iBr.iX * 0.50568 );
- TInt endVideoTlY = STATIC_CAST( TInt, rect.iBr.iY * 0.11806 );
- TInt endVideoBrX = STATIC_CAST( TInt, rect.iBr.iX * 0.98864 );
- TInt endVideoBrY = STATIC_CAST( TInt, rect.iBr.iY * 0.60069 );
-
- iVideoDisplayEndRect = TRect(endVideoTlX, endVideoTlY, endVideoBrX,
- endVideoBrY);
-
- // Timeline rect
- TInt timeLineTlX = STATIC_CAST( TInt, rect.iBr.iX * 0.0114 );
- TInt timeLineTlY = STATIC_CAST( TInt, rect.iBr.iY * 0.767361 );
-
-
- TSize cutBarSize = TSize(STATIC_CAST( TInt, rect.iBr.iX*0.9773 ),
- STATIC_CAST( TInt, rect.iBr.iY*0.0973 ) );
-
- iTimelineRect = TRect(TPoint(timeLineTlX, timeLineTlY), cutBarSize);
- }
-
- iCutterBar->SetRect( iTimelineRect );
-
- LOG(KVideoEditorLogFile, "CVeiTrimForMmsContainer::SizeChanged(): Out");
- }
-
-
-TKeyResponse CVeiTrimForMmsContainer::OfferKeyEventL(
- const TKeyEvent& aKeyEvent,
- TEventCode aType )
- {
- if( iKeyEnable )
- {
- switch( aType )
- {
- //
- // Key down event
- //
- case EEventKeyDown:
- {
- if( iPreviewState == EPlaying )
- {
-// iView.SetTrimStateL( CVeiTrimForMmsView::ESeek );
-// Stop( ETrue );
- return EKeyWasConsumed;
- }
- else
- {
- iKeyRepeatCount = 0;
-
- iMovie.VideoClipSetCutInTime( 0,TTimeIntervalMicroSeconds(0) );
- iMovie.VideoClipSetCutOutTime( 0, iDuration );
- return EKeyWasConsumed;
- }
- }
- //
- // The key event
- //
- case EEventKey:
- {
- if( iPreviewState == EPlaying )
- {
- return EKeyWasConsumed;
- }
- switch( aKeyEvent.iCode )
- {
- //
- // Navi-key right
- //
- case EKeyRightArrow:
- {
- if( iSeekEndPos != iDuration )
- {
- iSeekEvent = ETrue;
- iLastKeyLeftOrRight = ETrue;
- if(iKeyRepeatCount < 18)
- {
- iKeyRepeatCount++;
- }
-
- TInt adjustment = TimeIncrement( iKeyRepeatCount );
- TInt64 newPos = iSeekPos.Int64() + adjustment;
-
- TTimeIntervalMicroSeconds endTime(0);
- iMovie.GetDurationEstimateL( iMaxMmsSize, newPos, endTime );
-
- if ( endTime.Int64() >= iDuration.Int64() - adjustment )
- {
- iKeyRepeatCount-=3;
- adjustment = TimeIncrement( iKeyRepeatCount );
- endTime = iDuration;
- newPos+=adjustment;
- }
-
- iSeekPos = TTimeIntervalMicroSeconds( newPos );
-
- iSeekEndPos = endTime;
- iCutterBar->SetInPoint(iSeekPos);
- iCutterBar->SetOutPoint(endTime);
- }
-
- return EKeyWasConsumed;
- }
- //
- // Navi-key left
- //
- case EKeyLeftArrow:
- {
- if( iSeekPos.Int64() > 0 )
- {
- iSeekEvent = ETrue;
- iLastKeyLeftOrRight = ETrue;
- // Process the command only when repeat count is zero.
- iKeyRepeatCount++;
-
-
- TInt adjustment = TimeIncrement( iKeyRepeatCount );
-
- TInt64 newPos = iSeekPos.Int64() - adjustment;
- if ( newPos < 0 )
- {
- newPos = 0;
- }
- iSeekPos = TTimeIntervalMicroSeconds( newPos );
-
- TTimeIntervalMicroSeconds endTime(0);
- iMovie.GetDurationEstimateL( iMaxMmsSize, newPos, endTime );
-
- iSeekEndPos = endTime;
-
- iCutterBar->SetInPoint(iSeekPos);
- iCutterBar->SetOutPoint(endTime);
- }
- return EKeyWasConsumed;
- }
- //
- // Default
- //
- default:
- {
- return EKeyWasNotConsumed;
- }
- }
- }
- //
- // Key up event
- //
-
- case EEventKeyUp:
- {
- if( iPreviewState == EPlaying )
- {
- iView.SetTrimStateL( CVeiTrimForMmsView::ESeek );
-
- Stop( ETrue );
- return EKeyWasConsumed;
- }
- else
- {
- if ( iLastKeyLeftOrRight )
- {
- iView.ProcessNeeded( ETrue );
- iMovie.VideoClipSetCutInTime( 0, iSeekPos );
- iMovie.VideoClipSetCutOutTime( 0, iSeekEndPos );
- iView.UpdateNaviPaneL( iMovie.GetSizeEstimateL()/1024,iMovie.Duration() );
- iLastKeyLeftOrRight = EFalse;
- if( iSeekEvent )
- {
- StartFrameTakerL( iClipIndex );
- iSeekEvent = EFalse;
- }
- return EKeyWasConsumed;
- }
- }
- break;
- }
- //
- // Default
- //
- default:
- return EKeyWasNotConsumed;
- }
- } //iKeyEnable
- return EKeyWasNotConsumed;
- }
-
-
-
-TInt CVeiTrimForMmsContainer::TimeIncrement(TInt aKeyCount) const
- {
- if ( aKeyCount < 3 )
- {
- return 100000;
- }
- else if ( aKeyCount < 6 ) // 4
- {
- return 300000;
- }
- else if ( aKeyCount < 9 ) // 5
- {
- return 500000;
- }
- else if ( aKeyCount < 12 ) // 10
- {
- return 1000000;
- }
- else if ( aKeyCount < 15 ) // 13
- {
- return 2000000;
- }
- else if ( aKeyCount < 18 ) // 15
- {
- return 3000000;
- }
- else
- {
- return 5000000;
- }
- }
-
-
-void CVeiTrimForMmsContainer::NotifyVideoDisplayEvent( const TPlayerEvent aEvent, const TInt& aInfo )
- {
- switch (aEvent)
- {
- case MVeiVideoDisplayObserver::EOpenComplete:
- {
- iVideoDisplay->SetRect( iPreviewRect );
- if ( !VideoEditorUtils::IsLandscapeScreenOrientation() ) //Portrait
- {
- iVideoDisplay->SetRotationL( EVideoRotationClockwise90 );
- }
- iPreviewState = ELoading;
-
- iVideoDisplay->SetPositionL( CutInTime() );
- iVideoDisplay->PlayL( iMovie.VideoClipInfo( iClipIndex )->FileName(), CutInTime(), CutOutTime() );
-
- break;
- }
-
- case MVeiVideoDisplayObserver::ELoadingComplete:
- {
-
- iVideoDisplay->MakeVisible( ETrue );
- iPreviewState = EPlaying;
- break;
- }
-
- case MVeiVideoDisplayObserver::EStop:
- {
- iPreviewState = EIdle;
- iView.SetTrimStateL( CVeiTrimForMmsView::ESeek );
-
- iVideoDisplay->MakeVisible(EFalse);
-
- DrawDeferred();
- break;
- }
- case MVeiVideoDisplayObserver::EPlayComplete:
- {
- iView.SetTrimStateL( CVeiTrimForMmsView::ESeek );
- Stop( ETrue );
- if (KErrNoMemory == aInfo)
- {
- iView.ShowGlobalErrorNoteL( KErrNoMemory );
- }
- break;
- }
- default:
- {
- break;
- }
- }
- }
-
-
-/**
- * Called to notify that a new video clip has been successfully
- * added to the movie. Note that the indices and the start and end times
- * of the video clips after the new clip have also changed as a result.
- * Note that the transitions may also have changed.
- *
- * @param aMovie movie
- * @param aIndex index of video clip in movie
- */
-void CVeiTrimForMmsContainer::NotifyVideoClipAdded( CVedMovie& aMovie, TInt aIndex )
- {
- LOG(KVideoEditorLogFile, "CVeiTrimForMmsContainer::NotifyVideoClipAdded: in");
-
- iSeekPos = TTimeIntervalMicroSeconds(0);
-
- aMovie.GetDurationEstimateL( iMaxMmsSize, iSeekPos, iSeekEndPos );
- LOGFMT3(KVideoEditorLogFile, "CVeiTrimForMmsContainer::NotifyVideoClipAdded: 1, iMaxMmsSize:%d, iSeekPos:%Ld, iSeekEndPos:%Ld",
- iMaxMmsSize, iSeekPos.Int64(), iSeekEndPos.Int64());
-
- iCutterBar->SetInPoint( iSeekPos );
- iCutterBar->SetOutPoint( iSeekEndPos );
- iCutterBar->SetTotalDuration( aMovie.Duration() );
- iDuration = aMovie.Duration();
-
- iClipIndex = aIndex;
-
- aMovie.VideoClipSetCutInTime( 0, iSeekPos );
- aMovie.VideoClipSetCutOutTime( 0, iSeekEndPos );
-
- TInt movieSizeLimit = static_cast<TInt>(iMaxMmsSize*0.9);
- aMovie.SetMovieSizeLimit( movieSizeLimit );
-
- LOGFMT(KVideoEditorLogFile, "CVeiTrimForMmsContainer::NotifyVideoClipAdded(): 2, movie size set to:%d", movieSizeLimit);
-
- StartFrameTakerL( iClipIndex );
-
- iSeekEvent = EFalse;
-
-
- iView.UpdateNaviPaneL( iMovie.GetSizeEstimateL()/1024,iMovie.Duration() );
-
- iKeyEnable = ETrue;
-
- LOG(KVideoEditorLogFile, "CVeiTrimForMmsContainer::NotifyVideoClipAdded: out");
- }
-
-
-void CVeiTrimForMmsContainer::NotifyVideoClipAddingFailed( CVedMovie& /*aMovie*/,
- TInt /*aError*/ )
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyVideoClipRemoved( CVedMovie& /*aMovie*/,
- TInt /*aIndex*/ )
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyVideoClipIndicesChanged( CVedMovie& /*aMovie*/,
- TInt /*aOldIndex*/,
- TInt /*aNewIndex*/ )
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyVideoClipTimingsChanged(
- CVedMovie& /*aMovie*/,
- TInt /*aIndex*/ )
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyVideoClipColorEffectChanged(
- CVedMovie& /*aMovie*/,
- TInt /*aIndex*/ )
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyVideoClipAudioSettingsChanged(
- CVedMovie& /*aMovie*/,
- TInt /*aIndex*/ )
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyVideoClipGeneratorSettingsChanged(
- CVedMovie& /*aMovie*/,
- TInt /*aIndex*/ )
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyVideoClipDescriptiveNameChanged(
- CVedMovie& /*aMovie*/,
- TInt /*aIndex*/ )
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyStartTransitionEffectChanged(
- CVedMovie& /*aMovie*/ )
- {
- }
-
-
-void CVeiTrimForMmsContainer::NotifyMiddleTransitionEffectChanged(
- CVedMovie& /*aMovie*/,
- TInt /*aIndex*/ )
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyEndTransitionEffectChanged(
- CVedMovie& /*aMovie*/ )
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyAudioClipAdded( CVedMovie& /*aMovie*/,
- TInt /*aIndex*/ )
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyAudioClipAddingFailed(
- CVedMovie& /*aMovie*/,
- TInt /*aError*/ )
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyAudioClipRemoved( CVedMovie& /*aMovie*/,
- TInt /*aIndex*/ )
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyAudioClipIndicesChanged(
- CVedMovie& /*aMovie*/,
- TInt /*aOldIndex*/,
- TInt /*aNewIndex*/ )
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyAudioClipTimingsChanged(
- CVedMovie& /*aMovie*/,
- TInt /*aIndex*/ )
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyMovieQualityChanged( CVedMovie& /*aMovie*/ )
- {
- }
-
-
-void CVeiTrimForMmsContainer::NotifyMovieReseted( CVedMovie& /*aMovie*/ )
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyMovieOutputParametersChanged(CVedMovie& /*aMovie*/)
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyAudioClipDynamicLevelMarkInserted(CVedMovie& /*aMovie*/,
- TInt /*aClipIndex*/,
- TInt /*aMarkIndex*/)
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyAudioClipDynamicLevelMarkRemoved(CVedMovie& /*aMovie*/,
- TInt /*aClipIndex*/,
- TInt /*aMarkIndex*/)
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyVideoClipDynamicLevelMarkInserted(CVedMovie& /*aMovie*/,
- TInt /*aClipIndex*/,
- TInt /*aMarkIndex*/)
- {
- }
-
-void CVeiTrimForMmsContainer::NotifyVideoClipDynamicLevelMarkRemoved(CVedMovie& /*aMovie*/,
- TInt /*aClipIndex*/,
- TInt /*aMarkIndex*/)
- {
- }
-
-void CVeiTrimForMmsContainer::PlayL( const TDesC& aFilename, const TRect& aRect )
- {
- iCutterBar->MakeVisible( EFalse );
- iVideoDisplayStart->MakeVisible( EFalse );
- iVideoDisplayEnd->MakeVisible( EFalse );
- iVideoDisplay->MakeVisible( EFalse );
-
- iVideoDisplay->ShowBlackScreen();
-
- iPreviewRect = aRect;
- iBlack = ETrue;
- iScreenLight->Start();
-
- iPreviewState = EOpeningFile;
- iVideoDisplay->OpenFileL( aFilename );
- }
-
-void CVeiTrimForMmsContainer::Stop( TBool aCloseStream )
- {
- iCutterBar->MakeVisible( ETrue );
- iVideoDisplayStart->MakeVisible( ETrue );
- iVideoDisplayEnd->MakeVisible( ETrue );
- iBlack = EFalse;
- iScreenLight->Stop();
- iVideoDisplay->Stop( aCloseStream );
- DrawNow();
- }
-
-void CVeiTrimForMmsContainer::PauseL()
- {
- iPreviewState = EPause;
- iVideoDisplay->PauseL();
- iVideoDisplay->MakeVisible(EFalse);
- DrawNow();
- }
-
-TInt CVeiTrimForMmsContainer::PreviewState() const
- {
- return iPreviewState;
- }
-
-void CVeiTrimForMmsContainer::NotifyFramesCompleted( CFbsBitmap* aFirstFrame,
- CFbsBitmap* aLastFrame, CFbsBitmap* /*aTimelineFrame*/, TInt aError )
- {
- if( aError==KErrNone )
- {
- iVideoDisplayStart->ShowPictureL( *aFirstFrame );
- iVideoDisplayEnd->ShowPictureL( *aLastFrame );
- }
-
- if( iProgressNote )
- {
- iProgressInfo->SetAndDraw(100);
- iProgressNote->ProcessFinishedL();
- }
- }
-
-void CVeiTrimForMmsContainer::StartFrameTakerL( TInt aIndex )
- {
- iProgressNote =
- new (ELeave) CAknProgressDialog(REINTERPRET_CAST(CEikDialog**, &iProgressNote), ETrue);
- iProgressNote->SetCallback(this);
- iProgressNote->ExecuteDlgLD( R_VEI_PROGRESS_NOTE );
-
- HBufC* stringholder;
- stringholder = StringLoader::LoadL( R_VEI_PROGRESS_NOTE_PROCESSING, iEikonEnv );
- CleanupStack::PushL( stringholder );
- iProgressNote->SetTextL( *stringholder );
- CleanupStack::PopAndDestroy( stringholder );
-
- iProgressInfo = iProgressNote->GetProgressInfoL();
- iProgressInfo->SetFinalValue(100);
- iProgressInfo->SetAndDraw(50);
-
-// First frame is shown in main display so it is bigger.. Last frame is always
-// on transition display and one frame for the video timeline.
- TSize firstThumbResolution = iVideoDisplayStart->GetScreenSize();
- TSize lastThumbResolution = iVideoDisplayEnd->GetScreenSize();
- TSize timelineThumbResolution = TSize( 34, 28 );
-
- TInt frameCount = iMovie.VideoClipInfo(aIndex)->VideoFrameCount();
-
- TInt firstThumbNailIndex = iMovie.VideoClipInfo(aIndex)->GetVideoFrameIndexL( CutInTime() );
- TInt lastThumbNailIndex = iMovie.VideoClipInfo(aIndex)->GetVideoFrameIndexL( CutOutTime() );
- if ( lastThumbNailIndex >= frameCount )
- {
- lastThumbNailIndex = frameCount-1;
- }
-
-
- iFrameTaker->GetFramesL( *iMovie.VideoClipInfo(aIndex),
- firstThumbNailIndex, &firstThumbResolution,
- lastThumbNailIndex, &lastThumbResolution,
- firstThumbNailIndex, &timelineThumbResolution,
- EPriorityLow );
- }
-
-TTypeUid::Ptr CVeiTrimForMmsContainer::MopSupplyObject( TTypeUid aId )
- {
- if ( aId.iUid == MAknsControlContext::ETypeId && iBgContext )
- {
- return MAknsControlContext::SupplyMopObject( aId, iBgContext );
- }
- return CCoeControl::MopSupplyObject( aId );
- }
-// End of File
-