--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/videditor/ManualVideoEditor/src/VeiCutVideoView.cpp Fri Jan 29 14:08:33 2010 +0200
@@ -0,0 +1,1310 @@
+/*
+* 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 <aknviewappui.h>
+#include <avkon.hrh>
+#include <manualvideoeditor.rsg>
+#include <akntitle.h>
+#include <barsread.h>
+#include <stringloader.h>
+#include <aknnotewrappers.h>
+#include <aknquerydialog.h>
+#include <aknlists.h>
+#include <aknPopup.h>
+#include <AknProgressDialog.h>
+#include <aknnavide.h>
+#include <eikbtgpc.h>
+#include <eikmenub.h>
+#include <eikmenup.h>
+#include <eikprogi.h>
+#include <CAknMemorySelectionDialog.h>
+#include <CAknFileNamePromptDialog.h>
+#include <apparc.h>
+#include <aknselectionlist.h>
+#include <sysutil.h>
+
+// User includes
+#include "VeiAppUi.h"
+#include "VeiCutVideoView.h"
+#include "VeiCutVideoContainer.h"
+#include "manualvideoeditor.hrh"
+#include "veitempmaker.h"
+#include "VeiTimeLabelNavi.h"
+#include "VeiEditVideoView.h"
+#include "VideoEditorCommon.h"
+#include "VeiErrorUi.h"
+
+void CVeiCutVideoView::ConstructL()
+ {
+ LOG(KVideoEditorLogFile, "CVeiCutVideoView::ConstructL: in");
+
+ BaseConstructL( R_VEI_CUT_VIDEO_VIEW );
+
+ CEikStatusPane* sp = StatusPane();
+
+ iNaviPane = (CAknNavigationControlContainer*) sp->ControlL(
+ TUid::Uid(EEikStatusPaneUidNavi));
+
+ iTimeNavi = CreateTimeLabelNaviL();
+
+ iVolumeNavi = iNaviPane->CreateVolumeIndicatorL(
+ R_AVKON_NAVI_PANE_VOLUME_INDICATOR );
+
+ iErrorUI = CVeiErrorUI::NewL( *iCoeEnv );
+
+ iTimeUpdater = CPeriodic::NewL( CActive::EPriorityLow );
+ iVolumeHider = CPeriodic::NewL( CActive::EPriorityLow );
+
+ LOG(KVideoEditorLogFile, "CVeiCutVideoView::ConstructL: out");
+ }
+
+// ---------------------------------------------------------
+// CVeiCutVideoView::~CVeiCutVideoView()
+// ?implementation_description
+// ---------------------------------------------------------
+//
+CVeiCutVideoView::~CVeiCutVideoView()
+ {
+ if ( iProgressNote )
+ {
+ delete iProgressNote;
+ iProgressNote = NULL;
+ }
+ if ( iContainer )
+ {
+ AppUi()->RemoveFromViewStack( *this, iContainer );
+ delete iContainer;
+ iContainer = 0;
+ }
+ if ( iTempMovie )
+ {
+ iTempMovie->Reset();
+ delete iTempMovie;
+ iTempMovie = NULL;
+ }
+ if ( iTimeUpdater )
+ {
+ iTimeUpdater->Cancel();
+ delete iTimeUpdater;
+ }
+ if ( iVolumeHider )
+ {
+ iVolumeHider->Cancel();
+ delete iVolumeHider;
+ }
+
+ if ( iErrorUI )
+ {
+ delete iErrorUI;
+ }
+
+ delete iVolumeNavi;
+
+ delete iTimeNavi;
+
+ delete iProcessedTempFile;
+ }
+
+TUid CVeiCutVideoView::Id() const
+ {
+ return TUid::Uid( EVeiCutVideoView );
+ }
+
+void CVeiCutVideoView::DialogDismissedL( TInt aButtonId )
+ {
+ if ( aButtonId != EAknSoftkeyDone )
+ {
+ iTempMovie->CancelProcessing();
+ }
+ else
+ {
+ if ( iErrorNmb == KErrNone )
+ {
+ iContainer->SetInTime( iMovie->VideoClipCutInTime( iIndex ) );
+ iContainer->SetOutTime( iMovie->VideoClipCutOutTime( iIndex ) );
+
+ iContainer->GetThumbL( *iProcessedTempFile );
+ }
+ else
+ {
+ if ( iProcessedTempFile ) // delete temp
+ {
+ iEikonEnv->FsSession().Delete( *iProcessedTempFile );
+ delete iProcessedTempFile;
+ iProcessedTempFile = NULL;
+ }
+
+ iErrorUI->ShowGlobalErrorNote( iErrorNmb );
+ iErrorNmb = 0;
+ HandleCommandL( EVeiCmdCutVideoViewBack );
+ }
+ }
+ }
+
+void CVeiCutVideoView::DynInitMenuPaneL( TInt aResourceId,CEikMenuPane* aMenuPane )
+ {
+ TInt state = iContainer->State();
+
+ if (aResourceId == R_VEI_CUT_VIDEO_VIEW_MENU_CLEAR_MARKS)
+ {
+ // delete in, out, in & out as necessary.
+
+ if (iMovie->VideoClipCutInTime(iIndex) <= TTimeIntervalMicroSeconds(0))
+ {
+ aMenuPane->SetItemDimmed(EVeiCmdCutVideoViewClearMarksIn, ETrue);
+ }
+ if (iMovie->VideoClipCutOutTime(iIndex) >= iMovie->VideoClipInfo(iIndex)->Duration())
+ {
+ aMenuPane->SetItemDimmed(EVeiCmdCutVideoViewClearMarksOut, ETrue);
+ }
+
+ if (!((iMovie->VideoClipCutOutTime(iIndex) < iMovie->VideoClipInfo(iIndex)->Duration())
+ && (iMovie->VideoClipCutInTime(iIndex) > TTimeIntervalMicroSeconds(0))))
+ {
+ aMenuPane->SetItemDimmed(EVeiCmdCutVideoViewClearMarksInOut, ETrue);
+ }
+ }
+
+ if ( aResourceId == R_VEI_CUT_VIDEO_VIEW_MENU )
+ {
+ if ( iPopupMenuOpened != EFalse )
+ {
+ aMenuPane->SetItemDimmed( EVeiCmdCutVideoViewClearMarks, ETrue );
+ aMenuPane->SetItemDimmed( EVeiCmdCutVideoTakeSnapshot, ETrue );
+ aMenuPane->SetItemDimmed( EVeiCmdCutVideoViewHelp, ETrue );
+ }
+ }
+ if ( !(( aResourceId == R_VEI_CUT_VIDEO_VIEW_MENU ) ||
+ ( aResourceId == R_VEI_CUT_VIDEO_VIEW_MENU ) ) )
+ return;
+
+ if ( iContainer->PlaybackPositionL() >= iContainer->TotalLength() )
+ {
+ aMenuPane->SetItemDimmed( EVeiCmdCutVideoViewPlay, ETrue );
+
+ }
+ if ( ( state == CVeiCutVideoContainer::EStatePaused ) ||
+ ( state == CVeiCutVideoContainer::EStateInitializing ) )
+ {
+ aMenuPane->SetItemDimmed( EVeiCmdCutVideoViewPlay, ETrue );
+ }
+
+ if ( ( state != CVeiCutVideoContainer::EStateStopped ) &&
+ ( state != CVeiCutVideoContainer::EStateStoppedInitial ) &&
+ ( state != CVeiCutVideoContainer::EStatePaused ) )
+ {
+ aMenuPane->SetItemDimmed( EVeiCmdCutVideoViewPlay, ETrue );
+ aMenuPane->SetItemDimmed( EVeiCmdCutVideoViewMarkIn, ETrue );
+ aMenuPane->SetItemDimmed( EVeiCmdCutVideoViewMarkOut, ETrue );
+ }
+ else
+ {
+ TTimeIntervalMicroSeconds pos = iContainer->PlaybackPositionL();
+ CVedVideoClipInfo* info = iMovie->VideoClipInfo( iIndex );
+
+ TInt cutInFrameIndex = info->GetVideoFrameIndexL( iMovie->VideoClipCutInTime( iIndex ));
+ TInt cutOutFrameIndex = info->GetVideoFrameIndexL( iMovie->VideoClipCutOutTime( iIndex ));
+ TInt videoFrameCount = info->VideoFrameCount();
+
+ // if we are in the existing start/end mark position the start/end mark is removed from the menu
+ if (info->GetVideoFrameIndexL(pos) == cutInFrameIndex)
+ {
+ aMenuPane->DeleteMenuItem( EVeiCmdCutVideoViewMarkIn );
+ }
+ else if (info->GetVideoFrameIndexL(pos) == cutOutFrameIndex)
+ {
+ aMenuPane->DeleteMenuItem( EVeiCmdCutVideoViewMarkOut );
+ }
+
+ if( cutInFrameIndex < (videoFrameCount-1 ) )
+ {
+ cutInFrameIndex++;
+ }
+
+ if( cutOutFrameIndex > 0 )
+ {
+ cutOutFrameIndex--;
+ }
+
+ TTimeIntervalMicroSeconds nextFramePosCutIn = info->VideoFrameStartTimeL( cutInFrameIndex );
+ TTimeIntervalMicroSeconds previousFramePosCutOut = info->VideoFrameStartTimeL( cutOutFrameIndex );
+
+ if ( pos < nextFramePosCutIn )
+ {
+ aMenuPane->DeleteMenuItem( EVeiCmdCutVideoViewMarkOut );
+ }
+ else
+ {
+ if ( pos > previousFramePosCutOut )
+ {
+ aMenuPane->DeleteMenuItem( EVeiCmdCutVideoViewMarkIn );
+ }
+ }
+ // something crashes somewhere outside VED UI if end mark is put to near to begin
+ TInt ind = -1;
+ if (aMenuPane->MenuItemExists(EVeiCmdCutVideoViewMarkOut, ind) && pos.Int64() < KMinCutVideoLength)
+ {
+ aMenuPane->DeleteMenuItem( EVeiCmdCutVideoViewMarkOut );
+ }
+ }
+ if ( ( iMovie->VideoClipCutInTime( iIndex ) == TTimeIntervalMicroSeconds( 0 ) &&
+ iMovie->VideoClipCutOutTime( iIndex ) == iMovie->VideoClipInfo( iIndex )->Duration() ) )
+ {
+ aMenuPane->DeleteMenuItem( EVeiCmdCutVideoViewPlayMarked );
+ }
+ if ( state != CVeiCutVideoContainer::EStatePlayingMenuOpen &&
+ state != CVeiCutVideoContainer::EStatePaused )
+ {
+ aMenuPane->DeleteMenuItem( EVeiCmdCutVideoViewContinue );
+ }
+ if ( ( state == CVeiCutVideoContainer::EStateStopped ) ||
+ ( state == CVeiCutVideoContainer::EStateStoppedInitial ) ||
+ ( state == CVeiCutVideoContainer::EStateOpening ) ||
+ ( state == CVeiCutVideoContainer::EStateBuffering ) )
+ {
+ aMenuPane->DeleteMenuItem( EVeiCmdCutVideoViewStop );
+ }
+
+ if ( ( iMovie->VideoClipCutOutTime( iIndex ) >= iMovie->VideoClipInfo( iIndex )->Duration() ) &&
+ ( iMovie->VideoClipCutInTime( iIndex ) <= TTimeIntervalMicroSeconds( 0 ) ) )
+ {
+ aMenuPane->SetItemDimmed( EVeiCmdCutVideoViewClearMarks, ETrue );
+ }
+ }
+
+void CVeiCutVideoView::HandleCommandL(TInt aCommand)
+ {
+ switch ( aCommand )
+ {
+ case EAknSoftkeyOk:
+ {
+ iPopupMenuOpened = ETrue;
+ if (iContainer->State() == CVeiCutVideoContainer::EStatePlaying)
+ {
+ PausePreviewL();
+ iContainer->SetStateL(CVeiCutVideoContainer::EStatePlayingMenuOpen);
+ }
+
+ MenuBar()->TryDisplayMenuBarL();
+ if (iContainer->State() == CVeiCutVideoContainer::EStatePlayingMenuOpen)
+ {
+ iContainer->SetStateL(CVeiCutVideoContainer::EStatePaused);
+ }
+ iPopupMenuOpened = EFalse;
+ break;
+ }
+ case EVeiCmdCutVideoViewDone:
+ case EVeiCmdCutVideoViewBack:
+ case EAknSoftkeyBack:
+ {
+ StopNaviPaneUpdateL();
+
+ iContainer->StopL();
+ iContainer->CloseStreamL();
+
+ // Activate Edit Video view
+ AppUi()->ActivateLocalViewL( TUid::Uid(EVeiEditVideoView) );
+ break;
+ }
+
+ case EVeiCmdCutVideoViewMarkIn:
+ {
+ STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl() )->
+ SetPauseIconVisibilityL( ETrue );
+ MarkInL();
+ break;
+ }
+ case EVeiCmdCutVideoViewMarkOut:
+ {
+ STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl() )->
+ SetPauseIconVisibilityL( ETrue );
+ MarkOutL();
+ break;
+ }
+ case EVeiCmdCutVideoViewClearMarksInOut:
+ {
+ ClearInOutL( ETrue, ETrue );
+ break;
+ }
+ case EVeiCmdCutVideoViewClearMarksIn:
+ {
+ ClearInOutL( ETrue, EFalse );
+ break;
+ }
+ case EVeiCmdCutVideoViewClearMarksOut:
+ {
+ ClearInOutL( EFalse, ETrue );
+ break;
+ }
+ case EVeiCmdCutVideoViewPlayMarked:
+ {
+ STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl() )->
+ SetPauseIconVisibilityL( EFalse );
+ PlayMarkedL();
+ break;
+ }
+ case EVeiCmdCutVideoViewPlay:
+ {
+ STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl() )->
+ SetPauseIconVisibilityL( EFalse );
+ iNaviPane->PushL( *iTimeNavi );
+
+ PlayPreviewL();
+ break;
+ }
+ case EVeiCmdCutVideoViewStop:
+ {
+ STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl() )->
+ SetPauseIconVisibilityL( EFalse );
+ iNaviPane->PushL( *iTimeNavi );
+ StopNaviPaneUpdateL();
+ iContainer->StopL();
+ break;
+ }
+ case EVeiCmdCutVideoViewContinue:
+ {
+ STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl() )->
+ SetPauseIconVisibilityL( EFalse );
+ iNaviPane->PushL( *iTimeNavi );
+ PlayPreviewL();
+ break;
+ }
+ case EVeiCmdCutVideoTakeSnapshot:
+ {
+ if( IsEnoughFreeSpaceToSaveL() )
+ {
+ iContainer->TakeSnapshotL();
+ }
+ break;
+ }
+ //
+ // Options->Help
+ //
+ case EVeiCmdCutVideoViewHelp:
+ {
+ // CS Help launching is handled in Video Editor's AppUi.
+ AppUi()->HandleCommandL( EVeiCmdCutVideoViewHelp );
+ break;
+ }
+ default:
+ {
+ AppUi()->HandleCommandL( aCommand );
+ break;
+ }
+ }
+ }
+
+void CVeiCutVideoView::NotifyMovieProcessingStartedL( CVedMovie& /*aMovie*/ )
+ {
+ LOG(KVideoEditorLogFile, "CVeiCutVideoView::NotifyMovieProcessingStartedL: In");
+ iProgressNote =
+ new (ELeave) CAknProgressDialog(REINTERPRET_CAST(CEikDialog**,
+ &iProgressNote), ETrue);
+ iProgressNote->SetCallback(this);
+ iProgressNote->ExecuteDlgLD( R_VEI_PROGRESS_NOTE_WITH_CANCEL );
+
+ HBufC* stringholder;
+
+ stringholder = StringLoader::LoadL( R_VEI_PROGRESS_NOTE_CUT, iEikonEnv );
+ CleanupStack::PushL( stringholder );
+
+ iProgressNote->SetTextL( *stringholder );
+ CleanupStack::PopAndDestroy( stringholder );
+
+ iProgressInfo = iProgressNote->GetProgressInfoL();
+ iProgressInfo->SetFinalValue(100);
+ LOG(KVideoEditorLogFile, "CVeiCutVideoView::NotifyMovieProcessingStartedL: Out");
+ }
+
+void CVeiCutVideoView::NotifyMovieProcessingProgressed( CVedMovie& /*aMovie*/, TInt aPercentage )
+ {
+ iProgressInfo->SetAndDraw( aPercentage );
+ }
+
+void CVeiCutVideoView::NotifyMovieProcessingCompleted( CVedMovie& /*aMovie*/, TInt aError )
+ {
+ LOGFMT(KVideoEditorLogFile, "CVeiCutVideoView::NotifyMovieProcessingCompleted: In, aError:%d", aError);
+ if ( iTempMovie ) //Effected clip is ready, Delete tempmovie
+ {
+ iTempMovie->Reset();
+ delete iTempMovie;
+ iTempMovie = NULL;
+ }
+
+ if ( aError == KErrCancel )
+ {
+ HandleCommandL( EVeiCmdCutVideoViewBack );
+ }
+ else
+ {
+ iProgressInfo->SetAndDraw(100);
+ iErrorNmb = aError;
+ iProgressNote->ProcessFinishedL();
+ }
+ LOG(KVideoEditorLogFile, "CVeiCutVideoView::NotifyMovieProcessingCompleted: Out");
+ }
+
+void CVeiCutVideoView::NotifyVideoClipAdded( CVedMovie& /*aMovie*/, TInt /*aIndex*/ )
+ {
+ LOG(KVideoEditorLogFile, "CVeiCutVideoView::NotifyVideoClipAdded: In");
+
+ iTempMovie->UnregisterMovieObserver( this );
+ iTempMovie->VideoClipSetColorEffect( 0, iMovie->VideoClipColorEffect( iIndex ) );
+ iTempMovie->VideoClipSetColorTone( 0, iMovie->VideoClipColorTone( iIndex ) );
+ iTempMovie->SetVideoClipVolumeGainL( 0, iMovie->GetVideoClipVolumeGainL( iIndex ) );
+
+ iProcessedTempFile = HBufC::NewL( KMaxFileName );
+
+ TRAPD( err,
+ CVeiTempMaker* maker = CVeiTempMaker::NewL();
+ maker->GenerateTempFileName( *iProcessedTempFile, iMemoryInUse, iMovie->Format() );
+ delete maker;
+ );
+
+ if ( err == KErrNone )
+ {
+ TRAP( err, iTempMovie->ProcessL( *iProcessedTempFile, *this ) );
+ }
+
+ if ( err != KErrNone )
+ {
+ iErrorUI->ShowGlobalErrorNote( err );
+
+ if ( iProcessedTempFile ) // delete temp
+ {
+ iEikonEnv->FsSession().Delete( *iProcessedTempFile );
+ delete iProcessedTempFile;
+ iProcessedTempFile = NULL;
+ }
+ }
+ LOG(KVideoEditorLogFile, "CVeiCutVideoView::NotifyVideoClipAdded: Out");
+ }
+
+void CVeiCutVideoView::NotifyVideoClipAddingFailed( CVedMovie& /*aMovie*/, TInt /*aError*/ )
+ {
+ }
+
+void CVeiCutVideoView::NotifyVideoClipRemoved( CVedMovie& /*aMovie*/, TInt /*aIndex*/ )
+ {
+ }
+
+void CVeiCutVideoView::NotifyVideoClipIndicesChanged( CVedMovie& /*aMovie*/, TInt /*aOldIndex*/,
+ TInt /*aNewIndex*/ )
+ {
+ }
+
+void CVeiCutVideoView::NotifyVideoClipTimingsChanged( CVedMovie& /*aMovie*/, TInt /*aIndex*/ )
+ {
+ }
+
+void CVeiCutVideoView::NotifyVideoClipColorEffectChanged( CVedMovie& /*aMovie*/, TInt /*aIndex*/ )
+ {
+ }
+
+void CVeiCutVideoView::NotifyVideoClipAudioSettingsChanged( CVedMovie& /*aMovie*/,
+ TInt /*aIndex*/ )
+ {
+ }
+
+void CVeiCutVideoView::NotifyStartTransitionEffectChanged( CVedMovie& /*aMovie*/ )
+ {
+ }
+
+void CVeiCutVideoView::NotifyMiddleTransitionEffectChanged( CVedMovie& /*aMovie*/,
+ TInt /*aIndex*/ )
+ {
+ }
+
+void CVeiCutVideoView::NotifyEndTransitionEffectChanged( CVedMovie& /*aMovie*/ )
+ {
+ }
+
+void CVeiCutVideoView::NotifyAudioClipAdded( CVedMovie& /*aMovie*/, TInt /*aIndex*/ )
+ {
+ }
+
+void CVeiCutVideoView::NotifyAudioClipAddingFailed( CVedMovie& /*aMovie*/, TInt /*aError*/ )
+ {
+ }
+
+void CVeiCutVideoView::NotifyAudioClipRemoved( CVedMovie& /*aMovie*/, TInt /*aIndex*/ )
+ {
+ }
+
+void CVeiCutVideoView::NotifyAudioClipIndicesChanged( CVedMovie& /*aMovie*/, TInt /*aOldIndex*/,
+ TInt /*aNewIndex*/ )
+ {
+ }
+
+void CVeiCutVideoView::NotifyAudioClipTimingsChanged( CVedMovie& /*aMovie*/,
+ TInt /*aIndex*/ )
+ {
+ }
+
+void CVeiCutVideoView::NotifyMovieReseted( CVedMovie& /*aMovie*/ )
+ {
+ }
+
+void CVeiCutVideoView::NotifyVideoClipGeneratorSettingsChanged(CVedMovie& /*aMovie*/,
+ TInt /*aIndex*/)
+ {
+ }
+
+void CVeiCutVideoView::NotifyVideoClipDescriptiveNameChanged(CVedMovie& /*aMovie*/, TInt /*aIndex*/)
+ {
+ }
+
+void CVeiCutVideoView::NotifyMovieQualityChanged(CVedMovie& /*aMovie*/)
+ {
+ }
+
+void CVeiCutVideoView::NotifyMovieOutputParametersChanged(CVedMovie& /*aMovie*/)
+ {
+ }
+
+void CVeiCutVideoView::NotifyAudioClipDynamicLevelMarkInserted(CVedMovie& /*aMovie*/,
+ TInt /*aClipIndex*/,
+ TInt /*aMarkIndex*/)
+ {
+ }
+
+void CVeiCutVideoView::NotifyAudioClipDynamicLevelMarkRemoved(CVedMovie& /*aMovie*/,
+ TInt /*aClipIndex*/,
+ TInt /*aMarkIndex*/)
+ {
+ }
+
+void CVeiCutVideoView::NotifyVideoClipDynamicLevelMarkInserted(CVedMovie& /*aMovie*/,
+ TInt /*aClipIndex*/,
+ TInt /*aMarkIndex*/)
+ {
+ }
+
+void CVeiCutVideoView::NotifyVideoClipDynamicLevelMarkRemoved(CVedMovie& /*aMovie*/,
+ TInt /*aClipIndex*/,
+ TInt /*aMarkIndex*/)
+ {
+ }
+
+void CVeiCutVideoView::DoActivateL(
+ const TVwsViewId& /*aPrevViewId*/,TUid /*aCustomMessageId*/,
+ const TDesC8& /*aCustomMessage*/)
+ {
+
+ if (!iContainer)
+ {
+ iContainer = CVeiCutVideoContainer::NewL( AppUi()->ClientRect(), *this, *iErrorUI );
+ iContainer->SetMopParent( this );
+ AppUi()->AddToStackL( *this, iContainer );
+ }
+
+ CEikStatusPane *statusPane = ( ( CAknAppUi* )iEikonEnv->EikAppUi() )->StatusPane();
+
+ CAknTitlePane* titlePane = (CAknTitlePane*) statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) );
+ TResourceReader reader1;
+ iCoeEnv->CreateResourceReaderLC( reader1, R_VEI_CUTVIDEO_VIEW_TITLE_NAME );
+ titlePane->SetFromResourceL( reader1 );
+ CleanupStack::PopAndDestroy(); //reader1
+
+ UpdateCBAL( CVeiCutVideoContainer::EStateInitializing );
+ iNaviPane->PushL( *iTimeNavi );
+
+ iAudioMuted = !( iMovie->VideoClipEditedHasAudio( iIndex ) );
+
+ STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl() )->
+ SetPauseIconVisibilityL( EFalse );
+
+ if ( iAudioMuted )
+ {
+ STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())->
+ SetVolumeIconVisibilityL( EFalse );
+ VolumeMuteL();
+ }
+ else
+ {
+ STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())->
+ SetVolumeIconVisibilityL( ETrue );
+ }
+ iErrorNmb = 0;
+
+ iContainer->SetInTime( iMovie->VideoClipCutInTime( iIndex ) );
+ iContainer->SetOutTime( iMovie->VideoClipCutOutTime( iIndex ) );
+
+ CVedVideoClipInfo* clipinfo = iMovie->VideoClipInfo( iIndex );
+
+/**
+* First try to open video clip in videoplayerutility. If it leaves with error code
+* KErrNotSupported(-5), then GenerateEffectedClipL() is called.
+*/ if (EVedColorEffectBlackAndWhite == iMovie->VideoClipColorEffect( iIndex ) ||
+ EVedColorEffectToning == iMovie->VideoClipColorEffect( iIndex ))
+ {
+ GenerateEffectedClipL();
+ }
+ else if (iMovie->VideoClipInfo(iIndex)->HasAudio() && iMovie->GetVideoClipVolumeGainL(iIndex))
+ {
+ GenerateEffectedClipL();
+ }
+ else
+ {
+ iContainer->GetThumbL( clipinfo->FileName() );
+ }
+ }
+
+void CVeiCutVideoView::GenerateEffectedClipL()
+ {
+ TEntry fileinfo;
+// check if there is enough space to create temp file
+ RFs& fs = iEikonEnv->FsSession();
+
+ CVedVideoClipInfo* videoclipinfo = iMovie->VideoClipInfo( iIndex );
+
+ fs.Entry( videoclipinfo->FileName(), fileinfo );
+
+ TBool spaceBelowCriticalLevel( EFalse );
+
+ TVeiSettings movieSaveSettings;
+
+
+ STATIC_CAST( CVeiAppUi*, iEikonEnv->AppUi() )->ReadSettingsL( movieSaveSettings );
+
+ CAknMemorySelectionDialog::TMemory memoryInUse( movieSaveSettings.MemoryInUse() );
+
+
+ if ( memoryInUse == CAknMemorySelectionDialog::EPhoneMemory )
+ {
+ spaceBelowCriticalLevel = SysUtil::DiskSpaceBelowCriticalLevelL(
+ &fs, fileinfo.iSize, EDriveC );
+ }
+ else
+ {
+ spaceBelowCriticalLevel = SysUtil::MMCSpaceBelowCriticalLevelL(
+ &fs, fileinfo.iSize );
+ }
+
+ if ( !spaceBelowCriticalLevel )
+ {
+ iTempMovie = CVedMovie::NewL( NULL );
+ iTempMovie->RegisterMovieObserverL( this );
+ CVedVideoClipInfo* clipinfo = iMovie->VideoClipInfo( iIndex );
+ iTempMovie->InsertVideoClipL( clipinfo->FileName(), 0 );
+ }
+ else
+ {
+ HBufC* stringholder;
+
+ stringholder = StringLoader::LoadLC( R_VEI_NOT_ENOUGH_SPACE, iEikonEnv );
+
+ CAknErrorNote* dlg = new ( ELeave ) CAknErrorNote( ETrue );
+ dlg->ExecuteLD( *stringholder );
+
+ CleanupStack::PopAndDestroy( stringholder);
+
+ HandleCommandL( EVeiCmdCutVideoViewBack );
+ }
+
+ }
+
+// ---------------------------------------------------------
+// CVeiCutVideoView::HandleCommandL(TInt aCommand)
+// ?implementation_description
+// ---------------------------------------------------------
+//
+void CVeiCutVideoView::DoDeactivate()
+ {
+ iNaviPane->Pop( iVolumeNavi );
+
+ if ( iTimeUpdater )
+ {
+ iTimeUpdater->Cancel();
+ }
+ if ( iVolumeHider )
+ {
+ iVolumeHider->Cancel();
+ }
+ if ( iContainer )
+ {
+ iNaviPane->Pop( iTimeNavi );
+ AppUi()->RemoveFromViewStack( *this, iContainer );
+
+ delete iContainer;
+ iContainer = NULL;
+ }
+
+ if ( iProcessedTempFile )
+ {
+ iEikonEnv->FsSession().Delete( *iProcessedTempFile );
+ delete iProcessedTempFile;
+ iProcessedTempFile = NULL;
+ }
+
+ }
+
+void CVeiCutVideoView::SetVideoClipAndIndex( CVedMovie& aVideoClip, TInt aIndex )
+ {
+ iMovie = &aVideoClip;
+ iIndex = aIndex;
+ }
+
+void CVeiCutVideoView::PlayPreviewL()
+ {
+ StartNaviPaneUpdateL();
+ iContainer->PlayL( iMovie->VideoClipInfo( iIndex )->FileName() );
+ }
+
+void CVeiCutVideoView::PausePreviewL()
+ {
+ STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl() )->
+ SetPauseIconVisibilityL( ETrue );
+ StopNaviPaneUpdateL();
+
+ iContainer->PauseL();
+ }
+
+void CVeiCutVideoView::UpdateCBAL(TInt aState)
+ {
+ switch (aState)
+ {
+ case CVeiCutVideoContainer::EStateInitializing:
+ case CVeiCutVideoContainer::EStateOpening:
+ case CVeiCutVideoContainer::EStateBuffering:
+ {
+ Cba()->SetCommandSetL(R_AVKON_SOFTKEYS_EMPTY);
+ break;
+ }
+ case CVeiCutVideoContainer::EStateStoppedInitial:
+ {
+ if ( ( iMovie->VideoClipCutInTime( iIndex ) == TTimeIntervalMicroSeconds( 0 ) ) &&
+ ( iMovie->VideoClipCutOutTime( iIndex ) == iMovie->VideoClipInfo(iIndex)->Duration() ) )
+ {
+ Cba()->SetCommandSetL(R_AVKON_SOFTKEYS_OPTIONS_BACK);
+ }
+ else
+ {
+ Cba()->SetCommandSetL(R_VEI_SOFTKEYS_OPTIONS_DONE);
+ }
+ break;
+ }
+ case CVeiCutVideoContainer::EStatePaused:
+ case CVeiCutVideoContainer::EStateStopped:
+ {
+ if ( ( iMovie->VideoClipCutInTime( iIndex ) == TTimeIntervalMicroSeconds( 0 ) ) &&
+ ( iMovie->VideoClipCutOutTime( iIndex ) == iMovie->VideoClipInfo(iIndex)->Duration() ) )
+ {
+ Cba()->SetCommandSetL(R_AVKON_SOFTKEYS_OPTIONS_BACK);
+ }
+ else
+ {
+ Cba()->SetCommandSetL(R_VEI_SOFTKEYS_OPTIONS_DONE);
+ }
+ break;
+ }
+ case CVeiCutVideoContainer::EStatePlaying:
+ {
+ if ( iContainer->PlaybackPositionL() < iMovie->VideoClipCutInTime( iIndex ) )
+ {
+ Cba()->SetCommandSetL( R_VEI_SOFTKEYS_IN_EMPTY );
+ iMarkState = EMarkStateIn;
+ }
+ else if ( iContainer->PlaybackPositionL() < iMovie->VideoClipCutOutTime( iIndex ) )
+ {
+ Cba()->SetCommandSetL( R_VEI_SOFTKEYS_IN_OUT );
+ iMarkState = EMarkStateInOut;
+ }
+ else
+ {
+ Cba()->SetCommandSetL( R_VEI_SOFTKEYS_EMPTY_OUT );
+ iMarkState = EMarkStateOut;
+ }
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+ Cba()->DrawDeferred();
+ }
+
+void CVeiCutVideoView::PlayMarkedL()
+ {
+ LOGFMT3(KVideoEditorLogFile, "CVeiCutVideoView::PlayMarkedL: In: iIndex:%d, iMovie->VideoClipCutInTime():%Ld, iMovie->VideoClipCutOutTime():%Ld", iIndex, iMovie->VideoClipCutInTime( iIndex ).Int64(), iMovie->VideoClipCutOutTime( iIndex ).Int64());
+
+ StartNaviPaneUpdateL();
+ iContainer->PlayMarkedL( iMovie->VideoClipInfo( iIndex )->FileName(),
+ iMovie->VideoClipCutInTime( iIndex ), iMovie->VideoClipCutOutTime( iIndex ) );
+
+ LOG(KVideoEditorLogFile, "CVeiCutVideoView::PlayMarkedL: Out");
+ }
+
+void CVeiCutVideoView::ClearInOutL( TBool aClearIn, TBool aClearOut )
+ {
+ if ( aClearIn )
+ {
+ iMovie->VideoClipSetCutInTime( iIndex, TTimeIntervalMicroSeconds( 0 ) );
+ iContainer->SetInTime( iMovie->VideoClipCutInTime( iIndex ) );
+ }
+ if ( aClearOut )
+ {
+ iMovie->VideoClipSetCutOutTime( iIndex, iMovie->VideoClipInfo( iIndex )->Duration() );
+ iContainer->SetOutTime( iMovie->VideoClipInfo( iIndex )->Duration() );
+ }
+ TTimeIntervalMicroSeconds cutin = iMovie->VideoClipCutInTime( iIndex );
+ TTimeIntervalMicroSeconds cutout = iMovie->VideoClipCutOutTime( iIndex );
+
+ if ( ( cutin == TTimeIntervalMicroSeconds( 0 ) ) &&
+ ( cutout == iMovie->VideoClipInfo(iIndex)->Duration() ) )
+ {
+ Cba()->SetCommandSetL(R_AVKON_SOFTKEYS_OPTIONS_BACK);
+ Cba()->DrawDeferred();
+ }
+ }
+
+void CVeiCutVideoView::MarkInL()
+ {
+ LOG(KVideoEditorLogFile, "CVeiCutVideoView::MarkInL, In");
+ TTimeIntervalMicroSeconds pos = iContainer->PlaybackPositionL();
+
+// TTimeIntervalMicroSeconds clipDuration = iMovie->VideoClipInfo( iIndex )->Duration();
+// CVedVideoClipInfo* info = iMovie->VideoClipInfo( iIndex );
+// TTimeIntervalMicroSeconds intraPos = info->VideoFrameStartTimeL(
+// info->GetVideoFrameIndexL( pos ) );
+
+ if (iMovie->VideoClipCutOutTime(iIndex) > pos)
+ {
+ StopNaviPaneUpdateL();
+ LOGFMT2(KVideoEditorLogFile, "CVeiCutVideoView::MarkInL, 2, iIndex:%d, pos:%Ld", iIndex, pos.Int64());
+ iMovie->VideoClipSetCutInTime( iIndex, pos );
+ iContainer->MarkedInL();
+ }
+
+ LOG(KVideoEditorLogFile, "CVeiCutVideoView::MarkInL, Out");
+ }
+
+void CVeiCutVideoView::MarkOutL()
+ {
+ LOG(KVideoEditorLogFile, "CVeiCutVideoView::MarkOutL, In");
+ TTimeIntervalMicroSeconds pos = iContainer->PlaybackPositionL();
+// CVedVideoClipInfo* info = iMovie->VideoClipInfo( iIndex );
+// TTimeIntervalMicroSeconds intraPos = info->VideoFrameStartTimeL(
+// info->GetVideoFrameIndexL( pos ) );
+
+ if (iMovie->VideoClipCutInTime(iIndex) < pos)
+ {
+ StopNaviPaneUpdateL();
+ iMovie->VideoClipSetCutOutTime( iIndex, pos );
+ LOGFMT2(KVideoEditorLogFile, "CVeiCutVideoView::MarkOutL, 2, iIndex:%d, pos:%Ld", iIndex, pos.Int64() );
+ iContainer->MarkedOutL();
+ }
+ LOG(KVideoEditorLogFile, "CVeiCutVideoView::MarkOutL, Out");
+ }
+
+void CVeiCutVideoView::MoveStartOrEndMarkL( TTimeIntervalMicroSeconds aPosition, CVeiCutVideoContainer::TCutMark aMarkType )
+ {
+ LOG( KVideoEditorLogFile, "CVeiCutVideoView::MoveStartOrEndMarkL, In" );
+
+ StopNaviPaneUpdateL();
+
+ LOG( KVideoEditorLogFile, "CVeiCutVideoView::MoveStartOrEndMarkL, 2" );
+
+ if ( aMarkType == CVeiCutVideoContainer::EStartMark )
+ {
+ iMovie->VideoClipSetCutInTime( iIndex, aPosition );
+ }
+ else if ( aMarkType == CVeiCutVideoContainer::EEndMark )
+ {
+ iMovie->VideoClipSetCutOutTime( iIndex, aPosition );
+ }
+ LOG( KVideoEditorLogFile, "CVeiCutVideoView::MoveStartOrEndMarkL, Out" );
+ }
+
+
+TUint CVeiCutVideoView::InPointTime()
+ {
+ if ( !iMovie )
+ {
+ return 0;
+ }
+ else
+ {
+ return static_cast<TInt32>((iMovie->VideoClipCutInTime(iIndex).Int64() / 1000));
+ }
+ }
+
+TUint CVeiCutVideoView::OutPointTime()
+ {
+ if ( !iMovie )
+ {
+ return 0;
+ }
+ else
+ {
+ return static_cast<TInt32>(iMovie->VideoClipCutOutTime(iIndex).Int64() / 1000);
+ }
+ }
+
+CAknNavigationDecorator* CVeiCutVideoView::CreateTimeLabelNaviL()
+ {
+ LOG(KVideoEditorLogFile, "CVeiCutVideoView::CreateTimeLabelNaviL: in");
+ CVeiTimeLabelNavi* timelabelnavi = CVeiTimeLabelNavi::NewLC();
+ CAknNavigationDecorator* decoratedFolder =
+ CAknNavigationDecorator::NewL(iNaviPane, timelabelnavi, CAknNavigationDecorator::ENotSpecified);
+ CleanupStack::Pop(timelabelnavi);
+
+ CleanupStack::PushL(decoratedFolder);
+ decoratedFolder->SetContainerWindowL(*iNaviPane);
+ CleanupStack::Pop(decoratedFolder);
+ decoratedFolder->MakeScrollButtonVisible(EFalse);
+ LOG(KVideoEditorLogFile, "CVeiCutVideoView::CreateTimeLabelNaviL: out");
+ return decoratedFolder;
+ }
+
+TInt CVeiCutVideoView::UpdateTimeCallbackL(TAny* aPtr)
+ {
+ CVeiCutVideoView* view = (CVeiCutVideoView*)aPtr;
+
+ view->UpdateTimeL();
+
+ return 1;
+ }
+
+
+void CVeiCutVideoView::UpdateTimeL()
+ {
+ DrawTimeNaviL();
+
+ if (iMarkState == EMarkStateIn)
+ {
+ if (iContainer->PlaybackPositionL() > iMovie->VideoClipCutInTime( iIndex ))
+ {
+ UpdateCBAL(iContainer->State());
+ }
+ }
+ else if (iMarkState == EMarkStateOut)
+ {
+ if (iContainer->PlaybackPositionL() < iMovie->VideoClipCutOutTime( iIndex ))
+ {
+ UpdateCBAL(iContainer->State());
+ }
+ }
+ else
+ {
+ if ((iContainer->PlaybackPositionL() < iMovie->VideoClipCutInTime( iIndex )) ||
+ (iContainer->PlaybackPositionL() > iMovie->VideoClipCutOutTime( iIndex )))
+ {
+ UpdateCBAL(iContainer->State());
+ }
+ }
+ }
+
+void CVeiCutVideoView::DrawTimeNaviL()
+ {
+ TTime elapsed( iContainer->PlaybackPositionL().Int64() );
+ TTime total( iContainer->TotalLength().Int64() );
+
+ TBuf<16> elapsedBuf;
+ TBuf<16> totalBuf;
+
+ HBufC* dateFormatString;
+ HBufC* stringholder;
+
+ if ( ( total.Int64() / 1000 ) < 3600000 ) // check if time is over 99:59
+ {
+ dateFormatString = iEikonEnv->AllocReadResourceLC( R_QTN_TIME_DURAT_MIN_SEC );
+
+ elapsed.FormatL(elapsedBuf, *dateFormatString);
+ total.FormatL(totalBuf, *dateFormatString);
+ CleanupStack::PopAndDestroy(dateFormatString);
+
+ CDesCArrayFlat* strings = new (ELeave) CDesCArrayFlat(2);
+ CleanupStack::PushL(strings);
+ strings->AppendL(elapsedBuf);
+ strings->AppendL(totalBuf);
+ stringholder = StringLoader::LoadL(R_VEI_NAVI_TIME, *strings, iEikonEnv);
+ CleanupStack::PopAndDestroy(strings);
+
+
+ CleanupStack::PushL(stringholder);
+
+ STATIC_CAST(CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())->SetLabelL(stringholder->Des());
+
+ CleanupStack::PopAndDestroy(stringholder);
+ }
+ else
+ {
+ TBuf<25> layoutTime;
+ TBuf<15> minsec;
+ TTimeIntervalMinutes minutes;
+ TTimeIntervalMicroSeconds32 seconds;
+
+ TInt64 duration = ( iContainer->PlaybackPositionL().Int64() / 1000 );
+ TChar timeSeparator = TLocale().TimeSeparator(2);
+ //over 1 minute
+ if( duration >= 60000 )
+ {
+ minutes = TTimeIntervalMinutes(static_cast<TInt32>( duration) / 60000 );
+ minsec.AppendNum( minutes.Int() );
+ minsec.Append( timeSeparator );
+
+ duration = duration - minutes.Int() * 60000;
+ }
+ else
+ {
+ minsec.Append( _L( "00" ) );
+ minsec.Append( timeSeparator );
+ }
+ if( duration >= 1000 )
+ {
+ seconds = TTimeIntervalMicroSeconds32( static_cast<TInt32>(duration) / 1000 );
+
+ if( seconds.Int() >= 60 )
+ {
+ minsec.AppendNum( seconds.Int() - 60 );
+ }
+ else
+ {
+ if ( seconds.Int() < 10 )
+ {
+ minsec.Append( _L("0") );
+ }
+ minsec.AppendNum( seconds.Int() );
+ }
+ }
+ else
+ {
+ minsec.Append( _L("00") );
+ }
+ layoutTime.Append( minsec );
+ AknTextUtils::DisplayTextLanguageSpecificNumberConversion( layoutTime );
+
+ STATIC_CAST(CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())->SetLabelL(layoutTime);
+ }
+
+
+ /* Prevent the screen light dimming. */
+ if (elapsed.DateTime().Second() == 0 || elapsed.DateTime().Second() == 15 || elapsed.DateTime().Second() == 30 || elapsed.DateTime().Second() == 45)
+ {
+ User::ResetInactivityTime();
+ }
+ }
+
+
+void CVeiCutVideoView::StartNaviPaneUpdateL()
+ {
+ DrawTimeNaviL();
+ if (iTimeUpdater && !iTimeUpdater->IsActive())
+ {
+ iTimeUpdater->Start(200000, 1000000/10, TCallBack(CVeiCutVideoView::UpdateTimeCallbackL, this));
+ }
+ }
+
+void CVeiCutVideoView::StopNaviPaneUpdateL()
+ {
+ if (iContainer)
+ {
+ DrawTimeNaviL();
+ }
+ if (iTimeUpdater && iTimeUpdater->IsActive())
+ {
+ iTimeUpdater->Cancel();
+ }
+ }
+
+TInt CVeiCutVideoView::HideVolumeCallbackL(TAny* aPtr)
+ {
+ CVeiCutVideoView* view = (CVeiCutVideoView*)aPtr;
+ view->HideVolume();
+ return 0;
+ }
+
+void CVeiCutVideoView::HideVolume()
+ {
+ iNaviPane->Pop(iVolumeNavi);
+ }
+
+void CVeiCutVideoView::VolumeMuteL()
+ {
+ iContainer->MuteL();
+ }
+
+
+
+void CVeiCutVideoView::ShowVolumeLabelL( TInt aVolume )
+ {
+ STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())->
+ SetVolumeIconVisibilityL( ETrue );
+
+ if (iVolumeHider->IsActive())
+ {
+ iVolumeHider->Cancel();
+ }
+ if (aVolume == 0)
+ {
+ STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())->
+ SetVolumeIconVisibilityL( EFalse );
+ HideVolume();
+ return;
+ }
+
+ iNaviPane->PushL(*iVolumeNavi);
+ iVolumeHider->Start(1000000, 1000000, TCallBack(CVeiCutVideoView::HideVolumeCallbackL, this));
+
+ STATIC_CAST(CAknVolumeControl*, iVolumeNavi->DecoratedControl())->SetValue(aVolume);
+
+ if (aVolume > iContainer->MinVolume() + 1 )
+ {
+ STATIC_CAST(CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())->SetLeftArrowVisibilityL(ETrue);
+ }
+ else
+ {
+ STATIC_CAST(CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())->SetLeftArrowVisibilityL(EFalse);
+ }
+
+ if (aVolume < iContainer->MaxVolume())
+ {
+ STATIC_CAST(CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())->SetRightArrowVisibilityL(ETrue);
+ }
+ else
+ {
+ STATIC_CAST(CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())->SetRightArrowVisibilityL(EFalse);
+ }
+
+ }
+
+void CVeiCutVideoView::HandleForegroundEventL ( TBool aForeground )
+ {
+ if ( !aForeground )
+ {
+ // If the application is closing down, calling PauseL could result in
+ // a callback from the MMF player after the container is already deleted,
+ // causing KERN-EXEC 3
+ if ( static_cast<CVeiAppUi*>( AppUi() )->AppIsOnTheWayToDestruction() )
+ {
+ iContainer->PrepareForTerminationL();
+ }
+ else
+ {
+ iContainer->PauseL( EFalse );
+ }
+ iNaviPane->Pop( iTimeNavi );
+ }
+ else
+ {
+ UpdateCBAL( iContainer->State() );
+ iNaviPane->PushL( *iTimeNavi );
+ }
+ }
+
+// ---------------------------------------------------------
+// CVeiCutVideoView::HandleStatusPaneSizeChange()
+// ---------------------------------------------------------
+//
+void CVeiCutVideoView::HandleStatusPaneSizeChange()
+ {
+ if ( iContainer )
+ {
+ iContainer->SetRect( AppUi()->ClientRect() );
+ }
+ }
+
+TBool CVeiCutVideoView::IsEnoughFreeSpaceToSaveL()// const
+ {
+
+ STATIC_CAST( CVeiAppUi*, AppUi() )->ReadSettingsL( iMovieSaveSettings );
+ iMemoryInUse = iMovieSaveSettings.MemoryInUse();
+
+ RFs& fs = iEikonEnv->FsSession();
+ TBool spaceBelowCriticalLevel( EFalse );
+
+ /* seek position of clip */
+ TTimeIntervalMicroSeconds frame;
+ frame = iContainer->PlaybackPositionL();
+
+ /* frame index of position */
+ TInt frameIndex;
+ frameIndex = iMovie->VideoClipInfo( iIndex )->GetVideoFrameIndexL( frame );
+
+ /* frame size */
+ TInt sizeEstimate;
+ sizeEstimate = iMovie->VideoClipInfo( iIndex )->VideoFrameSizeL( frameIndex );
+
+ if ( iMemoryInUse == CAknMemorySelectionDialog::EPhoneMemory )
+ {
+ spaceBelowCriticalLevel = SysUtil::DiskSpaceBelowCriticalLevelL( &fs, sizeEstimate, EDriveC );
+ }
+ else
+ {
+ spaceBelowCriticalLevel = SysUtil::MMCSpaceBelowCriticalLevelL( &fs, sizeEstimate );
+ }
+
+
+ if ( !spaceBelowCriticalLevel )
+ {
+ return ETrue;
+ }
+ else
+ {
+ HBufC* stringholder;
+ stringholder = StringLoader::LoadLC( R_VEI_MEMORY_RUNNING_OUT, iEikonEnv );
+ CAknErrorNote* dlg = new ( ELeave ) CAknErrorNote( ETrue );
+ dlg->ExecuteLD( *stringholder );
+ CleanupStack::PopAndDestroy( stringholder );
+
+ return EFalse;
+ }
+ }
+
+TTimeIntervalMicroSeconds CVeiCutVideoView::GetVideoClipCutInTime()
+ {
+ TTimeIntervalMicroSeconds cutInTime(0);
+ if ( iMovie )
+ {
+ cutInTime = iMovie->VideoClipCutInTime( iIndex );
+ }
+ return cutInTime;
+ }
+
+TTimeIntervalMicroSeconds CVeiCutVideoView::GetVideoClipCutOutTime()
+ {
+ TTimeIntervalMicroSeconds cutOutTime(0);
+ if ( iMovie )
+ {
+ cutOutTime = iMovie->VideoClipCutOutTime( iIndex );
+ }
+ return cutOutTime;
+ }
+
+void CVeiCutVideoView::HandleResourceChange(TInt aType)
+ {
+ LOGFMT(KVideoEditorLogFile, "CVeiEditVideoView::HandleResourceChange() In, aType:%d", aType);
+
+ if (KAknsMessageSkinChange == aType)
+ {
+ // Handle skin change in the navi label controls - they do not receive
+ // it automatically since they are not in the control stack
+ iTimeNavi->DecoratedControl()->HandleResourceChange( aType );
+ iVolumeNavi->DecoratedControl()->HandleResourceChange( aType );
+ }
+
+ LOG(KVideoEditorLogFile, "CVeiEditVideoView::HandleResourceChange() Out");
+ }
+
+// End of File
+