videditor/ManualVideoEditor/src/VeiEditVideoView.cpp
changeset 0 951a5db380a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videditor/ManualVideoEditor/src/VeiEditVideoView.cpp	Fri Jan 29 14:08:33 2010 +0200
@@ -0,0 +1,5569 @@
+/*
+* 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 <aknappui.h>
+#include <akntitle.h> 
+#include <caknfilenamepromptdialog.h> 
+#include <aknnotewrappers.h> 
+#include <aknlists.h> 
+#include <aknquerydialog.h> 
+#include <pathinfo.h> 
+#include <eikmenub.h> 
+
+#include <sendui.h> 
+#include <caknfileselectiondialog.h>
+#include <stringloader.h> 
+#include <eikprogi.h>
+#include <mgfetch.h> 
+#include <aknnavilabel.h> 
+#include <aknnavide.h> 
+#include <aknselectionlist.h> 
+#include <MdaAudioSampleEditor.h> 
+#include <bautils.h>
+#include <sysutil.h>
+#include <aknwaitdialog.h>
+#include <utf.h>
+#include <akncolourselectiongrid.h>
+//#include <akncontext.h>
+#include <MGXFileManagerFactory.h>
+#include <CMGXFileManager.h>
+#include <audiopreference.h>
+#include <senduiconsts.h>
+#include <mmsconst.h>
+#include <CMessagedata.h>
+#include <e32property.h>
+#include <e32math.h> 
+
+#include <VedVideoClipInfo.h>
+
+// User includes 
+#include "veiapp.h"
+#include "veicutaudioview.h"
+#include "VeiEditVideoView.h"
+#include "VeiEditVideoContainer.h" 
+#include "manualvideoeditor.hrh"
+#include "veieditvideolabelnavi.h"
+#include "veicutvideoview.h"
+#include "veiappui.h"
+#include "VideoEditorCommon.h"
+#include "VideoEditorUtils.h"
+#include "VeiTimeLabelNavi.h"
+#include "veiaddqueue.h"
+#include "veitempmaker.h"
+#include "videoeditorcommon.h"
+#include "VeiImageClipGenerator.h"
+#include "VeiTitleClipGenerator.h"
+#include "VeiTextDisplay.h"
+#include "VeiPopup.h"
+#include "VeiVideoEditorSettings.h"
+#include "VeiMGFetchVerifier.h"
+#include "VeiErrorUi.h"
+
+
+const TInt KTitleScreenMaxTextLength = 100; //2048;
+
+
+void CleanupRestoreOrientation( TAny* object )
+    {
+    LOG( KVideoEditorLogFile, "CleanupRestoreOrientation: in" );
+
+    CVeiEditVideoView* me = static_cast < CVeiEditVideoView*  > ( object );
+    me->RestoreOrientation();
+
+    LOG( KVideoEditorLogFile, "CleanupRestoreOrientation: Out" );
+    }
+
+CVeiEditVideoView* CVeiEditVideoView::NewL( CVeiCutVideoView& aCutView,
+                                            CVeiCutAudioView& aCutAudioView, 
+                                            CSendUi& aSendAppUi )
+    {
+    CVeiEditVideoView* self = CVeiEditVideoView::NewLC( aCutView, aCutAudioView, aSendAppUi );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+CVeiEditVideoView* CVeiEditVideoView::NewLC( CVeiCutVideoView& aCutView,
+                                             CVeiCutAudioView& aCutAudioView, 
+                                             CSendUi& aSendAppUi )
+    {
+    CVeiEditVideoView* self = new ( ELeave ) CVeiEditVideoView( aCutView, aCutAudioView, aSendAppUi );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+CVeiEditVideoView::CVeiEditVideoView( CVeiCutVideoView& aCutView, 
+                                      CVeiCutAudioView& aCutAudioView, 
+                                      CSendUi& aSendAppUi )
+    : iCutView( aCutView ), 
+      iCutAudioView( aCutAudioView ), 
+      iSendAppUi( aSendAppUi ), 
+      iOriginalAudioStartPoint( -1 ), 
+      iOriginalAudioDuration( -1 ), 
+      iMemoryCardChecked(EFalse),
+      iOriginalOrientation( CAknAppUiBase::EAppUiOrientationAutomatic )
+    {
+    iOriginalVideoClipIndex =  - 1;
+    iMovieSavedFlag = ETrue;
+    SetNewTempFileNeeded( EFalse );
+    iMovieFirstAddFlag = ETrue;
+    iWaitMode = ENotWaiting;
+    }
+
+void CVeiEditVideoView::ConstructL()
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::ConstructL: in" );
+
+    BaseConstructL( R_VEI_EDIT_VIDEO_VIEW );
+
+    CEikStatusPane* sp = StatusPane();
+    iNaviPane = ( CAknNavigationControlContainer* ) sp->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) );
+
+    /** General navilabel(mms state, movie size, movie time). 
+    Is visible always except when in moving state */
+    iEditLabel = CreateEditNaviLabelL();
+
+
+    /** Navilabel when previewing video in small preview */
+    iPreviewLabel = CreatePreviewNaviLabelL();
+
+    /** Navipane updating timer when editor is on small preview - mode */
+    iPreviewUpdatePeriodic = CPeriodic::NewL( CActive::EPriorityLow );
+
+    /* volume bars are showed when volume is changed in small preview */
+    //	iVolumeHider = CPeriodic::NewL( CActive::EPriorityLow );
+
+    iVolumeNavi = iNaviPane->CreateVolumeIndicatorL(
+        R_AVKON_NAVI_PANE_VOLUME_INDICATOR );
+
+    /** Navilabel when audio or video clip is in moving state */
+    iMoveLabel = CreateMoveNaviLabelL();
+
+    iTempMaker = CVeiTempMaker::NewL();
+
+    iErrorUI = CVeiErrorUI::NewL( *iCoeEnv );
+
+    iMovie = CVedMovie::NewL( NULL );
+    iMovie->RegisterMovieObserverL( this );
+
+    /** All media files are added to video/audio tracks through mediaqueue */
+    iMediaQueue = CVeiAddQueue::NewL( *this, * iMovie, * this );
+
+    iOriginalAudioDuration = TTimeIntervalMicroSeconds(  - 1 );
+    /* Create recorder with max priority. */
+    iRecorder = CMdaAudioRecorderUtility::NewL( *this, NULL, EMdaPriorityMax,
+                       TMdaPriorityPreference( KAudioPrefVideoRecording )
+                       /*EMdaPriorityPreferenceQuality*/ );
+    iAudioRecordPeriodic = CPeriodic::NewL( CActive::EPriorityStandard );
+
+    /** Popup menus for video editor */
+    iPopup = CVeiPopup::NewL( *this );
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::ConstructL: out" );
+    }
+
+TUid CVeiEditVideoView::Id()const
+    {
+    return TUid::Uid( EVeiEditVideoView );
+    }
+
+CAknNavigationDecorator* CVeiEditVideoView::CreateMoveNaviLabelL()
+    {
+    CAknNaviLabel* movelabel = new( ELeave )CAknNaviLabel;
+    movelabel->SetNaviLabelType( CAknNaviLabel::ENavigationLabel );
+
+    CleanupStack::PushL( movelabel );
+
+    CAknNavigationDecorator* decoratedFolder = CAknNavigationDecorator::NewL(
+        iNaviPane, movelabel, CAknNavigationDecorator::ENotSpecified );
+
+    CleanupStack::Pop( movelabel );
+
+    CleanupStack::PushL( decoratedFolder );
+    decoratedFolder->SetContainerWindowL( *iNaviPane );
+    CleanupStack::Pop( decoratedFolder );
+    decoratedFolder->MakeScrollButtonVisible( ETrue );
+
+    return decoratedFolder;
+    }
+
+CAknNavigationDecorator* CVeiEditVideoView::CreatePreviewNaviLabelL()
+    {
+    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 );
+
+    return decoratedFolder;
+    }
+
+/**
+ * Default navilabel. Shows MMS,Size and Time information. 
+ */
+CAknNavigationDecorator* CVeiEditVideoView::CreateEditNaviLabelL()
+    {
+    CVeiEditVideoLabelNavi* editvideolabelnavi = CVeiEditVideoLabelNavi::NewLC();
+
+    editvideolabelnavi->SetState( CVeiEditVideoLabelNavi::EStateInitializing );
+
+    CAknNavigationDecorator* navidecorator = CAknNavigationDecorator::NewL(
+        iNaviPane, editvideolabelnavi, CAknNavigationDecorator::ENotSpecified );
+
+    CleanupStack::Pop( editvideolabelnavi );
+
+    CleanupStack::PushL( navidecorator );
+    navidecorator->SetContainerWindowL( *iNaviPane );
+    CleanupStack::Pop( navidecorator );
+    navidecorator->MakeScrollButtonVisible( EFalse );
+
+    return navidecorator;
+    }
+
+CVeiEditVideoView::~CVeiEditVideoView()
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: In" );
+
+    if ( iProgressNote )
+        {
+        delete iProgressNote;
+        iProgressNote = NULL;
+        }
+
+    if ( iPopup )
+        {
+        delete iPopup;
+        iPopup = NULL;
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iContainer" );
+    if ( iContainer )
+        {
+        AppUi()->RemoveFromStack( iContainer );
+        delete iContainer;
+        iContainer = NULL;
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iMediaQueue" );
+    if ( iMediaQueue )
+        {
+        delete iMediaQueue;
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iMovie" );
+    if ( iMovie )
+        {
+        iMovie->Reset();
+        //if application is closed from cut video view, observer is not
+        //registered.
+        if ( ( EProcessingMovieForCutting != iWaitMode ) &&
+            ( ECuttingAudio != iWaitMode ) )
+            {
+            iMovie->UnregisterMovieObserver( this );
+            }
+        delete iMovie;
+        iMovie = NULL;
+        }
+
+    if ( iAudioRecordPeriodic )
+        {
+        iAudioRecordPeriodic->Cancel();
+        delete iAudioRecordPeriodic;
+        }
+
+    if ( iPreviewUpdatePeriodic )
+        {
+        iPreviewUpdatePeriodic->Cancel();
+        delete iPreviewUpdatePeriodic;
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iTempFile" );
+    if ( iTempFile )
+        {
+        TInt err = iEikonEnv->FsSession().Delete( *iTempFile );
+        if ( err )
+            {
+            // what to do when error occurs in destructor???
+            }
+        delete iTempFile;
+        iTempFile = NULL;
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iSaveToFileName" );
+        
+    if ( iSaveToFileName )
+        {
+        delete iSaveToFileName;
+        iSaveToFileName = NULL;
+        }
+
+    if ( iTempRecordedAudio )
+        {
+        TInt err = iEikonEnv->FsSession().Delete( *iTempRecordedAudio );
+        if ( err )
+            {
+            // what to do when error occurs in destructor???
+            }
+        delete iTempRecordedAudio;
+        iTempRecordedAudio = NULL;
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iTempMaker" );
+        
+    if ( iTempMaker )
+        {
+        delete iTempMaker;
+        iTempMaker = NULL;
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iErrorUI" );
+    if ( iErrorUI )
+        {
+        delete iErrorUI;
+        iErrorUI = NULL;
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iAudioClipInfo" );
+    delete iAudioClipInfo;
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iEditLabel" );
+    delete iEditLabel;
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iMoveLabel" );
+    delete iMoveLabel;
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iPreviewLabel" );
+    delete iPreviewLabel;
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iRecorder" );
+    if ( iRecorder )
+        {
+        delete iRecorder;
+        iRecorder = NULL;
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iVolumeHider" );
+    if ( iVolumeHider )
+        {
+        iVolumeHider->Cancel();
+        delete iVolumeHider;
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iVolumeNavi" );
+    delete iVolumeNavi;
+
+    delete iCallBack;
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: Out" );
+    }
+
+void CVeiEditVideoView::DialogDismissedL( TInt aButtonId )
+    {
+    LOGFMT2( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: In, aButtonId:%d, iWaitMode:%d", aButtonId, iWaitMode );
+
+    IsEnoughFreeSpaceToSaveL();
+
+    if ( aButtonId != EAknSoftkeyDone )
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: In, 2" );
+        CMdaAudioRecorderUtility::TState rState;
+        rState = CMdaAudioClipUtility::ENotReady;
+
+        if ( iRecorder )
+            {
+            rState = iRecorder->State();
+            }
+
+        if (( EOpeningAudioInfo == iWaitMode ) || ( CMdaAudioClipUtility::EOpen == rState ))
+            {
+            delete iAudioClipInfo;
+            iAudioClipInfo = NULL;
+            iWaitMode = EProcessingError;
+            iMovie->CancelProcessing();
+            }
+        else
+            {
+            iWaitMode = EProcessingError;
+            iMovie->CancelProcessing();
+            }
+        }
+    else if ( EProcessingMovieSend == iWaitMode )
+        {
+        //SendMovieL();
+        if ( !iCallBack )
+            {
+            TCallBack cb( CVeiEditVideoView::AsyncBackSend, this );
+            iCallBack = new ( ELeave ) CAsyncCallBack( cb, CActive::EPriorityStandard );
+            }
+        iCallBack->CallBack();
+        }
+    else if ( EProcessingMovieTrimMms == iWaitMode )
+        {
+        SetNewTempFileNeeded( EFalse );
+
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 3, EProcessingMovieTrimMms" );
+
+        RFs& fs = iEikonEnv->FsSession();
+        TEntry entry;
+        User::LeaveIfError( fs.Entry( *iTempFile, entry ));
+        TInt tempFileSize = entry.iSize / 1024;
+        TInt maxMmsSize = STATIC_CAST( CVeiEditVideoLabelNavi*, iEditLabel->DecoratedControl() )->GetMaxMmsSize();
+
+        LOGFMT2( KVideoEditorLogFile, 
+                "CVeiEditVideoView::DialogDismissedL: 4, tempFileSize:%d, maxMmsSize:%d", tempFileSize, maxMmsSize );
+
+        if ( iMovie->IsMovieMMSCompatible())
+            {
+            if ( tempFileSize <= maxMmsSize )
+                {
+                LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 5, MMS SIZE OK -- SEND" );
+                iWaitMode = EProcessingMovieSend;
+                iGivenSendCommand = KSenduiMtmMmsUid; // MMS
+
+                //SendMovieL();
+                if ( !iCallBack )
+                    {
+                    TCallBack cb( CVeiEditVideoView::AsyncBackSend, this );
+                    iCallBack = new( ELeave )CAsyncCallBack( cb, CActive::EPriorityStandard );
+                    }
+                iCallBack->CallBack();
+                }
+            else
+                {
+                LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 6, MMS SIZE FAILED - to TRIMM" );
+                TBuf8 < 255 > conv8Filename;
+                CnvUtfConverter::ConvertFromUnicodeToUtf8( conv8Filename, *iTempFile );
+                iMovie->UnregisterMovieObserver( iContainer );
+                iMovie->UnregisterMovieObserver( this );
+
+                AppUi()->ActivateLocalViewL( TUid::Uid( EVeiTrimForMmsView ), TUid::Uid(0), conv8Filename );
+                }
+            }
+        else
+            {
+            // if movie is not mms capable, trimming it does not help, instead its quality should be set
+            // trimming is made when other compatibility issues are fullfilled 
+            LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 7, MMS Compatible FAILED - to TRIMM" );
+            TBuf8 < KMaxFileName > conv8Filename;
+            CnvUtfConverter::ConvertFromUnicodeToUtf8( conv8Filename, *iTempFile );
+                
+            iMovie->UnregisterMovieObserver( iContainer );
+            iMovie->UnregisterMovieObserver( this );
+
+            AppUi()->ActivateLocalViewL( TUid::Uid( EVeiTrimForMmsView ), TUid::Uid( 0 ), conv8Filename );
+            }
+        iMovie->SetQuality( iBackupSaveQuality );
+        return ;
+        }
+    else if (( EProcessingMovieSave == iWaitMode ) ||
+             ( EProcessingMovieSaveThenQuit == iWaitMode ))
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 8, EProcessingMovieSave|EProcessingMovieSaveThenQuit" );
+        RFs& fs = iEikonEnv->FsSession();
+
+        CFileMan* fileman = CFileMan::NewL( fs );
+        CleanupStack::PushL( fileman );
+
+        TInt moveErr( KErrNone );
+
+        if ( iTempFile->Left( 1 ) == iSaveToFileName->Left( 1 ))
+            {
+            moveErr = fileman->Rename( *iTempFile, * iSaveToFileName );
+            LOGFMT2( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 9, rename %S to %S", iTempFile, iSaveToFileName );
+            }
+        else
+            {
+            moveErr = fileman->Move( *iTempFile, * iSaveToFileName );
+            LOGFMT2( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 10, moved %S to %S", iTempFile, iSaveToFileName );
+            }
+        CleanupStack::PopAndDestroy( fileman );
+
+        delete iTempFile;
+        iTempFile = NULL;
+
+        if ( moveErr )
+            {
+            ShowGlobalErrorNote( moveErr );
+            UpdateEditNaviLabel();
+            iWaitMode = ENotWaiting;
+            return ;
+            }
+
+        iMovieSavedFlag = ETrue;
+
+        if ( EProcessingMovieSaveThenQuit == iWaitMode )
+            {
+            iMovie->Reset();
+            iMovieFirstAddFlag = ETrue; // True for the next edit process.						
+            }
+
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 11" );
+        UpdateMediaGalleryL();
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 12, media gallery updated" );
+
+        if ( EProcessingMovieSaveThenQuit == iWaitMode )
+            {
+            if ( !iCallBack )
+                {
+                TCallBack cb( CVeiEditVideoView::AsyncBackSaveThenExitL, this );
+                iCallBack = new( ELeave )CAsyncCallBack( cb, CActive::EPriorityStandard );
+                                
+                }
+            iCallBack->CallBack();
+            }
+
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL Out" );
+        return ;
+        }
+    else if ( EProcessingMoviePreview == iWaitMode && ( iTempFile != NULL ))
+        {
+        iContainer->SetSelectionMode( CVeiEditVideoContainer::EModePreview );
+        iContainer->PlayVideoFileL( *iTempFile, iFullScreenSelected );
+        }
+    else
+        {
+        if ( EProcessingError == iWaitMode )
+            {
+            LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 13" );
+            if ( iTempFile )
+                {
+                RFs& fs = iEikonEnv->FsSession();
+
+                fs.Delete( *iTempFile );
+                delete iTempFile;
+                iTempFile = NULL;
+                SetNewTempFileNeeded( ETrue );
+                }
+
+            iWaitMode = ENotWaiting;
+            ShowGlobalErrorNote( iErrorNmb );
+            LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 14" );
+            UpdateEditNaviLabel();
+            }
+
+        if ( EProcessingAudioError == iWaitMode )
+            {
+            LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 15" );
+            ShowErrorNote( R_VEI_ERRORNOTE_AUDIO_INSERTING_FAILED );
+            LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 16" );
+            UpdateEditNaviLabel();
+            iWaitMode = ENotWaiting;
+            }
+
+        if ( iChangedFromMMCToPhoneMemory )
+            {
+            HBufC* noteText = StringLoader::LoadLC( R_VED_MMC_NOT_INSERTED,
+                                                        iEikonEnv );
+            CAknInformationNote* informationNote = new( ELeave )
+                                                    CAknInformationNote( ETrue );
+            informationNote->ExecuteLD( *noteText );
+
+            CleanupStack::PopAndDestroy( noteText );
+            }
+        }
+    if ( EProcessingMovieSend != iWaitMode )
+        {
+        iWaitMode = ENotWaiting;
+        }
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: Out" );
+    }
+
+
+TInt CVeiEditVideoView::AsyncBackSend( TAny* aThis )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::AsyncBackSend" );
+
+    // In the asynchronous version, trap the rest of the functions 
+    // to make sure that the caller's TRequestStatus is always 
+    // completed, also in case of failures.
+    CVeiEditVideoView* view = static_cast < CVeiEditVideoView*  > ( aThis );
+    TInt err = KErrNone;
+    TRAP( err, view->SendMovieL());
+    LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::AsyncBackSend 1, err:%d", err );
+           
+    view->iWaitMode = ENotWaiting;
+    User::LeaveIfError( err );
+    return KErrNone;
+    }
+
+TInt CVeiEditVideoView::AsyncBackSaveThenExitL( TAny* aThis )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::AsyncBackSaveThenExitL In" );
+
+    // In the asynchronous version, trap the rest of the functions 
+    // to make sure that the caller's TRequestStatus is always 
+    // completed, also in case of failures.
+
+    CVeiEditVideoView* view = static_cast < CVeiEditVideoView*  > ( aThis );
+
+    view->AppUi()->HandleCommandL( EAknCmdExit );
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::AsyncBackSaveThenExitL 1" );
+    return KErrNone;
+    }
+
+void CVeiEditVideoView::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane*
+    aMenuPane )
+    {
+    if ( !iContainer || !iMovie )
+        {
+        return ;
+        }
+    if ( aResourceId == R_VEI_EDIT_VIDEO_VIEW_MENU && CVeiEditVideoContainer
+        ::EModeMixingAudio == iContainer->SelectionMode())
+        {
+        // Dim all the items and replace the with 
+        // R_VEI_EDIT_VIDEO_VIEW_AUDIO_MIXING_MENU
+        aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewInsert, ETrue );
+        aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditVideo, ETrue );
+        aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditAudio, ETrue );
+        aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditText, ETrue );
+        aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditImage, ETrue );
+        aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewMovie, ETrue );
+        aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewSettings, ETrue );
+        aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditStartTransition, ETrue );
+        aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditMiddleTransition, ETrue );
+        aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditEndTransition, ETrue );
+        aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewHelp, ETrue );
+        aMenuPane->SetItemDimmed( EEikCmdExit, ETrue );
+
+        aMenuPane->AddMenuItemsL( R_VEI_EDIT_VIDEO_VIEW_AUDIO_MIXING_MENU );
+
+        return ;
+        }
+
+    if (( aResourceId == R_VEI_EDIT_VIDEO_VIEW_EDIT_VIDEO_MENU ) || 
+        ( aResourceId == R_VEI_EDIT_VIDEO_VIEW_EDIT_VIDEO_SUBMENU ))
+        {
+        // @ : if muted, remove AdjustVolume, if video has no audio, remove AdjustVolume
+        //if (!iMovie->VideoClipEditedHasAudio(iContainer->CurrentIndex()))				
+        if ( !( iMovie->VideoClipInfo( iContainer->CurrentIndex()))->HasAudio())
+            {
+            aMenuPane->DeleteMenuItem( EVeiCmdEditVideoAdjustVolume );
+            }
+
+        if ( iMovie->VideoClipCount() < 2 )
+            {
+            aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewEditVideoMove );
+            }
+
+        if ( iMovie->VideoClipIsMuteable( iContainer->CurrentIndex()) == EFalse
+            )
+            {
+            aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewEditVideoMute );
+            aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewEditVideoUnmute );
+            }
+        else if ( iMovie->VideoClipIsMuted( iContainer->CurrentIndex()))
+            {
+            aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewEditVideoMute );
+            }
+        else
+            {
+            aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewEditVideoUnmute );
+            }
+        // remove "cut" if video duration < 1 sec. because engine/codec(s) do not handle them wholly at the moment
+        TTimeIntervalMicroSeconds duration = iMovie->VideoClipInfo( 
+                                        iContainer->CurrentIndex())->Duration();
+        if ( duration.Int64() < KMinCutVideoLength )
+            {
+            aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewEditVideoCutting );
+            }
+        }
+
+    if ( aResourceId == R_VEI_EDIT_VIDEO_VIEW_MOVIE_SUBMENU )
+        {
+        if ( STATIC_CAST( CVeiEditVideoLabelNavi* , 
+                          iEditLabel->DecoratedControl())->IsMMSAvailable())
+            {
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewTrimForMms, ETrue );
+            }
+
+        /*TInt tempint;
+        if (aMenuPane->MenuItemExists(EVeiCmdEditVideoMixAudio, tempint))
+        {
+        if ((iMovie->VideoClipCount() > 0 && 
+        (iMovie->VideoClipEditedHasAudio(0) && 
+        iMovie->VideoClipEditedHasAudio(iMovie->VideoClipCount() - 1)))
+        && iMovie->AudioClipCount() > 0)*/
+        if ( MixingConditionsOk())
+            {
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoMixAudio, EFalse );
+            }
+        else
+            {
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoMixAudio, ETrue );
+            }
+        //}	
+        }
+
+    if ( aResourceId == R_VEI_EDIT_VIDEO_VIEW_MENU )
+        {
+        if ( iSendKey )
+        //Display send menu. 
+            {
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewInsert, ETrue );
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditVideo, ETrue );
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditAudio, ETrue );
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditText, ETrue );
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditImage, ETrue );
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewMovie, ETrue );
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewSettings, ETrue );
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditStartTransition, ETrue );
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditMiddleTransition, ETrue );
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditEndTransition, ETrue );
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewHelp, ETrue );
+            aMenuPane->SetItemDimmed( EEikCmdExit, ETrue );
+
+            ShowAndHandleSendMenuCommandsL();
+
+            iSendKey = EFalse;
+            return ;
+            }
+
+        if ( iMovie->VideoClipCount() == 0 )
+            {
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditVideo, ETrue );
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditText, ETrue );
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditImage, ETrue );
+            }
+
+
+        if ( iMovie->VideoClipCount() == 0 && iMovie->AudioClipCount() == 0 )
+            {
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditStartTransition, ETrue );
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditMiddleTransition, ETrue );
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditEndTransition, ETrue );
+
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewMovie, ETrue );
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditAudio, ETrue );
+            return ;
+            }
+        else
+            {
+            TInt index = 0;
+
+            aMenuPane->ItemAndPos( EVeiCmdEditVideoViewHelp, index );
+            iSendAppUi.AddSendMenuItemL( *aMenuPane, index, EVeiCmdEditVideoViewSend );
+            }
+        /* Remove irrelevant "edit" menus. */
+
+        if ( iContainer->CursorLocation() != VideoEditor::ECursorOnClip )
+            {
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditText, ETrue );
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditVideo, ETrue );
+            }
+        /* Checks if title or image */
+        if (( iContainer->CursorLocation() == VideoEditor::ECursorOnClip ) && 
+            ( iMovie->VideoClipCount() > 0 ) && 
+            ( iMovie->VideoClipInfo( iContainer->CurrentIndex())->Class() 
+                                                == EVedVideoClipClassGenerated
+            ))
+            {
+            /* Now refine the menu dimming to specific generators. */
+            TUid generatorUid = iMovie->VideoClipInfo( 
+                                iContainer->CurrentIndex())->Generator()->Uid();
+
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditVideo, ETrue );
+            if ( generatorUid == KUidImageClipGenerator )
+                {
+                aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditText, ETrue );
+                }
+            else
+                {
+                aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditImage, ETrue )
+                    ;
+                }
+            }
+        else
+            {
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditImage, ETrue );
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditText, ETrue );
+            }
+
+
+        if ( iContainer->CurrentClipIsFile())
+            {
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditText, ETrue );
+            }
+        else
+            {
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditVideo, ETrue );
+            }
+
+        if ( iContainer->CursorLocation() != VideoEditor::ECursorOnTransition )
+            {
+            aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewEditStartTransition )
+                                      ;
+            aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewEditEndTransition );
+            aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewEditMiddleTransition
+                                      );
+            }
+        if (( iContainer->CursorLocation() != VideoEditor::ECursorOnAudio ) || 
+            ( iMovie->AudioClipCount() == 0 ))
+            {
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditAudio, ETrue );
+            }
+
+        /* Remove irrelevant transition effect menus. */
+        if ( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio )
+            {
+            aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditText, ETrue );
+            }
+
+        if ( iContainer->CursorLocation() == VideoEditor::ECursorOnTransition )
+            {
+            if ( iContainer->CurrentIndex() == 0 )
+                {
+                aMenuPane->DeleteMenuItem(
+                    EVeiCmdEditVideoViewEditEndTransition );
+                aMenuPane->DeleteMenuItem(
+                    EVeiCmdEditVideoViewEditMiddleTransition );
+                }
+            else if ( iContainer->CurrentIndex() < iMovie->VideoClipCount())
+                {
+                aMenuPane->DeleteMenuItem(
+                    EVeiCmdEditVideoViewEditStartTransition );
+                aMenuPane->DeleteMenuItem(
+                    EVeiCmdEditVideoViewEditEndTransition );
+                }
+            else
+                {
+                aMenuPane->DeleteMenuItem(
+                    EVeiCmdEditVideoViewEditStartTransition );
+                aMenuPane->DeleteMenuItem(
+                    EVeiCmdEditVideoViewEditMiddleTransition );
+                }
+            }
+        }
+
+    if ( aResourceId == R_VEI_EDIT_VIDEO_VIEW_EDIT_START_TRANSITION_SUBMENU )
+        {
+        switch ( iMovie->StartTransitionEffect())
+            {
+            case EVedStartTransitionEffectNone:
+                aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewTransitionNone );
+                break;
+            case EVedStartTransitionEffectFadeFromBlack:
+                aMenuPane->DeleteMenuItem(
+                    EVeiCmdEditVideoViewTransitionFadeFromBlack );
+                break;
+            case EVedStartTransitionEffectFadeFromWhite:
+                aMenuPane->DeleteMenuItem(
+                    EVeiCmdEditVideoViewTransitionFadeFromWhite );
+                break;
+            default:
+                break;
+            }
+        }
+
+    if ( aResourceId == R_VEI_EDIT_VIDEO_VIEW_EDIT_END_TRANSITION_SUBMENU )
+        {
+        switch ( iMovie->EndTransitionEffect())
+            {
+            case EVedEndTransitionEffectNone:
+                aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewTransitionNone );
+                break;
+            case EVedEndTransitionEffectFadeToBlack:
+                aMenuPane->DeleteMenuItem(
+                    EVeiCmdEditVideoViewTransitionFadeToBlack );
+                break;
+            case EVedEndTransitionEffectFadeToWhite:
+                aMenuPane->DeleteMenuItem(
+                    EVeiCmdEditVideoViewTransitionFadeToWhite );
+                break;
+            default:
+                break;
+            }
+        }
+
+    if ( aResourceId == R_VEI_EDIT_VIDEO_VIEW_EDIT_MIDDLE_TRANSITION_SUBMENU )
+        {
+        TInt currentindex = iContainer->CurrentIndex() - 1;
+        switch ( iMovie->MiddleTransitionEffect( currentindex ))
+            {
+            case EVedMiddleTransitionEffectNone:
+                aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewTransitionNone );
+                break;
+            case EVedMiddleTransitionEffectDipToBlack:
+                aMenuPane->DeleteMenuItem(
+                    EVeiCmdEditVideoViewTransitionDipToBlack );
+                break;
+            case EVedMiddleTransitionEffectDipToWhite:
+                aMenuPane->DeleteMenuItem(
+                    EVeiCmdEditVideoViewTransitionDipToWhite );
+                break;
+            case EVedMiddleTransitionEffectCrossfade:
+                aMenuPane->DeleteMenuItem(
+                    EVeiCmdEditVideoViewTransitionCrossfade );
+                break;
+            case EVedMiddleTransitionEffectWipeLeftToRight:
+                aMenuPane->DeleteMenuItem(
+                    EVeiCmdEditVideoViewTransitionWipeFromLeft );
+                break;
+            case EVedMiddleTransitionEffectWipeRightToLeft:
+                aMenuPane->DeleteMenuItem(
+                    EVeiCmdEditVideoViewTransitionWipeFromRight );
+                break;
+            case EVedMiddleTransitionEffectWipeTopToBottom:
+                aMenuPane->DeleteMenuItem(
+                    EVeiCmdEditVideoViewTransitionWipeFromTop );
+                break;
+            case EVedMiddleTransitionEffectWipeBottomToTop:
+                aMenuPane->DeleteMenuItem(
+                    EVeiCmdEditVideoViewTransitionWipeFromBottom );
+                break;
+            default:
+                break;
+            }
+        }
+    }
+
+void CVeiEditVideoView::HandleCommandL( TInt aCommand )
+    {
+    LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::HandleCommandL( %d ): In", aCommand );
+
+    // At the startup HandleCommandL may get called before iContainer
+    // has been constructed.
+    if ( !iContainer )
+        {
+        LOG( KVideoEditorLogFile, "\tiContainer == NULL" );
+        AppUi()->HandleCommandL( aCommand );
+        return ;
+        }
+
+    TInt index;
+    switch ( aCommand )
+        {
+        /* Cursor is on transition and up/key key is pressed*/
+        case EVeiCmdEditVideoViewTransitionKeyUp:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionKeyUp" );
+                BrowseStartTransition( ETrue );
+                break;
+                }
+        case EVeiCmdEditVideoViewTransitionKeyDown:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionKeyDown" );
+                BrowseStartTransition( EFalse );
+                break;
+                }
+        case EVeiCmdSendMovie:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdSendMovie" );
+                if (( iMovie->VideoClipCount() == 0 ) && 
+                    ( iMovie->AudioClipCount() == 0 ))
+                    {
+                    iSendKey = EFalse;
+                    }
+                else
+                    {
+                    MenuBar()->TryDisplayMenuBarL();
+                    }
+                break;
+                }
+        case EAknSoftkeyDone:
+                {
+                LOG( KVideoEditorLogFile, "\tEAknSoftkeyDone" );
+
+                /*if (CVeiEditVideoContainer::EModeMixingAudio == iContainer->SelectionMode())
+                {
+                Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
+                Cba()->DrawDeferred();
+                iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
+                //iContainer->ArrowsControl();
+                break;	
+                }	
+                 */
+
+                if ( CVeiEditVideoContainer::EModeMixingAudio == iContainer->SelectionMode())
+                    
+                    {
+
+                    MixAudio();
+
+                    Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
+                    Cba()->DrawDeferred();
+
+                    VideoEditor::TCursorLocation cursorLocation = iContainer->CursorLocation();
+                    if (( cursorLocation == VideoEditor::ECursorOnClip ) && 
+                        ( iContainer->SelectionMode() == CVeiEditVideoContainer::EModeSlowMotion ))
+                        
+                        {
+                        iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
+                        iContainer->ArrowsControl();
+                        }
+                    else
+                        {
+                        iOriginalAudioClipIndex =  - 1;
+                        iOriginalVideoClipIndex =  - 1;
+                        iOriginalAudioStartPoint = TTimeIntervalMicroSeconds( -1 );
+                        iOriginalAudioDuration = TTimeIntervalMicroSeconds(  -1 );
+                            
+
+                        iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
+                        }
+                    SetEditorState( EEdit );
+                    UpdateEditNaviLabel();
+
+                    // Setting the cursor location resets the image in the video display box
+                    iContainer->SetCursorLocation( cursorLocation );
+                    }
+                break;
+                }
+
+        case EAknSoftkeyOk:
+                {
+                LOG( KVideoEditorLogFile, "\tEAknSoftkeyOk" );
+
+                if ( CVeiEditVideoContainer::EModeAdjustVolume == iContainer->SelectionMode())
+                    
+                    {
+                    AdjustVolumeL();
+                    SetEditorState( EEdit );
+                    }
+
+                Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
+                Cba()->DrawDeferred();
+
+                if (( iContainer->CursorLocation() == VideoEditor::ECursorOnClip ) &&
+                    ( iContainer->SelectionMode() == CVeiEditVideoContainer::EModeSlowMotion ))
+                    
+                    {
+                    iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
+                    iContainer->ArrowsControl();
+                    }
+                else
+                    {
+                    iOriginalAudioClipIndex =  - 1;
+                    iOriginalVideoClipIndex =  - 1;
+                    iOriginalAudioStartPoint = TTimeIntervalMicroSeconds(  -1 );
+                    iOriginalAudioDuration = TTimeIntervalMicroSeconds(  -1 );
+
+                    iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
+                    }
+                UpdateEditNaviLabel();
+                break;
+                }
+        case EAknSoftkeyCancel:
+        case EVeiCmdEditVideoMixAudioCancel:
+                {
+                LOG( KVideoEditorLogFile, "\tEAknSoftkeyCancel||EVeiCmdEditVideoMixAudioCancel" );
+
+                Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
+                Cba()->DrawDeferred();
+
+                SetEditorState( EEdit );
+
+                if ( CVeiEditVideoContainer::EModeMixingAudio == iContainer->SelectionMode() ||
+                     CVeiEditVideoContainer::EModeAdjustVolume == iContainer->SelectionMode())
+                    {
+                    iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
+                    // Setting the cursor location resets the image in the video display box
+                    iContainer->SetCursorLocation( iContainer->CursorLocation());
+                    break;
+                    }
+
+                if (( iContainer->CursorLocation() == VideoEditor::ECursorOnClip ) &&
+                     ( iContainer->SelectionMode() == CVeiEditVideoContainer::EModeSlowMotion ))
+                    {
+                    iMovie->VideoClipSetSpeed( iContainer->CurrentIndex(), iOriginalVideoSpeed );
+                    iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
+                        
+                    iContainer->ArrowsControl();
+                    }
+                else
+                    {
+                    if ( iContainer->CursorLocation() == VideoEditor
+                        ::ECursorOnAudio )
+                        {
+                        if ( iOriginalAudioStartPoint >= TTimeIntervalMicroSeconds( 0 ))
+                            {
+                            iMovie->AudioClipSetStartTime( iContainer->CurrentIndex(), iOriginalAudioStartPoint );
+                            iOriginalAudioStartPoint = TTimeIntervalMicroSeconds(  -1 );
+                            iMovie->AudioClipSetCutOutTime( iContainer->CurrentIndex(), iOriginalAudioDuration );
+                            iOriginalAudioDuration = TTimeIntervalMicroSeconds( -1 );
+                            }
+                        else
+                            {
+                            index = iContainer->CurrentIndex();
+
+                            iContainer->SetCurrentIndex( iOriginalAudioClipIndex );
+                            iOriginalAudioClipIndex =  - 1;
+                            iOriginalAudioDuration = TTimeIntervalMicroSeconds( -1 );
+
+                            iMovie->RemoveAudioClip( index );
+                            }
+                        }
+                    else
+                        {
+                        if ( iContainer->SelectionMode() != CVeiEditVideoContainer::EModeDuration )
+                            {
+                            iMovie->VideoClipSetIndex( iContainer->CurrentIndex(), iOriginalVideoClipIndex );
+                            iContainer->SetVideoCursorPosition( iOriginalVideoClipIndex );
+                            iOriginalVideoClipIndex =  - 1;
+                            }
+                        else
+                            {
+                            CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
+                            if ( info->Class() == EVedVideoClipClassGenerated )
+                                {
+                                if ( info->Generator()->Uid() == KUidTitleClipGenerator )
+                                    {
+                                    CVeiTitleClipGenerator* generator =
+                                                    STATIC_CAST( CVeiTitleClipGenerator* , info->Generator());
+                                    generator->SetDuration( TTimeIntervalMicroSeconds(
+                                                                iOriginalVideoCutOutTime.Int64() -
+                                                                iOriginalVideoCutInTime.Int64()));
+                                    }
+                                else if ( info->Generator()->Uid() == KUidImageClipGenerator )
+                                    {
+                                    CVeiImageClipGenerator* generator =
+                                            STATIC_CAST( CVeiImageClipGenerator* , info->Generator());
+                                    generator->SetDuration( TTimeIntervalMicroSeconds(
+                                                                iOriginalVideoCutOutTime.Int64() -
+                                                                iOriginalVideoCutInTime.Int64()));
+                                    }
+                                }
+                            }
+                        }
+                    }
+
+                if ( iContainer->SelectionMode() == CVeiEditVideoContainer
+                    ::EModePreview )
+                    {
+                    iContainer->SetBlackScreen( EFalse );
+                    iContainer->SetRect( AppUi()->ClientRect());
+                    iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
+                    iContainer->ArrowsControl();
+                    }
+                else
+                    {
+                    iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
+                    UpdateEditNaviLabel();
+                    }
+                break;
+                }
+        case EVeiCmdEditVideoViewSend:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewSend" );
+                ShowAndHandleSendMenuCommandsL();
+                break;
+                }
+
+        case EVeiCmdEditVideoViewPreviewLarge:
+        case EVeiCmdEditVideoViewPreviewSmall:
+                {
+                LOG( KVideoEditorLogFile, 
+                    "\tEVeiCmdEditVideoViewPreviewLarge||EVeiCmdEditVideoViewPreviewSmall" );
+
+                if ( CVeiEditVideoContainer::EModeMixingAudio == iContainer->SelectionMode())
+                    {
+                    MixAudio();
+                    }
+
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    if ( aCommand == EVeiCmdEditVideoViewPreviewLarge )
+                        {
+                        iFullScreenSelected = ETrue;
+                        }
+                    else
+                        {
+                        iFullScreenSelected = EFalse;
+                        }
+                    iWaitMode = EProcessingMoviePreview;
+                    StartTempFileProcessingL();
+                    }
+                break;
+                }
+
+            /**
+             * Trim for MMS
+             */
+        case EVeiCmdEditVideoViewTrimForMms:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTrimForMms" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    iWaitMode = EProcessingMovieTrimMms;
+                    StartTempFileProcessingL();
+                    }
+                break;
+                }
+            /**
+             * Cut (Audio and Video)
+             */
+        case EVeiCmdEditVideoViewEditVideoCutting:
+                {
+                LOG( KVideoEditorLogFile, 
+                    "\tEVeiCmdEditVideoViewEditVideoCutting" );
+
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    // Cut video
+                    if ( iContainer->CursorLocation() == VideoEditor::ECursorOnClip )
+                        {
+                        __ASSERT_ALWAYS( iMovie->VideoClipCount() > 0, 
+                                         User::Panic( _L( "VideoEditor" ), 34 ));
+
+                        iCutVideoIndex = iContainer->CurrentIndex();
+                        iWaitMode = EProcessingMovieForCutting;
+                        iOriginalCutInTime = iMovie->VideoClipCutInTime( iCutVideoIndex );
+                        iOriginalCutOutTime = iMovie->VideoClipCutOutTime( iCutVideoIndex );
+
+                        iMovie->UnregisterMovieObserver( iContainer );
+                        iMovie->UnregisterMovieObserver( this );
+
+                        AppUi()->DeactivateActiveViewL();
+
+                        // set file name & clip
+                        iCutView.SetVideoClipAndIndex( *iMovie, iCutVideoIndex )
+                            ;
+
+                        // activate cut  view
+                        AppUi()->ActivateLocalViewL( iCutView.Id());
+                        }
+                    else if ( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio )
+                    // Cut audio
+                        {
+                        __ASSERT_ALWAYS( iMovie->AudioClipCount() > 0, 
+                                         User::Panic( _L( "VideoEditor" ), 34 ));
+
+                        iCutAudioIndex = iContainer->CurrentIndex();
+                        iWaitMode = ECuttingAudio;
+                        iOriginalAudioCutInTime = iMovie->AudioClipCutInTime( iCutAudioIndex );
+                        iOriginalAudioCutOutTime = iMovie->AudioClipCutOutTime( iCutAudioIndex );
+
+                        iMovie->UnregisterMovieObserver( iContainer );
+                        iMovie->UnregisterMovieObserver( this );
+
+                        AppUi()->DeactivateActiveViewL();
+
+                        // set file name & clip
+                        iCutAudioView.SetVideoClipAndIndex( *iMovie, iCutAudioIndex );
+                        // activate cut  view
+                        AppUi()->ActivateLocalViewL( TUid::Uid( EVeiCutAudioView ));
+                        }
+                    }
+                break;
+                }
+            /**
+             * Selection (joystick).
+             */
+        case EVeiCmdEditVideoViewContainerShowMenu:
+                {
+                LOG( KVideoEditorLogFile, 
+                    "\tEVeiCmdEditVideoViewContainerShowMenu" );
+
+                //preview popup
+                if ( iEditorState != EEdit )
+                    {
+                    if ( iEditorState == CVeiEditVideoView::EQuickPreview )
+                        {
+                        StopNaviPaneUpdateL();
+                        iContainer->PauseVideoL();
+                        LOG( KVideoEditorLogFile, 
+                            "\tEVeiCmdEditVideoViewContainerShowMenu, setting R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK" );
+                        Cba()->SetCommandSetL( R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK
+                            );
+                        Cba()->DrawDeferred();
+                        }
+                    MenuBar()->SetMenuTitleResourceId( R_VEI_PREVIEW_BAR );
+                    MenuBar()->TryDisplayMenuBarL();
+                    MenuBar()->SetMenuTitleResourceId(
+                            R_VEI_MENUBAR_EDIT_VIDEO_VIEW );
+                    break;
+                    }
+                switch ( iContainer->CursorLocation())
+                    {
+                    case VideoEditor::ECursorOnAudio: 
+                        {
+                        iPopup->ShowEditAudioPopupList();
+                        break;
+                        }
+                    case VideoEditor::ECursorOnClip: 
+                        {
+                        if ( iMovie->VideoClipInfo( iContainer->CurrentIndex())->Class() == EVedVideoClipClassFile )
+                            {
+                            iPopup->ShowEditVideoPopupList();
+                            }
+                        else
+                            {
+
+                            TUid generatorUid = iMovie->VideoClipInfo(
+                                                    iContainer->CurrentIndex())->Generator()->Uid();
+                            if ( generatorUid == KUidImageClipGenerator )
+                            // Image 
+                                {
+                                iPopup->ShowEditImagePopupList();
+                                }
+                            else
+                            // Text
+                                {
+                                iPopup->ShowEditTextPopupList();
+                                }
+                            }
+                        break;
+                        }
+                    /**
+                     * Cursor on video transition.
+                     */
+                    case VideoEditor::ECursorOnTransition: 
+                        {
+                        if ( iContainer->CurrentIndex() == 0 )
+                            {
+                            iPopup->ShowStartTransitionPopupListL();
+                            }
+                        else if ( iContainer->CurrentIndex() < iMovie->VideoClipCount())
+                            {
+                            iPopup->ShowMiddleTransitionPopupListL();
+                            }
+                        else
+                            {
+                            iPopup->ShowEndTransitionPopupListL();
+                            }
+                        break;
+                        }
+                default:
+                    break;
+                    }
+                break;
+                }
+        case EVeiCmdEditVideoViewInsert:
+        case EVeiCmdEditVideoViewEditVideo:
+        case EVeiCmdEditVideoViewEditAudio:
+            LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsert||EVeiCmdEditVideoViewEditVideo||EVeiCmdEditVideoViewEditAudio" );
+            break;
+        case EVeiCmdEditVideoViewTransitionNone:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionNone" );
+
+                if ( iContainer->CurrentIndex() == 0 )
+                    {
+                    iMovie->SetStartTransitionEffect( EVedStartTransitionEffectNone );
+                    }
+                else if ( iContainer->CurrentIndex() < iMovie->VideoClipCount())
+                    {
+                    index = iContainer->CurrentIndex() - 1;
+                    iMovie->SetMiddleTransitionEffect( EVedMiddleTransitionEffectNone, index );
+                    }
+                else
+                    {
+                    iMovie->SetEndTransitionEffect( EVedEndTransitionEffectNone );
+                    }
+                break;
+                }
+        case EVeiCmdEditVideoViewTransitionFadeFromBlack:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionFadeFromBlack" );
+                __ASSERT_ALWAYS( iContainer->CurrentIndex() == 0, User::Panic( _L( "VideoEditor" ), 34 ));
+                iMovie->SetStartTransitionEffect( EVedStartTransitionEffectFadeFromBlack );
+                break;
+                }
+        case EVeiCmdEditVideoViewTransitionFadeFromWhite:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionFadeFromWhite" );
+                __ASSERT_ALWAYS( iContainer->CurrentIndex() == 0, User::Panic( _L( "VideoEditor" ), 34 ));
+                iMovie->SetStartTransitionEffect( EVedStartTransitionEffectFadeFromWhite );
+                break;
+                }
+        case EVeiCmdEditVideoViewTransitionDipToBlack:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionDipToBlack" );
+                __ASSERT_ALWAYS( iContainer->CurrentIndex() < iMovie->VideoClipCount(), User::Panic( _L( "VideoEditor" ), 34 ));
+                __ASSERT_ALWAYS( iContainer->CurrentIndex() > 0, User::Panic( _L( "VideoEditor" ), 34 ));
+                index = iContainer->CurrentIndex() - 1;
+                iMovie->SetMiddleTransitionEffect( EVedMiddleTransitionEffectDipToBlack, index );
+                break;
+                }
+        case EVeiCmdEditVideoViewTransitionDipToWhite:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionDipToWhite" );
+                __ASSERT_ALWAYS( iContainer->CurrentIndex() < iMovie->VideoClipCount(), User::Panic( _L( "VideoEditor" ), 34 ));
+                __ASSERT_ALWAYS( iContainer->CurrentIndex() > 0, User::Panic( _L( "VideoEditor" ), 34 ));
+                index = iContainer->CurrentIndex() - 1;
+                iMovie->SetMiddleTransitionEffect( EVedMiddleTransitionEffectDipToWhite, index );
+                break;
+                }
+        case EVeiCmdEditVideoViewTransitionCrossfade:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionCrossfade" );
+                __ASSERT_ALWAYS( iContainer->CurrentIndex() < iMovie->VideoClipCount(), User::Panic( _L( "VideoEditor" ), 34 ));
+                __ASSERT_ALWAYS( iContainer->CurrentIndex() > 0, User::Panic( _L( "VideoEditor" ), 34 ));
+                index = iContainer->CurrentIndex() - 1;
+                iMovie->SetMiddleTransitionEffect( EVedMiddleTransitionEffectCrossfade, index );
+                break;
+                }
+        case EVeiCmdEditVideoViewTransitionWipeFromLeft:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionWipeFromLeft" );
+                __ASSERT_ALWAYS( iContainer->CurrentIndex() < iMovie->VideoClipCount(), User::Panic( _L( "VideoEditor" ), 34 ));
+                __ASSERT_ALWAYS( iContainer->CurrentIndex() > 0, User::Panic( _L( "VideoEditor" ), 34 ));
+                index = iContainer->CurrentIndex() - 1;
+                iMovie->SetMiddleTransitionEffect( EVedMiddleTransitionEffectWipeLeftToRight, index );
+                break;
+                }
+        case EVeiCmdEditVideoViewTransitionWipeFromRight:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionWipeFromRight" );
+                __ASSERT_ALWAYS( iContainer->CurrentIndex() < iMovie->VideoClipCount(), User::Panic( _L( "VideoEditor" ), 34 ));
+                __ASSERT_ALWAYS( iContainer->CurrentIndex() > 0, User::Panic( _L( "VideoEditor" ), 34 ));
+                index = iContainer->CurrentIndex() - 1;
+                iMovie->SetMiddleTransitionEffect( EVedMiddleTransitionEffectWipeRightToLeft, index );
+                break;
+                }
+        case EVeiCmdEditVideoViewTransitionWipeFromTop:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionWipeFromTop" );
+                __ASSERT_ALWAYS( iContainer->CurrentIndex() < iMovie->VideoClipCount(), User::Panic( _L( "VideoEditor" ), 34 ));
+                __ASSERT_ALWAYS( iContainer->CurrentIndex() > 0, User::Panic( _L( "VideoEditor" ), 34 ));
+                index = iContainer->CurrentIndex() - 1;
+                iMovie->SetMiddleTransitionEffect( EVedMiddleTransitionEffectWipeTopToBottom, index );
+                break;
+                }
+        case EVeiCmdEditVideoViewTransitionWipeFromBottom:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionWipeFromBottom" );
+                __ASSERT_ALWAYS( iContainer->CurrentIndex() < iMovie->VideoClipCount(), User::Panic( _L( "VideoEditor" ), 34 ));
+                __ASSERT_ALWAYS( iContainer->CurrentIndex() > 0, User::Panic( _L( "VideoEditor" ), 34 ));
+                index = iContainer->CurrentIndex() - 1;
+                iMovie->SetMiddleTransitionEffect( EVedMiddleTransitionEffectWipeBottomToTop, index );
+                break;
+                }
+        case EVeiCmdEditVideoViewTransitionFadeToBlack:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionFadeToBlack" );
+                __ASSERT_ALWAYS( iContainer->CurrentIndex() == iMovie->VideoClipCount(), User::Panic( _L( "VideoEditor" ), 34 ));
+                iMovie->SetEndTransitionEffect( EVedEndTransitionEffectFadeToBlack );
+                break;
+                }
+        case EVeiCmdEditVideoViewTransitionFadeToWhite:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionFadeToWhite" );
+                __ASSERT_ALWAYS( iContainer->CurrentIndex() == iMovie->VideoClipCount(), User::Panic( _L( "VideoEditor" ), 34 ));
+                iMovie->SetEndTransitionEffect( EVedEndTransitionEffectFadeToWhite );
+                break;
+                }
+        case EVeiCmdEditVideoViewEditStartTransition:
+        case EVeiCmdEditVideoViewEditMiddleTransition:
+        case EVeiCmdEditVideoViewEditEndTransition:
+            LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditStartTransition||EVeiCmdEditVideoViewEditMiddleTransition||EVeiCmdEditVideoViewEditEndTransition" );
+            break;
+        case EVeiCmdEditVideoViewSaveTo:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewSaveTo" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    TInt err;
+                    TRAP( err, SaveL( EProcessingMovieSave ));
+                    if ( err != KErrNone )
+                        {
+                        ShowErrorNote( R_VEI_ERROR_NOTE );
+                        }
+                    }
+                break;
+                }
+        case EVeiCmdEditVideoMixAudio:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoMixAudio" );
+                SetEditorState( EMixAudio );
+                break;
+                }
+
+        case EVeiCmdEditVideoAdjustVolume:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoAdjustVolume" );
+                SetEditorState( EAdjustVolume );
+                break;
+                }
+
+        case EVeiCmdEditVideoViewInsertVideo:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertVideo" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    __ASSERT_ALWAYS( iMediaQueue, User::Panic( _L( "CVeiEditVideoView" ), 1 ));
+
+                    if ( !iMediaQueue->ShowVideoClipDialogL( iContainer->CursorLocation(), iContainer->CurrentIndex()))
+                        {
+                        return ;
+                        }
+                    }
+                HandleScreenDeviceChangedL();
+                break;
+                }
+        case EVeiCmdEditVideoDuplicate:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoDuplicate" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    TEntry fileinfo;
+
+                    SetNewTempFileNeeded( ETrue );
+                    iMovieSavedFlag = EFalse;
+
+                    iWaitMode = EDuplicating;
+
+                    if ( iContainer->CursorLocation() == VideoEditor::ECursorOnClip )
+                        {
+                        CVedVideoClipInfo* previousInfo = iMovie->VideoClipInfo( iContainer->CurrentIndex());
+
+                        RFs& fs = iEikonEnv->FsSession();
+                        fs.Entry( previousInfo->FileName(), fileinfo );
+
+                        if ( IsEnoughFreeSpaceToSaveL( fileinfo.iSize ))
+                            {
+                            iMovie->InsertVideoClipL( previousInfo->FileName(), iContainer->CurrentIndex() + 1 );
+                            }
+                        }
+                    else
+                        {
+                        if ( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio )
+                            {
+                            CVedAudioClipInfo* currentInfo = iMovie->AudioClipInfo( iContainer->CurrentIndex());
+                            TTimeIntervalMicroSeconds currentDuration = iMovie->AudioClipEditedDuration( iContainer->CurrentIndex());
+
+                            TInt currentIndex = iContainer->CurrentIndex();
+
+                            for ( TInt i = iMovie->AudioClipCount() - 1; i > currentIndex; i-- )
+                                {
+                                TTimeIntervalMicroSeconds oldStartTime = iMovie->AudioClipStartTime( i );
+                                iMovie->AudioClipSetStartTime( i, TTimeIntervalMicroSeconds( oldStartTime.Int64() + currentDuration.Int64()));
+                                }
+
+                            TTimeIntervalMicroSeconds currentAudioClipEndTime = iMovie->AudioClipEndTime( currentIndex );
+                            TTimeIntervalMicroSeconds currentCutInTime = iMovie->AudioClipCutInTime( currentIndex );
+                            TTimeIntervalMicroSeconds currentCutOutTime = iMovie->AudioClipCutOutTime( currentIndex );
+                            iMovie->AddAudioClipL( currentInfo->FileName(), currentAudioClipEndTime, currentCutInTime, currentCutOutTime );
+                            }
+                        }
+                    }
+                break;
+                }
+
+            /*
+             * Insert TITLE text *	
+             */
+        case EVeiCmdEditVideoViewInsertText:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertText" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    iPopup->ShowInsertTextPopupList();
+                    }
+                break;
+                }
+
+        case EVeiCmdEditVideoViewInsertTextTitle:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertTextTitle" );
+
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    StoreOrientation();
+                    CleanupStack::PushL( TCleanupItem( CleanupRestoreOrientation, this ));
+                    AppUi()->SetOrientationL( CAknAppUiBase::EAppUiOrientationPortrait );
+
+                    TSize res = TSize( iMovie->Resolution());
+
+                    CVeiTitleClipGenerator* generator = CVeiTitleClipGenerator::NewLC( res, 
+                                                                                       EVeiTitleClipTransitionNone, 
+                                                                                       EVeiTitleClipHorizontalAlignmentCenter, 
+                                                                                       EVeiTitleClipVerticalAlignmentCenter );
+
+                    HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_TITLE_NAME, iEikonEnv );
+                    generator->SetDescriptiveNameL( *descriptiveName );
+                    CleanupStack::PopAndDestroy( descriptiveName );
+
+                    generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionNone, 
+                                                            EVeiTitleClipHorizontalAlignmentCenter, 
+                                                            EVeiTitleClipVerticalAlignmentCenter );
+
+                    /* Ask for text. */
+                    HBufC* text = HBufC::NewLC( KTitleScreenMaxTextLength );
+                    TPtr txtptr( text->Des());
+                    CAknTextQueryDialog* textQuery = CAknTextQueryDialog::NewL( txtptr );
+                    CleanupStack::PushL( textQuery );
+
+                    textQuery->SetMaxLength( KTitleScreenMaxTextLength );
+                    //textQuery->SetPredictiveTextInputPermitted(ETrue);
+                    CleanupStack::Pop( textQuery );
+
+                    if ( !textQuery->ExecuteLD( R_VEI_EDITVIDEO_TITLESCREEN_TEXT_QUERY ))
+                        {
+                        CleanupStack::PopAndDestroy( text );
+                        CleanupStack::PopAndDestroy( generator );
+                        CleanupStack::PopAndDestroy( this ); // restore appui orientation
+                        break;
+                        }
+
+                    generator->SetTextL( *text );
+                    CleanupStack::PopAndDestroy( text );
+
+                    /* Insert generator into the movie. */
+                    TInt err = 0;
+                    index = ( iContainer->CurrentIndex() == iMovie->VideoClipCount()) ? iMovie->VideoClipCount(): iContainer->CurrentIndex() + 1;
+                    TRAP( err, iMovie->InsertVideoClipL( *generator, ETrue, index ));
+
+                    CleanupStack::Pop( generator );
+                    User::LeaveIfError( err );
+
+                    CleanupStack::PopAndDestroy( this ); // restore appui orientation
+                    }
+                break;
+                }
+            /*
+             * Insert TITLE (fading) text *	
+             */
+        case EVeiCmdEditVideoViewInsertTextTitleFading:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertTextTitleFading" );
+
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+
+                    StoreOrientation();
+                    CleanupStack::PushL( TCleanupItem( CleanupRestoreOrientation, this ));
+                    AppUi()->SetOrientationL( CAknAppUiBase::EAppUiOrientationPortrait );
+
+                    TSize res = TSize( iMovie->Resolution());
+                    CVeiTitleClipGenerator* generator = CVeiTitleClipGenerator::NewLC( res, 
+                                                                                       EVeiTitleClipTransitionNone, 
+                                                                                       EVeiTitleClipHorizontalAlignmentCenter, 
+                                                                                       EVeiTitleClipVerticalAlignmentCenter );
+
+                    HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_TITLE_FADING_NAME, iEikonEnv );
+                    generator->SetDescriptiveNameL( *descriptiveName );
+                    CleanupStack::PopAndDestroy( descriptiveName );
+
+                    generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionFade, 
+                                                            EVeiTitleClipHorizontalAlignmentCenter, 
+                                                            EVeiTitleClipVerticalAlignmentCenter );
+                    /* Ask for text. */
+                    HBufC* text = HBufC::NewLC( KTitleScreenMaxTextLength );
+                    TPtr txtptr( text->Des());
+
+                    CAknTextQueryDialog* textQuery = CAknTextQueryDialog::NewL( txtptr );
+                    CleanupStack::PushL( textQuery );
+
+                    textQuery->SetMaxLength( KTitleScreenMaxTextLength );
+                    //textQuery->SetPredictiveTextInputPermitted(ETrue);
+                    CleanupStack::Pop( textQuery );
+
+                    if ( !textQuery->ExecuteLD( R_VEI_EDITVIDEO_TITLESCREEN_TEXT_QUERY ))
+                        {
+                        CleanupStack::PopAndDestroy( text );
+                        CleanupStack::PopAndDestroy( generator );
+                        CleanupStack::PopAndDestroy( this ); // restore appui orientation
+                        break;
+                        }
+
+                    generator->SetTextL( *text );
+                    CleanupStack::PopAndDestroy( text );
+
+                    /* Insert generator into the movie. */
+                    TInt err = 0;
+                    index = ( iContainer->CurrentIndex() == iMovie->VideoClipCount()) ? iMovie->VideoClipCount(): iContainer->CurrentIndex() + 1;
+                    TRAP( err, iMovie->InsertVideoClipL( *generator, ETrue, index ));
+                    CleanupStack::Pop( generator );
+                    User::LeaveIfError( err );
+
+                    CleanupStack::PopAndDestroy( this ); // restore appui orientation
+                    }
+                break;
+                }
+            /*
+             * Insert SUBTITLE text *	
+             */
+        case EVeiCmdEditVideoViewInsertTextSubTitle:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertTextSubTitle" );
+
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    StoreOrientation();
+                    CleanupStack::PushL( TCleanupItem( CleanupRestoreOrientation, this ));
+                    AppUi()->SetOrientationL( CAknAppUiBase::EAppUiOrientationPortrait );
+
+                    TSize res = TSize( iMovie->Resolution());
+                    CVeiTitleClipGenerator* generator = CVeiTitleClipGenerator::NewLC( res, 
+                                                                                       EVeiTitleClipTransitionNone, 
+                                                                                       EVeiTitleClipHorizontalAlignmentCenter, 
+                                                                                       EVeiTitleClipVerticalAlignmentCenter );
+
+                    HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_SUBTITLE_NAME, iEikonEnv );
+                    generator->SetDescriptiveNameL( *descriptiveName );
+                    CleanupStack::PopAndDestroy( descriptiveName );
+
+                    generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionNone, 
+                                                            EVeiTitleClipHorizontalAlignmentLeft, 
+                                                            EVeiTitleClipVerticalAlignmentBottom );
+
+                    /* Ask for text. */
+                    HBufC* text = HBufC::NewLC( KTitleScreenMaxTextLength );
+                    TPtr txtptr( text->Des());
+                    CAknTextQueryDialog* textQuery = CAknTextQueryDialog::NewL( txtptr );
+                    CleanupStack::PushL( textQuery );
+
+                    textQuery->SetMaxLength( KTitleScreenMaxTextLength );
+                    //textQuery->SetPredictiveTextInputPermitted(ETrue);
+                    CleanupStack::Pop( textQuery );
+
+                    if ( !textQuery->ExecuteLD( R_VEI_EDITVIDEO_TITLESCREEN_TEXT_QUERY ))
+                        {
+                        CleanupStack::PopAndDestroy( text );
+                        CleanupStack::PopAndDestroy( generator );
+                        CleanupStack::PopAndDestroy( this ); // restore appui orientation
+                        break;
+                        }
+
+                    generator->SetTextL( *text );
+                    CleanupStack::PopAndDestroy( text );
+
+                    /* Insert generator into the movie. */
+                    TInt err = 0;
+                    index = ( iContainer->CurrentIndex() == iMovie->VideoClipCount()) ? iMovie->VideoClipCount(): iContainer->CurrentIndex() + 1;
+                    TRAP( err, iMovie->InsertVideoClipL( *generator, ETrue, index ));
+                    CleanupStack::Pop( generator );
+                    User::LeaveIfError( err );
+
+                    CleanupStack::PopAndDestroy( this ); // restore appui orientation
+                    }
+                break;
+                }
+            /*
+             * Insert SUBTITLE (fading) text *	
+             */
+        case EVeiCmdEditVideoViewInsertTextSubTitleFading:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertTextSubTitleFading" );
+
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    StoreOrientation();
+                    CleanupStack::PushL( TCleanupItem( CleanupRestoreOrientation, this ));
+                    AppUi()->SetOrientationL( CAknAppUiBase::EAppUiOrientationPortrait );
+
+                    TSize res = TSize( iMovie->Resolution());
+                    CVeiTitleClipGenerator* generator = CVeiTitleClipGenerator::NewLC( res, 
+                                                                                       EVeiTitleClipTransitionNone, 
+                                                                                       EVeiTitleClipHorizontalAlignmentCenter, 
+                                                                                       EVeiTitleClipVerticalAlignmentCenter );
+
+                    HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_SUBTITLE_FADING_NAME, iEikonEnv );
+                    generator->SetDescriptiveNameL( *descriptiveName );
+                    CleanupStack::PopAndDestroy( descriptiveName );
+
+                    generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionFade, 
+                                                            EVeiTitleClipHorizontalAlignmentLeft, 
+                                                            EVeiTitleClipVerticalAlignmentBottom );
+
+                    /* Ask for text. */
+                    HBufC* text = HBufC::NewLC( KTitleScreenMaxTextLength );
+                    TPtr txtptr( text->Des());
+                    CAknTextQueryDialog* textQuery = CAknTextQueryDialog::NewL( txtptr );
+                    CleanupStack::PushL( textQuery );
+
+                    textQuery->SetMaxLength( KTitleScreenMaxTextLength );
+                    //textQuery->SetPredictiveTextInputPermitted(ETrue);
+                    CleanupStack::Pop( textQuery );
+
+                    if ( !textQuery->ExecuteLD( R_VEI_EDITVIDEO_TITLESCREEN_TEXT_QUERY ))
+                        {
+                        CleanupStack::PopAndDestroy( text );
+                        CleanupStack::PopAndDestroy( generator );
+                        CleanupStack::PopAndDestroy( this ); // restore appui orientation
+                        break;
+                        }
+
+                    generator->SetTextL( *text );
+                    CleanupStack::PopAndDestroy( text );
+
+                    /* Insert generator into the movie. */
+                    TInt err = 0;
+                    index = ( iContainer->CurrentIndex() == iMovie->VideoClipCount()) ? iMovie->VideoClipCount(): iContainer->CurrentIndex() + 1;
+                    TRAP( err, iMovie->InsertVideoClipL( *generator, ETrue, index ));
+                    CleanupStack::Pop( generator );
+                    User::LeaveIfError( err );
+
+                    CleanupStack::PopAndDestroy( this ); // restore appui orientation
+                    }
+                break;
+                }
+            /*
+             * Insert CREDIT text *	
+             */
+        case EVeiCmdEditVideoViewInsertTextCredits:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertTextCredits" );
+
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    StoreOrientation();
+                    CleanupStack::PushL( TCleanupItem( CleanupRestoreOrientation, this ));
+                    AppUi()->SetOrientationL( CAknAppUiBase::EAppUiOrientationPortrait );
+
+                    TSize res = TSize( iMovie->Resolution());
+                    CVeiTitleClipGenerator* generator = CVeiTitleClipGenerator::NewLC( res, 
+                                                                                       EVeiTitleClipTransitionNone, 
+                                                                                       EVeiTitleClipHorizontalAlignmentCenter, 
+                                                                                       EVeiTitleClipVerticalAlignmentCenter );
+
+                    HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_CREDITS_NAME, iEikonEnv );
+                    generator->SetDescriptiveNameL( *descriptiveName );
+                    CleanupStack::PopAndDestroy( descriptiveName );
+
+                    generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionScrollBottomToTop, 
+                                                            EVeiTitleClipHorizontalAlignmentCenter, 
+                                                            EVeiTitleClipVerticalAlignmentCenter );
+
+                    /* Ask for text. */
+                    HBufC* text = HBufC::NewLC( KTitleScreenMaxTextLength );
+                    TPtr txtptr( text->Des());
+                    CAknTextQueryDialog* textQuery = CAknTextQueryDialog::NewL( txtptr );
+                    CleanupStack::PushL( textQuery );
+
+                    textQuery->SetMaxLength( KTitleScreenMaxTextLength );
+                    //textQuery->SetPredictiveTextInputPermitted(ETrue);
+                    CleanupStack::Pop( textQuery );
+
+                    if ( !textQuery->ExecuteLD( R_VEI_EDITVIDEO_TITLESCREEN_TEXT_QUERY ))
+                        {
+                        CleanupStack::PopAndDestroy( text );
+                        CleanupStack::PopAndDestroy( generator );
+                        CleanupStack::PopAndDestroy( this );
+                        break;
+                        }
+                    generator->SetTextL( *text );
+                    CleanupStack::PopAndDestroy( text );
+
+                    /* Insert generator into the movie. */
+                    TInt err = 0;
+                    index = ( iContainer->CurrentIndex() == iMovie->VideoClipCount()) ? iMovie->VideoClipCount(): iContainer->CurrentIndex() + 1;
+                    TRAP( err, iMovie->InsertVideoClipL( *generator, ETrue, index ));
+                    CleanupStack::Pop( generator );
+                    User::LeaveIfError( err );
+
+                    CleanupStack::PopAndDestroy( this ); // restore appui orientation
+                    }
+                break;
+                }
+
+            /*
+             * Edit Text *
+             */
+        case EVeiCmdEditVideoViewEditTextMove:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextMove" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL );
+                    Cba()->DrawDeferred();
+
+                    index = iContainer->CurrentIndex();
+
+                    if ( iContainer->CursorLocation() == VideoEditor::ECursorOnClip )
+                        {
+                        iOriginalVideoClipIndex = index;
+                        }
+                    else
+                        {
+                        User::Panic( _L( "VideoEditor" ), 34 );
+                        }
+                    iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeMove );
+                    UpdateEditNaviLabel();
+                    }
+                break;
+                }
+        case EVeiCmdEditVideoViewEditTextChangeDuration:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextChangeDuration" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL );
+                    Cba()->DrawDeferred();
+                    index = iContainer->CurrentIndex();
+
+                    iOriginalVideoStartPoint = iMovie->VideoClipStartTime( index );
+                    iOriginalVideoCutInTime = iMovie->VideoClipCutInTime( index );
+                    iOriginalVideoCutOutTime = iMovie->VideoClipCutOutTime( index );
+
+                    iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeDuration );
+                    UpdateEditNaviLabel();
+                    }
+                break;
+                }
+        case EVeiCmdEditVideoViewEditTextChangeText:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextChangeText" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    StoreOrientation();
+                    CleanupStack::PushL( TCleanupItem( CleanupRestoreOrientation, this ));
+                    AppUi()->SetOrientationL( CAknAppUiBase::EAppUiOrientationPortrait );
+
+                    Cba()->DrawDeferred();
+                    CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
+
+                    CVeiTitleClipGenerator* generator = STATIC_CAST( CVeiTitleClipGenerator* , info->Generator());
+                    HBufC* text = HBufC::NewLC( KTitleScreenMaxTextLength );
+                    *text = (( CVeiTitleClipGenerator* )info->Generator())->Text();
+
+                    TPtr txtptr( text->Des());
+                    CAknTextQueryDialog* textQuery = CAknTextQueryDialog::NewL( txtptr );
+                    CleanupStack::PushL( textQuery );
+
+                    textQuery->SetMaxLength( KTitleScreenMaxTextLength );
+                    //textQuery->SetPredictiveTextInputPermitted(ETrue);
+                    CleanupStack::Pop( textQuery );
+
+                    if ( !textQuery->ExecuteLD( R_VEI_EDITVIDEO_TITLESCREEN_TEXT_QUERY ))
+                        {
+                        CleanupStack::PopAndDestroy( text );
+                        CleanupStack::PopAndDestroy( this ); // restore appui orientation
+                        break;
+                        }
+                    generator->SetTextL( *text );
+                    CleanupStack::PopAndDestroy( text );
+                    UpdateEditNaviLabel();
+
+                    CleanupStack::PopAndDestroy( this ); // restore appui orientation
+                    }
+                break;
+                }
+
+        case EVeiCmdEditVideoViewEditTextSetTextColor:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextSetTextColor" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
+                    CVeiTitleClipGenerator* generator = STATIC_CAST( CVeiTitleClipGenerator* , info->Generator());
+
+                    TRgb color = generator->TextColor();
+                    if ( !iPopup->ShowColorSelectorL( color ))
+                        {
+                        break;
+                        }
+                    generator->SetTextColorL( color );
+                    }
+                break;
+                }
+        case EVeiCmdEditVideoViewEditTextSetBackGround:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextSetBackGround" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
+                    CVeiTitleClipGenerator* generator = STATIC_CAST( CVeiTitleClipGenerator* , info->Generator());
+
+                    // ask for color or image
+                    TBool imageSelected;
+                    TInt err = iPopup->ShowTitleScreenBackgroundSelectionPopupL( imageSelected );
+                    if ( err != KErrNone )
+                        {
+                        break;
+                        }
+
+                    if ( imageSelected )
+                        {
+                        CDesCArrayFlat* selectedFiles = new( ELeave )CDesCArrayFlat( 1 );
+                        CleanupStack::PushL( selectedFiles );
+
+                        CVeiMGFetchVerifier* mgFetchVerifier = CVeiMGFetchVerifier::NewLC();
+
+                        if ( MGFetch::RunL( *selectedFiles, EImageFile, EFalse, mgFetchVerifier ) == EFalse )
+                            {
+                            /* User cancelled the dialog. */
+                            CleanupStack::PopAndDestroy( mgFetchVerifier );
+                            CleanupStack::PopAndDestroy( selectedFiles );
+                            break;
+                            }
+
+                        CleanupStack::PopAndDestroy( mgFetchVerifier );
+
+                        if ( !iWaitDialog )
+                            {
+                            iWaitDialog = new( ELeave )CAknWaitDialog( REINTERPRET_CAST( CEikDialog** , &iWaitDialog ), ETrue );
+                            iWaitDialog->ExecuteLD( R_VEI_WAIT_DIALOG_INSERTING_IMAGE );
+                            }
+
+
+                        TRAP( err, generator->SetBackgroundImageL(( *selectedFiles )[0], * this ));
+
+                        if ( err )
+                            {
+                            if ( iWaitDialog )
+                                {
+                                CancelWaitDialog();
+                                }
+                            ShowErrorNote( R_VEI_ERRORNOTE_IMAGE_INSERTING_FAILED );
+                            }
+
+                        CleanupStack::PopAndDestroy( selectedFiles );
+                        }
+                    else
+                        {
+                        TRgb color = generator->BackgroundColor();
+                        if ( !iPopup->ShowColorSelectorL( color ))
+                            {
+                            break;
+                            }
+                        generator->SetBackgroundColorL( color );
+                        }
+                    }
+                break;
+                }
+        case EVeiCmdEditVideoViewEditTextStyle:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextStyle" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    /* Ask for style. */
+                    iPopup->ShowTitleScreenStyleSelectionPopupL();
+                    }
+                break;
+                }
+            /*
+             * Edit text, AddColorEffect *	
+             */
+        case EVeiCmdEditVideoViewEditTextAddColorEffect:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextAddColorEffect" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    iPopup->ShowEffectSelectionPopupListL();
+                    }
+                break;
+                }
+            /*
+             * Edit text style *	
+             */
+        case EVeiCmdEditVideoViewEditTextStyleTitle:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextStyleTitle" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
+
+                    CVeiTitleClipGenerator* generator = STATIC_CAST( CVeiTitleClipGenerator* , info->Generator());
+
+                    HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_TITLE_NAME, iEikonEnv );
+                    generator->SetDescriptiveNameL( *descriptiveName );
+                    CleanupStack::PopAndDestroy( descriptiveName );
+
+                    generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionNone, 
+                                                            EVeiTitleClipHorizontalAlignmentCenter, 
+                                                            EVeiTitleClipVerticalAlignmentCenter );
+                    }
+                break;
+                }
+        case EVeiCmdEditVideoViewEditTextStyleTitleFading:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextStyleTitleFading" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
+
+                    CVeiTitleClipGenerator* generator = STATIC_CAST( CVeiTitleClipGenerator* , info->Generator());
+
+                    HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_TITLE_FADING_NAME, iEikonEnv );
+                    generator->SetDescriptiveNameL( *descriptiveName );
+                    CleanupStack::PopAndDestroy( descriptiveName );
+                    generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionFade, 
+                                                            EVeiTitleClipHorizontalAlignmentCenter, 
+                                                            EVeiTitleClipVerticalAlignmentCenter );
+                    }
+                break;
+                }
+        case EVeiCmdEditVideoViewEditTextStyleSubTitle:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextStyleSubTitle" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
+
+                    CVeiTitleClipGenerator* generator = STATIC_CAST( CVeiTitleClipGenerator* , info->Generator());
+
+                    HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_SUBTITLE_NAME, iEikonEnv );
+                    generator->SetDescriptiveNameL( *descriptiveName );
+                    CleanupStack::PopAndDestroy( descriptiveName );
+                    generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionNone, 
+                                                            EVeiTitleClipHorizontalAlignmentLeft, 
+                                                            EVeiTitleClipVerticalAlignmentBottom );
+
+                    }
+                break;
+                }
+        case EVeiCmdEditVideoViewEditTextStyleSubTitleFading:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextStyleSubTitleFading" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
+
+                    CVeiTitleClipGenerator* generator = STATIC_CAST( CVeiTitleClipGenerator* , info->Generator());
+
+                    HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_SUBTITLE_FADING_NAME, iEikonEnv );
+                    generator->SetDescriptiveNameL( *descriptiveName );
+                    CleanupStack::PopAndDestroy( descriptiveName );
+                    generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionFade, 
+                                                            EVeiTitleClipHorizontalAlignmentLeft, 
+                                                            EVeiTitleClipVerticalAlignmentBottom );
+                    }
+                break;
+                }
+        case EVeiCmdEditVideoViewEditTextStyleCredit:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextStyleCredit" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
+
+                    CVeiTitleClipGenerator* generator = STATIC_CAST( CVeiTitleClipGenerator* , info->Generator());
+
+                    HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_CREDITS_NAME, iEikonEnv );
+                    generator->SetDescriptiveNameL( *descriptiveName );
+                    CleanupStack::PopAndDestroy( descriptiveName );
+                    generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionScrollBottomToTop, 
+                                                            EVeiTitleClipHorizontalAlignmentCenter, 
+                                                            EVeiTitleClipVerticalAlignmentCenter );
+                    }
+                break;
+                }
+            /*
+             * Edit text, Duplicate *	
+             */
+        case EVeiCmdEditVideoViewEditTextDuplicate:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextDuplicate" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    CVedVideoClipInfo* previousInfo = iMovie->VideoClipInfo( iContainer->CurrentIndex());
+                    CVeiTitleClipGenerator* generator = STATIC_CAST( CVeiTitleClipGenerator* , previousInfo->Generator());
+
+                    iWaitMode = EDuplicating;
+
+                    CVeiTitleClipGenerator* generator2 = CVeiTitleClipGenerator::NewLC( iMovie->Resolution(), 
+                                                                                        generator->Transition(), 
+                                                                                        generator->HorizontalAlignment(), 
+                                                                                        generator->VerticalAlignment());
+
+                    generator2->SetDescriptiveNameL( generator->DescriptiveName());
+                    generator2->SetTransitionAndAlignmentsL( generator->Transition(), 
+                                                             generator->HorizontalAlignment(), 
+                                                             generator->VerticalAlignment() );
+                    generator2->SetTextL( generator->Text());
+                    generator2->SetTextColorL( generator->TextColor());
+
+                    generator2->SetBackgroundColorL( generator->BackgroundColor());
+                    if ( generator->BackgroundImage())
+                        {
+                        generator2->SetBackgroundImageL( generator->BackgroundImage());
+                        }
+
+                    generator2->SetDuration( generator->Duration());
+
+                    TInt err = 0;
+                    index = ( iContainer->CurrentIndex() == iMovie->VideoClipCount()) ? iMovie->VideoClipCount(): iContainer->CurrentIndex() + 1;
+                    TRAP( err, iMovie->InsertVideoClipL( *generator2, ETrue, index ));
+
+                    CleanupStack::Pop( generator2 );
+                    User::LeaveIfError( err );
+                    }
+                break;
+                }
+            /**
+             * Insert Image
+             */
+        case EVeiCmdEditVideoViewInsertImage:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertImage" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    TTimeIntervalMicroSeconds duration( 5000000 );
+
+                    CDesCArrayFlat* selectedFiles = new( ELeave )CDesCArrayFlat( 1 );
+                    CleanupStack::PushL( selectedFiles );
+
+                    CVeiMGFetchVerifier* mgFetchVerifier = CVeiMGFetchVerifier::NewLC();
+
+                    if ( MGFetch::RunL( *selectedFiles, EImageFile, EFalse, mgFetchVerifier ) == EFalse )
+                        {
+                        /* User cancelled the dialog. */
+                        CleanupStack::PopAndDestroy( mgFetchVerifier );
+                        CleanupStack::PopAndDestroy( selectedFiles );
+                        break;
+                        }
+
+                    CleanupStack::PopAndDestroy( mgFetchVerifier );
+
+                    if ( !iWaitDialog )
+                        {
+                        iWaitDialog = new( ELeave )CAknWaitDialog( REINTERPRET_CAST( CEikDialog** , &iWaitDialog ), ETrue );
+                        iWaitDialog->ExecuteLD( R_VEI_WAIT_DIALOG_INSERTING_IMAGE );
+                        }
+
+                    RFs& fs = iEikonEnv->FsSession();
+
+                    TRAPD( err, iGenerator = CVeiImageClipGenerator::NewL(( *selectedFiles )[0], 
+                                                                            TSize( KMaxVideoFrameResolutionX, KMaxVideoFrameResolutionY ), 
+                                                                            duration, 
+                                                                            KRgbBlack, 
+                                                                            KVideoClipGenetatorDisplayMode, 
+                                                                            fs, 
+                                                                            *this ));
+                    if ( err )
+                        {
+                        if ( iWaitDialog )
+                            {
+                            CancelWaitDialog();
+                            }
+                        ShowErrorNote( R_VEI_ERRORNOTE_IMAGE_INSERTING_FAILED );
+                        }
+
+                    CleanupStack::PopAndDestroy( selectedFiles );
+                    }
+                break;
+                }
+
+            /**
+             * Edit Image * 
+             */
+        case EVeiCmdEditVideoViewEditImageMove:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditImageMove" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL );
+                    Cba()->DrawDeferred();
+
+                    index = iContainer->CurrentIndex();
+
+                    if ( iContainer->CursorLocation() == VideoEditor::ECursorOnClip )
+                        {
+                        iOriginalVideoClipIndex = index;
+                        }
+                    else
+                        {
+                        User::Panic( _L( "VideoEditor" ), 34 );
+                        }
+                    iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeMove );
+                    UpdateEditNaviLabel();
+                    }
+                break;
+                }
+
+        case EVeiCmdEditVideoViewEditImageChangeDuration:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditImageChangeDuration" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL );
+                    Cba()->DrawDeferred();
+                    index = iContainer->CurrentIndex();
+
+                    iOriginalVideoStartPoint = iMovie->VideoClipStartTime( index );
+                    iOriginalVideoCutInTime = iMovie->VideoClipCutInTime( index );
+                    iOriginalVideoCutOutTime = iMovie->VideoClipCutOutTime( index );
+
+                    iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeDuration );
+                    UpdateEditNaviLabel();
+                    }
+                break;
+                }
+        case EVeiCmdEditVideoViewEditImageBackGround:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditImageBackGround" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
+                    CVeiImageClipGenerator* generator = STATIC_CAST( CVeiImageClipGenerator* , info->Generator());
+
+                    // ask for color			
+                    TRgb color = generator->BackgroundColor();
+                    if ( !iPopup->ShowColorSelectorL( color ))
+                        {
+                        break;
+                        }
+
+                    generator->SetBackgroundColor( color );
+                    }
+                break;
+                }
+        case EVeiCmdEditVideoViewEditImageAddColorEffect:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditImageAddColorEffect" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    iPopup->ShowEffectSelectionPopupListL();
+                    }
+                break;
+                }
+            // * DUPLICATE Image *
+        case EVeiCmdEditVideoViewEditImageDuplicate:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditImageDuplicate" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    CVedVideoClipInfo* previousInfo = iMovie->VideoClipInfo( iContainer->CurrentIndex());
+                    CVeiImageClipGenerator* generator = STATIC_CAST( CVeiImageClipGenerator* , previousInfo->Generator());
+
+                    RFs& fs = iEikonEnv->FsSession();
+
+                    iWaitMode = EDuplicating;
+
+                    iGenerator = CVeiImageClipGenerator::NewL( generator->ImageFilename(), 
+                                                               TSize( KMaxVideoFrameResolutionX, KMaxVideoFrameResolutionY ), 
+                                                               previousInfo->Duration(), 
+                                                               generator->BackgroundColor(), 
+                                                               KVideoClipGenetatorDisplayMode, 
+                                                               fs, 
+                                                               *this );
+                    }
+                break;
+                }
+
+            /**
+             * Insert -> Sound clip
+             */
+        case EVeiCmdEditVideoViewInsertAudio:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertAudio" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    if ( !iMediaQueue->ShowAudioClipDialogL())
+                        {
+                        break;
+                        }
+                    }
+                HandleScreenDeviceChangedL();
+                break;
+                }
+            /**
+             * Insert -> New sound clip
+             */
+        case EVeiCmdEditVideoViewInsertNewAudio:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertNewAudio" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    InsertNewAudio();
+                    }
+                break;
+                }
+
+        case EVeiCmdEditVideoViewEditAudioSetDuration:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditAudioSetDuration" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL );
+                    Cba()->DrawDeferred();
+                    index = iContainer->CurrentIndex();
+
+                    iOriginalAudioStartPoint = iMovie->AudioClipStartTime( index );
+                    iOriginalAudioDuration = iMovie->AudioClipEditedDuration( index );
+                    iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeDuration );
+                    UpdateEditNaviLabel();
+                    }
+                break;
+                }
+        case EVeiCmdEditVideoViewSettings:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewSettings" );
+                AppUi()->ActivateLocalViewL( TUid::Uid( EVeiSettingsView ));
+                break;
+                }
+        case EVeiCmdEditVideoViewRecord:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewRecord" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    /* Set the mode, CBAs and Navi label. */
+                    iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeRecording );
+
+                    Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_EMPTY );
+                    Cba()->DrawDeferred();
+                    UpdateEditNaviLabel();
+
+                    iRecordedAudioMaxDuration = TTimeIntervalMicroSeconds(  - 1 );
+                    for ( TInt i = 0; i < iMovie->AudioClipCount(); i++ )
+                        {
+
+                        if ( iMovie->AudioClipStartTime( i ) > iContainer->RecordedAudioStartTime())
+                            {
+                            TInt64 startTimeInt = iContainer->RecordedAudioStartTime().Int64();
+                            TInt64 nextStartTimeInt = iMovie->AudioClipStartTime( i ).Int64();
+                            iRecordedAudioMaxDuration = TTimeIntervalMicroSeconds( nextStartTimeInt - startTimeInt );
+                            break;
+                            }
+                        }
+
+                    iRecorder->RecordL();
+                    const TUint delay = 1000 * 1000 / 10;
+
+                    iAudioRecordPeriodic->Start( delay, delay, TCallBack( CVeiEditVideoView::UpdateAudioRecording, this ));
+
+                    iContainer->SetRecordedAudioDuration( TTimeIntervalMicroSeconds( 0 ));
+                    }
+                break;
+                }
+        case EVeiCmdEditVideoViewRecordCancel:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewRecordCancel" );
+                // cancel recording
+                iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
+                Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
+                iContainer->SetRecordedAudioStartTime( TTimeIntervalMicroSeconds( 0 ));
+                iContainer->SetCursorLocation( VideoEditor::ECursorOnAudio );
+                Cba()->DrawDeferred();
+
+                UpdateEditNaviLabel();
+                break;
+                }
+            /*
+             *   Stop previewing
+             */
+        case EVeiCmdPlayViewStop:
+        case EVeiCmdCutVideoViewStop:
+        case EVeiCmdEditVideoViewRecordStop:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdPlayViewStop||EVeiCmdCutVideoViewStop||EVeiCmdEditVideoViewRecordStop" );
+                if ( EditorState() == EQuickPreview )
+                    {
+                    iContainer->StopVideo( EFalse );
+                    iContainer->SetFinishedStatus( ETrue );
+                    StopNaviPaneUpdateL();
+                    LOG( KVideoEditorLogFile, "\tEVeiCmdPlayViewStop||EVeiCmdCutVideoViewStop||EVeiCmdEditVideoViewRecordStop, setting R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK" );
+                    Cba()->SetCommandSetL( R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK );
+                    Cba()->DrawDeferred();
+                    break;
+                    }
+
+                // stop recording
+                iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
+                Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
+                Cba()->DrawDeferred();
+                UpdateEditNaviLabel();
+
+                iRecorder->Stop();
+                iAudioRecordPeriodic->Cancel();
+
+                if ( iAudioClipInfo )
+                    {
+                    delete iAudioClipInfo;
+                    iAudioClipInfo = NULL;
+                    }
+
+                iProgressNote = new( ELeave )CAknProgressDialog( REINTERPRET_CAST( CEikDialog** , &iProgressNote ), ETrue );
+
+                iProgressNote->SetCallback( this );
+                iProgressNote->ExecuteDlgLD( R_VEI_PROGRESS_NOTE );
+                HBufC* stringholder = StringLoader::LoadL( R_VEI_PROGRESS_NOTE_INSERTING_AUDIO, iEikonEnv );
+                CleanupStack::PushL( stringholder );
+
+                iProgressNote->SetTextL( *stringholder );
+                CleanupStack::PopAndDestroy( this ); // stringholder
+
+                iProgressNote->GetProgressInfoL()->SetFinalValue( 100 );
+                iWaitMode = EOpeningAudioInfo;
+
+                iAudioClipInfo = CVedAudioClipInfo::NewL( *iTempRecordedAudio, *this );
+                break;
+                }
+        case EVeiCmdPlayViewPause:
+        case EVeiCmdEditVideoViewRecordPause:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdPlayViewPause||EVeiCmdEditVideoViewRecordPause" );
+                if ( EditorState() == EQuickPreview )
+                    {
+                    iContainer->PauseVideoL();
+                    StopNaviPaneUpdateL();
+
+                    LOG( KVideoEditorLogFile, "\tEVeiCmdPlayViewPause||EVeiCmdEditVideoViewRecordPause, setting R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK" );
+                    Cba()->SetCommandSetL( R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK );
+                    Cba()->DrawDeferred();
+                    }
+                else
+                    {
+                    Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_EMPTY );
+                    Cba()->DrawDeferred();
+
+                    // Pause recording
+                    // Cba is set to CONTINUE_STOP in DoUpdateAudioRecording()
+                    iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeRecordingPaused );
+                    iRecorder->Stop();
+                    UpdateEditNaviLabel();
+                    }
+                break;
+                }
+            /*
+             *	Preview continue:
+             */
+        case EVeiCmdCutVideoViewPlay:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdCutVideoViewPlay" );
+
+                if ( !iUpdateTemp && !iTempFile && 1 == iMovie->VideoClipCount() )
+                    {
+                    iContainer->SetSelectionMode( CVeiEditVideoContainer::EModePreview );
+                    iContainer->PlayVideo( iMovie->VideoClipInfo( 0 )->DescriptiveName(), iFullScreenSelected );
+                    }
+                else
+                    {
+                    iContainer->SetSelectionMode( CVeiEditVideoContainer::EModePreview );
+                    iContainer->PlayVideo( *iTempFile, iFullScreenSelected );
+                    }
+
+                // @: think should this be put under condition play was started
+                // (actually play starts when "loadingComplete" event comes to NotifyVideoDisplayEvent
+                //StartNaviPaneUpdateL();            
+                break;
+                }
+
+        case EVeiCmdCutVideoTakeSnapshot:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdCutVideoTakeSnapshot" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    iContainer->TakeSnapshotL();
+                    }
+                break;
+                }
+
+        case EVeiCmdCutVideoViewContinue:
+        case EVeiCmdEditVideoViewContinue:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdCutVideoViewContinue||EVeiCmdEditVideoViewContinue" );
+                if (( iRecorder->State() != CMdaAudioClipUtility::ERecording ) && 
+                    ( iRecorder->State() != CMdaAudioClipUtility::ENotReady ) )
+                    {
+                    Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_EMPTY );
+                    Cba()->DrawDeferred();
+
+                    // Continue recording
+                    iRecorder->RecordL();
+                    iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeRecording );
+
+                    UpdateEditNaviLabel();
+                    }
+                break;
+                }
+        case EVeiCmdEditVideoViewEditAudioMove:
+        case EVeiCmdEditVideoViewEditVideoMove:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditAudioMove||EVeiCmdEditVideoViewEditVideoMove" );
+                Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL );
+                Cba()->DrawDeferred();
+
+                index = iContainer->CurrentIndex();
+
+                if ( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio )
+                    {
+                    iOriginalAudioStartPoint = iMovie->AudioClipStartTime( index );
+                    iOriginalAudioDuration = iMovie->AudioClipEditedDuration( index );
+                    }
+                else if ( iContainer->CursorLocation() == VideoEditor::ECursorOnClip )
+                    {
+                    iOriginalVideoClipIndex = index;
+                    }
+                else
+                    {
+                    User::Panic( _L( "VideoEditor" ), 34 );
+                    }
+                iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeMove );
+                UpdateEditNaviLabel();
+                break;
+                }
+            /**
+             * Edit video clip -> Add colour effect
+             */
+        case EVeiCmdEditVideoViewEditVideoColorEffect:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditVideoColorEffect" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    iPopup->ShowEffectSelectionPopupListL();
+                    }
+                break;
+                }
+            /**
+             * Use slow motion
+             */
+        case EVeiCmdEditVideoViewEditVideoSlowMotion:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditVideoSlowMotion" );
+                if ( IsEnoughFreeSpaceToSaveL())
+                    {
+                    Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL );
+                    Cba()->DrawDeferred();
+                    iOriginalVideoSpeed = iMovie->VideoClipSpeed( iContainer->CurrentIndex());
+                    iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeSlowMotion );
+                    iContainer->SetSlowMotionStartValueL( iOriginalVideoSpeed );
+                    iContainer->ArrowsControl();
+                    }
+                break;
+                }
+        case EVeiCmdEditVideoViewEditVideoMute:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditVideoMute" );
+                SetNewTempFileNeeded( ETrue );
+                iMovie->VideoClipSetMuted( iContainer->CurrentIndex(), ETrue );
+                break;
+                }
+        case EVeiCmdEditVideoViewEditVideoUnmute:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditVideoUnmute" );
+                SetNewTempFileNeeded( ETrue );
+                iMovie->VideoClipSetMuted( iContainer->CurrentIndex(), EFalse );
+                break;
+                }
+        case EVeiCmdEditVideoViewEditAudioRemove:
+        case EVeiCmdEditVideoViewEditVideoRemove:
+        case EVeiCmdEditVideoViewEditTextRemove:
+        case EVeiCmdEditVideoViewEditImageRemove:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditAudioRemove||EVeiCmdEditVideoViewEditVideoRemove||EVeiCmdEditVideoViewEditTextRemove||EVeiCmdEditVideoViewEditImageRemove" );
+                RemoveCurrentClipL();
+                break;
+                }
+            /**
+             * Back
+             */
+        case EAknSoftkeyBack:
+                {
+                LOG( KVideoEditorLogFile, "CVeiEditVideoView::HandleCommandL: EAknSoftkeyBack" );
+                LOGFMT( KVideoEditorLogFile, "\tiFullScreenSelected: %d", iFullScreenSelected );
+
+                if ( EditorState() != EEdit || iFullScreenSelected )
+                    {
+                    iFullScreenSelected = EFalse;
+                    iContainer->StopVideo( ETrue );
+                    StopNaviPaneUpdateL();
+                    UpdateEditNaviLabel();
+                    break;
+                    }
+                else if ( !iMovieSavedFlag && ( iMovie->VideoClipCount() > 0 || iMovie->AudioClipCount() > 0 ))
+                    {
+                    HBufC* saveConfirmationString; // String holding the text shown in dialog.
+                    CAknQueryDialog* dlg; // Save confirmation dialog.
+                    TInt saveEditedVideo; // Query result.
+
+                    saveConfirmationString = StringLoader::LoadLC( R_VEI_CONFIRM_EXIT_SAVE, iEikonEnv );
+                    dlg = new( ELeave )CAknQueryDialog( *saveConfirmationString, CAknQueryDialog::ENoTone );
+                    saveEditedVideo = dlg->ExecuteLD( R_VEI_CONFIRMATION_QUERY );
+
+                    if ( !saveEditedVideo )
+                    // Do not save.
+                        {
+                        // Activate videos view.                    
+                        AppUi()->HandleCommandL( EAknCmdExit );
+
+                        iMovie->Reset();
+
+                        iMovieSavedFlag = ETrue; // Movie is saved.
+                        iMovieFirstAddFlag = ETrue; // True for the next edit process.
+
+                        AppUi()->HandleCommandL( aCommand );
+                        }
+                    else
+                        {
+                        if ( SaveL( EProcessingMovieSaveThenQuit ))
+                        // Quit after saving?
+                            {
+                            //iMovieSavedFlag = ETrue;		// Movie is saved.
+                            iMovieFirstAddFlag = ETrue; // True for the next edit process.
+                            iWaitMode = EProcessingMovieSaveThenQuit;
+                            }
+                        }
+
+                    CleanupStack::PopAndDestroy( saveConfirmationString ); 
+                    }
+                // No changes to clip(s) or no clip(s) in time line.
+                else
+                    {
+                    // Remove all clips from edit view (for future use).
+                    iMovie->Reset();
+
+                    iMovieSavedFlag = ETrue; // Movie is saved.
+                    iMovieFirstAddFlag = ETrue; // True for the next edit process.
+                    AppUi()->HandleCommandL( aCommand );
+                    }
+
+                break;
+                }
+            //
+            // Options->Help
+            //
+        case EVeiCmdEditVideoViewHelp:
+                {
+                LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewHelp" );
+                // CS Help launching is handled in Video Editor's AppUi.
+                AppUi()->HandleCommandL( EVeiCmdEditVideoViewHelp );
+                break;
+                }
+            /**
+             * Exit
+             */
+        case EEikCmdExit:
+                {
+                LOG( KVideoEditorLogFile, "\tEEikCmdExit" );
+                // Edited movie is not saved yet and there are video or audio clip(s) at the time line.
+                if ( !iMovieSavedFlag && ( iMovie->VideoClipCount() > 0 || iMovie->AudioClipCount() > 0 ))
+                    {
+                    HBufC* stringholder; // String holding the text shown in dialog.
+                    
+                    CAknQueryDialog* dlg; // Save confirmation dialog.
+                    TInt queryok; // Query result.
+
+                    stringholder = StringLoader::LoadLC( R_VEI_CONFIRM_EXIT_SAVE, iEikonEnv );
+
+                    dlg = new( ELeave )CAknQueryDialog( *stringholder, CAknQueryDialog::ENoTone );
+                    queryok = dlg->ExecuteLD( R_VEI_CONFIRMATION_QUERY );
+
+                    if ( !queryok )
+                        {
+                        iMovie->Reset();
+                        AppUi()->HandleCommandL( aCommand );
+                        }
+                    else
+                        {
+                        SaveL( EProcessingMovieSaveThenQuit );
+                        iWaitMode = EProcessingMovieSaveThenQuit;
+                        }
+
+                    CleanupStack::PopAndDestroy( stringholder );
+                    }
+                else
+                // No changes to clip(s) or no clip(s) in time line.
+                    {
+                    iMovie->Reset(); // Remove all clips from edit view.
+                    AppUi()->HandleCommandL( aCommand ); // Let appUi handle the exit.
+                    }
+                break;
+                }
+        default:
+                {
+                LOG( KVideoEditorLogFile, "\tdefault" );
+                AppUi()->HandleCommandL( aCommand );
+                break;
+                }
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::HandleCommandL: Out" );
+    }
+
+void CVeiEditVideoView::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
+        iPreviewLabel->DecoratedControl()->HandleResourceChange( aType );
+        iEditLabel->DecoratedControl()->HandleResourceChange( aType );
+        iVolumeNavi->DecoratedControl()->HandleResourceChange( aType );
+        iMoveLabel->DecoratedControl()->HandleResourceChange( aType );
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::HandleResourceChange() Out" );
+    }
+
+void CVeiEditVideoView::SetEditorState( TEditorState aState )
+    {
+    LOGFMT3( KVideoEditorLogFile, "CVeiEditVideoView::SetEditorState: in, aState:%d, iEditorState:%d, iFullScreenSelected:%d", aState, iEditorState, iFullScreenSelected );
+
+    CAknTitlePane* titlePane;
+    CEikStatusPane* statusPane;
+    TResourceReader reader1;
+
+    iEditorState = aState;
+
+    switch ( aState )
+        {
+        case EPreview:
+            /*
+            if ( iFullScreenSelected )
+            {
+            // @: this need more elaborating
+            // problem is: after large preview signal and battery pane are black in some phone models
+            //statusPane = ( ( CAknAppUi* )iEikonEnv->EikAppUi() )->StatusPane(); 
+            //statusPane ->MakeVisible( EFalse );
+            Cba()->MakeVisible( EFalse );
+            Cba()->DrawDeferred();
+            }
+            else
+            {
+            iEditorState = EQuickPreview;
+            statusPane = ( ( CAknAppUi* )iEikonEnv->EikAppUi() )->StatusPane(); 
+
+            titlePane = (CAknTitlePane*) statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) );
+            iCoeEnv->CreateResourceReaderLC( reader1, R_VEI_PREVIEW_VIEW_TITLE_NAME );
+            titlePane->SetFromResourceL( reader1 );
+            CleanupStack::PopAndDestroy(); //reader1
+
+            LOG(KVideoEditorLogFile, "CVeiEditVideoView::SetEditorState, 1, setting R_VEI_SOFTKEYS_PREVIEW_PAUSE_BACK");
+            Cba()->SetCommandSetL( R_VEI_SOFTKEYS_PREVIEW_PAUSE_BACK );
+            Cba()->DrawDeferred();
+            }
+             */
+            Cba()->MakeVisible( EFalse );
+            Cba()->DrawDeferred();
+            break;
+        case EQuickPreview:
+                {
+                LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::SetEditorState: 2, iContainer->PreviewState():%d", iContainer->PreviewState());
+                statusPane = (( CAknAppUi* )iEikonEnv->EikAppUi())->StatusPane();
+
+                titlePane = ( CAknTitlePane* )statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ));
+                iCoeEnv->CreateResourceReaderLC( reader1, R_VEI_PREVIEW_VIEW_TITLE_NAME );
+                titlePane->SetFromResourceL( reader1 );
+                CleanupStack::PopAndDestroy(); //reader1
+
+                if (( iContainer->PreviewState() == CVeiEditVideoContainer::EStatePaused ) || 
+                    ( iContainer->PreviewState() == CVeiEditVideoContainer::EStateStopped ))
+                    {
+                    LOG( KVideoEditorLogFile, "CVeiEditVideoView::SetEditorState, 3, setting R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK" );
+                    Cba()->SetCommandSetL( R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK );
+                    }
+                else if (( iContainer->PreviewState() == CVeiEditVideoContainer::EStateOpening ) || 
+                         ( iContainer->PreviewState() == CVeiEditVideoContainer::EStateGettingFrame ) || 
+                         ( iContainer->PreviewState() == CVeiEditVideoContainer::EStateBuffering ))
+                    {
+                    LOG( KVideoEditorLogFile, "CVeiEditVideoView::SetEditorState, 4, setting R_AVKON_SOFTKEYS_EMPTY" );
+                    Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_EMPTY );
+                    }
+                else
+                    {
+                    LOG( KVideoEditorLogFile, "CVeiEditVideoView::SetEditorState, 5, setting R_VEI_SOFTKEYS_PREVIEW_PAUSE_BACK" );
+                    Cba()->SetCommandSetL( R_VEI_SOFTKEYS_PREVIEW_PAUSE_BACK );
+                    }
+                Cba()->DrawDeferred();
+                break;
+                }
+        case EEdit:
+            iContainer->SetRect( AppUi()->ClientRect());
+            statusPane = (( CAknAppUi* )iEikonEnv->EikAppUi())->StatusPane();
+            // @: this needs more elaborating
+            //statusPane ->MakeVisible( ETrue );
+
+            titlePane = ( CAknTitlePane* )statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ));
+            iCoeEnv->CreateResourceReaderLC( reader1, R_VEI_EDIT_VIDEO_VIEW_TITLE_NAME );
+            titlePane->SetFromResourceL( reader1 );
+            CleanupStack::PopAndDestroy(); //reader1
+
+            Cba()->MakeVisible( ETrue );
+            Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
+            Cba()->DrawDeferred();
+            break;
+
+        case EMixAudio:
+            iContainer->SetRect( AppUi()->ClientRect());
+            statusPane = (( CAknAppUi* )iEikonEnv->EikAppUi())->StatusPane();
+
+            titlePane = ( CAknTitlePane* )statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ));
+            iCoeEnv->CreateResourceReaderLC( reader1, R_VEI_AUDIO_MIX_VIEW_TITLE_NAME );
+            titlePane->SetFromResourceL( reader1 );
+            CleanupStack::PopAndDestroy(); //reader1
+
+            Cba()->MakeVisible( ETrue );
+            Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_DONE );
+            Cba()->DrawDeferred();
+            iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeMixingAudio );
+
+            break;
+
+        case EAdjustVolume:
+            iContainer->SetRect( AppUi()->ClientRect());
+            statusPane = (( CAknAppUi* )iEikonEnv->EikAppUi())->StatusPane();
+
+            titlePane = ( CAknTitlePane* )statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ));
+            iCoeEnv->CreateResourceReaderLC( reader1, R_VEI_ADJUST_VOLUME_VIEW_TITLE_NAME );
+            titlePane->SetFromResourceL( reader1 );
+            CleanupStack::PopAndDestroy(); //reader1
+
+            Cba()->MakeVisible( ETrue );
+            //Cba()->SetCommandSetL(R_AVKON_SOFTKEYS_OPTIONS_DONE);			
+            Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL );
+            Cba()->DrawDeferred();
+            iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeAdjustVolume );
+
+            break;
+
+
+        default:
+                {
+                break;
+                }
+        }
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::SetEditorState: Out" );
+    }
+
+
+void CVeiEditVideoView::SendMovieL()
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::SendMovieL() -- SENDING" );
+
+    TEntry fileinfo;
+
+    RFs& fs = iEikonEnv->FsSession();
+    // Rename movie from xxxx.$$$ to defaultfilename from settingsview.
+    // looks better in attachment list..
+
+    // Get default movie name from settings view
+
+    TPtr temppeet = iTempFile->Des();
+
+    TParse parse;
+    parse.Set( iMovieSaveSettings.DefaultVideoName(), &temppeet, NULL );
+
+    TFileName orgPathAndName = parse.FullName();
+
+    TVedVideoFormat movieQuality = iMovie->Format();
+    if ( movieQuality == EVedVideoFormatMP4 )
+        {
+        orgPathAndName.Replace( orgPathAndName.Length() - 4, 4, KExtMp4 );
+        }
+    else
+        {
+        orgPathAndName.Replace( orgPathAndName.Length() - 4, 4, KExt3gp );
+        }
+
+    fs.Replace( *iTempFile, orgPathAndName );
+    iTempFile->Des() = orgPathAndName;
+
+    fs.Entry( *iTempFile, fileinfo );
+
+    DEBUGLOG_ARG( TInt tempFileSize = fileinfo.iSize / 1024 );
+    LOGFMT3( KVideoEditorLogFile, "CVeiEditVideoView::SendMovieL() 1, iWaitMode:%d, tempFileSize:%d, ValidateServiceL:%d", iWaitMode, tempFileSize, iSendAppUi.ValidateServiceL( iGivenSendCommand, TSendingCapabilities( 0, tempFileSize, TSendingCapabilities::ESupportsAttachments )));
+
+    if ( EProcessingMovieSend == iWaitMode 
+                /*&& (iSendAppUi.ValidateServiceL(
+                                iGivenSendCommand, 
+                                TSendingCapabilities( 0, 
+                                                      tempFileSize, 
+                                                      TSendingCapabilities::ESupportsAttachments ) ) ) */ )
+        {
+        RFs shareFServer;
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::SendMovieL: shareFServer connect." );
+
+        User::LeaveIfError( shareFServer.Connect());
+        shareFServer.ShareProtected();
+        CleanupClosePushL < RFs > ( shareFServer );
+
+        RFile openFileHandle;
+
+        TInt err = openFileHandle.Open( shareFServer, * iTempFile, EFileRead | EFileShareReadersOnly );
+        if ( KErrNone != err )
+            {
+            LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::SendMovieL 2: Could not open file %S with EFileShareReadersOnly. Trying EFileShareAny", iTempFile );
+            User::LeaveIfError( openFileHandle.Open( shareFServer, * iTempFile, EFileRead | EFileShareAny ));
+            }
+
+        CMessageData* messageData = CMessageData::NewLC();
+        messageData->AppendAttachmentHandleL( openFileHandle );
+
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::SendMovieL() 3" );
+
+        iSendAppUi.CreateAndSendMessageL( iGivenSendCommand, messageData, KNullUid, EFalse );
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::SendMovieL() 4" );
+        CleanupStack::PopAndDestroy( messageData );
+
+        CleanupStack::PopAndDestroy( &shareFServer ); // shareFServer.Close();
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::SendMovieL 5: shareFServer closed." );
+        }
+
+    DoUpdateEditNaviLabelL();
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::SendMovieL() Out" );
+    }
+
+
+void CVeiEditVideoView::StartTempFileProcessingL()
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL: In" );
+
+    RFs& fs = iEikonEnv->FsSession();
+
+    TBool fileExists( ETrue );
+    if ( iTempFile )
+        {
+        fileExists = BaflUtils::FileExists( fs, * iTempFile );
+        }
+
+    /* to save from unnecessary processing before preview
+    prerequisites:
+    -user selected preview
+    -no movie modifying actions taken by user before preview (iUpdateTemp is EFalse)	 
+     */
+    if ( EProcessingMoviePreview == iWaitMode && !iUpdateTemp && !iTempFile && 1 == iMovie->VideoClipCount())
+        {
+        if ( iFullScreenSelected )
+            {
+            iContainer->SetBlackScreen( ETrue );
+            iContainer->SetRect( AppUi()->ApplicationRect());
+            }
+
+        iContainer->SetSelectionMode( CVeiEditVideoContainer::EModePreview );
+        iContainer->PlayVideoFileL( iMovie->VideoClipInfo( 0 )->DescriptiveName(), iFullScreenSelected );
+        }
+    else if ( EProcessingMovieTrimMms == iWaitMode && !iUpdateTemp && !iTempFile && 1 == iMovie->VideoClipCount() && !FitsToMmsL())
+        {
+        /*
+        Read documentation of FitsToMmsL() in the header file
+         */
+        TBuf8 < KMaxFileName > conv8Filename;
+        CnvUtfConverter::ConvertFromUnicodeToUtf8( conv8Filename, iMovie->VideoClipInfo( 0 )->DescriptiveName());
+        iMovie->UnregisterMovieObserver( iContainer );
+        iMovie->UnregisterMovieObserver( this );
+        AppUi()->ActivateLocalViewL( TUid::Uid( EVeiTrimForMmsView ), TUid::Uid( 0 ), conv8Filename );
+        }
+    else if ( iUpdateTemp || !fileExists || ( !iTempFile ))
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL() 1, -- NEW TEMP" );
+
+        Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_EMPTY );
+        Cba()->DrawDeferred();
+        if ( iTempFile && fileExists )
+            {
+            User::LeaveIfError( fs.Delete( *iTempFile ));
+            delete iTempFile;
+            iTempFile = NULL;
+            }
+
+        if ( !IsEnoughFreeSpaceToSaveL()) // modifies iMemoryInUse
+            {
+            return ;
+            }
+
+        iTempFile = HBufC::NewL( KMaxFileName );
+        iTempMaker->GenerateTempFileName( *iTempFile, iMemoryInUse, iMovie->Format());
+        LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL 2, iTempFile:%S", iTempFile );
+
+        TVeiSettings movieSaveSettings;
+
+        STATIC_CAST( CVeiAppUi* , AppUi())->ReadSettingsL( movieSaveSettings );
+
+        TInt settingsSaveQuality = movieSaveSettings.SaveQuality();
+        CVedMovie::TVedMovieQuality saveQuality;
+
+        switch ( settingsSaveQuality )
+            {
+            case TVeiSettings::EMmsCompatible: 
+                {
+                saveQuality = CVedMovie::EQualityMMSInteroperability;
+                break;                    
+                }
+            case TVeiSettings::EMedium: 
+                {
+                saveQuality = CVedMovie::EQualityResolutionMedium;
+                break;                    
+                }
+            case TVeiSettings::EBest: 
+                {
+                saveQuality = CVedMovie::EQualityResolutionHigh;
+                break;                    
+                }
+            case TVeiSettings::EAuto: default:
+                {
+                saveQuality = CVedMovie::EQualityAutomatic;
+                break;                    
+                }
+            }
+
+        iMovie->SetQuality( saveQuality );
+        iBackupSaveQuality = saveQuality;
+
+        if ( EProcessingMovieTrimMms == iWaitMode )
+            {
+            if ( saveQuality != CVedMovie::EQualityMMSInteroperability )
+                {
+                iMovie->SetQuality( CVedMovie::EQualityMMSInteroperability );
+                SetNewTempFileNeeded( ETrue );
+                }
+            else
+                {
+                SetNewTempFileNeeded( EFalse );
+                }
+            }
+
+        TInt err;
+        LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL 3, calling iMovie->Process(%S)", iTempFile );
+        TRAP( err, iMovie->ProcessL( *iTempFile, * this ));
+        LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL 4, err:%d", err );
+        if ( err )
+            {
+            Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
+            Cba()->DrawDeferred();
+            ShowGlobalErrorNote( err );
+            }
+        }
+    else
+    /* use old temp file*/
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL() 5, -- OLD TEMP" );
+        if ( EProcessingMovieSend == iWaitMode )
+            {
+            SendMovieL();
+            }
+        else if ( EProcessingMovieTrimMms == iWaitMode )
+            {
+            if ( iMovie->IsMovieMMSCompatible())
+                {
+                LOG( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL 6, MMS COMPATIBLE" );
+
+                TEntry entry;
+                User::LeaveIfError( fs.Entry( *iTempFile, entry ));
+                TInt tempFileSize = entry.iSize / 1024;
+                TInt maxMmsSize = STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->GetMaxMmsSize();
+
+                if ( tempFileSize < maxMmsSize )
+                    {
+                    LOG( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL() 7, -- MMS SIZE OK" );
+                    iWaitMode = EProcessingMovieSend;
+                    SendMovieL();
+                    }
+                else
+                    {
+                    SetNewTempFileNeeded( EFalse );
+
+                    LOG( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL() 8, -- TRIM MMS" );
+
+                    TBuf8 < KMaxFileName > conv8Filename;
+                    CnvUtfConverter::ConvertFromUnicodeToUtf8( conv8Filename, * iTempFile );
+                    iMovie->UnregisterMovieObserver( iContainer );
+                    iMovie->UnregisterMovieObserver( this );
+                    AppUi()->ActivateLocalViewL( TUid::Uid( EVeiTrimForMmsView ), TUid::Uid( 0 ), conv8Filename );
+                    }
+                }
+            else
+                {
+                LOG( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL() 9, -- NO MMS COMPATIBLE" );
+
+                TInt err;
+                if ( EProcessingMovieTrimMms == iWaitMode )
+                    {
+                    iMovie->SetQuality( CVedMovie::EQualityMMSInteroperability );
+                    }
+
+                TRAP( err, iMovie->ProcessL( *iTempFile, * this ));
+
+                if ( err )
+                    {
+                    ShowGlobalErrorNote( err );
+                    }
+                }
+            }
+        else if ( EProcessingMoviePreview == iWaitMode )
+            {
+            if ( iFullScreenSelected )
+                {
+                iContainer->SetBlackScreen( ETrue );
+                iContainer->SetRect( AppUi()->ApplicationRect());
+                }
+            iContainer->SetSelectionMode( CVeiEditVideoContainer::EModePreview );
+            iContainer->PlayVideoFileL( *iTempFile, iFullScreenSelected );
+            }
+        else if (( EProcessingMovieSave == iWaitMode ) || ( EProcessingMovieSaveThenQuit == iWaitMode ))
+            {
+            CFileMan* fileman = CFileMan::NewL( fs );
+            CleanupStack::PushL( fileman );
+
+            if ( iTempFile->Left( 1 ) == iSaveToFileName->Left( 1 ))
+                {
+                fileman->Rename( *iTempFile, * iSaveToFileName );
+                }
+            else
+                {
+                fileman->Move( *iTempFile, * iSaveToFileName );
+                }
+
+            CleanupStack::PopAndDestroy( fileman );
+
+            HBufC* stringholder = StringLoader::LoadL( R_VEI_NOTE_VIDEO_SAVED, iEikonEnv );
+            CleanupStack::PushL( stringholder );
+            iWaitMode = ENotWaiting;
+            ShowInformationNoteL( *stringholder );
+            iMovieSavedFlag = ETrue;
+            CleanupStack::PopAndDestroy( stringholder);
+
+            UpdateMediaGalleryL();
+            }
+        }
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL: Out" );
+    }
+
+void CVeiEditVideoView::InsertNewAudio()
+    {
+    Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_EMPTY );
+    Cba()->DrawDeferred();
+
+    iContainer->SetRecordedAudio( ETrue );
+
+    TInt64 startTimeInt = 0;
+    TInt64 durationInt = 1000000;
+    TInt currIndex( 0 );
+
+    if ((( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio ) || 
+         ( iContainer->CursorLocation() == VideoEditor::ECursorOnEmptyAudioTrack )) && 
+         ( iMovie->AudioClipCount() > 0 ))
+        {
+        currIndex = iContainer->CurrentIndex() + 1;
+        startTimeInt = iMovie->AudioClipEndTime( iContainer->CurrentIndex()).Int64();
+        }
+    else
+        {
+        currIndex = iMovie->AudioClipCount() - 1;
+        if ( currIndex >= 0 )
+            {
+            startTimeInt = iMovie->AudioClipEndTime( currIndex ).Int64();
+            }
+        else
+            {
+            currIndex = 0;
+            }
+        }
+
+    while ( currIndex < iMovie->AudioClipCount())
+        {
+        // safety margin: it is not possible to insert new audio if there is less than 1s between clips
+        TInt64 adjustedClipStartTimeInt = iMovie->AudioClipStartTime( currIndex ).Int64() - 1000000;
+
+        if ( startTimeInt > adjustedClipStartTimeInt )
+            {
+            startTimeInt = iMovie->AudioClipEndTime( currIndex ).Int64();
+            currIndex++;
+            }
+        else
+            {
+            break;
+            }
+        }
+
+    if ( currIndex < iMovie->AudioClipCount())
+        {
+        TInt64 endTimeInt = startTimeInt + durationInt;
+        TInt64 nextStartTimeInt = iMovie->AudioClipStartTime( currIndex ).Int64();
+
+        if ( endTimeInt > nextStartTimeInt )
+            {
+            durationInt = nextStartTimeInt - startTimeInt;
+            }
+        }
+
+    iContainer->SetRecordedAudioStartTime( TTimeIntervalMicroSeconds( startTimeInt ));
+    iContainer->SetRecordedAudioDuration( TTimeIntervalMicroSeconds( durationInt ));
+    iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeRecordingSetStart );
+    iContainer->SetCursorLocation( VideoEditor::ECursorOnAudio );
+
+    UpdateEditNaviLabel();
+
+    /* Create temp file. */
+    if ( iTempRecordedAudio )
+        {
+        delete iTempRecordedAudio;
+        iTempRecordedAudio = NULL;
+        }
+
+    iTempRecordedAudio = HBufC::NewL( KMaxFileName );
+    iTempMaker->GenerateTempFileName( *iTempRecordedAudio, iMemoryInUse, iMovie->Format(), ETrue );
+
+    /* Open the file, this is asynchronous so we'll come to our callback. */
+    iRecorder->OpenFileL( *iTempRecordedAudio );
+    }
+
+TBool CVeiEditVideoView::IsEnoughFreeSpaceToSaveL( TInt aBytesToAdd )const
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::IsEnoughFreeSpaceToSaveL: in" );
+    RFs& fs = iEikonEnv->FsSession();
+
+    TBool spaceBelowCriticalLevel( EFalse );
+
+    TInt sizeEstimate = iMovie->GetSizeEstimateL();
+    sizeEstimate += aBytesToAdd;
+
+    if ( iEditorState == EQuickPreview )
+        {
+        TInt snapShotSize = iContainer->SnapshotSize();
+        if ( snapShotSize != 0 )
+            {
+            sizeEstimate = snapShotSize;
+            }
+        }
+
+    LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::IsEnoughFreeSpaceToSaveL: 2, needed space: %d", sizeEstimate );
+
+    if ( iMemoryInUse == CAknMemorySelectionDialog::EPhoneMemory )
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::IsEnoughFreeSpaceToSaveL: " );
+        spaceBelowCriticalLevel = SysUtil::DiskSpaceBelowCriticalLevelL( &fs, sizeEstimate, EDriveC );
+        }
+    else
+        {
+        LOG( KVideoEditorLogFile, "\tMmc selected" );
+
+        spaceBelowCriticalLevel = SysUtil::MMCSpaceBelowCriticalLevelL( &fs, sizeEstimate );
+        }
+
+    if ( spaceBelowCriticalLevel )
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::IsEnoughFreeSpaceToSaveL: 3, space is below critical level" );
+        ShowErrorNote( R_VEI_MEMORY_RUNNING_OUT );
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::IsEnoughFreeSpaceToSaveL out" );
+
+    return !spaceBelowCriticalLevel;
+    }
+
+
+TBool CVeiEditVideoView::IsEnoughFreeSpaceToSave2L( TInt aBytesToAdd )const
+    {
+    RFs& fs = iEikonEnv->FsSession();
+    TBool spaceBelowCriticalLevel( EFalse );
+    TInt sizeEstimate = iMovie->GetSizeEstimateL();
+    sizeEstimate += aBytesToAdd;
+
+    if ( iMemoryInUse == CAknMemorySelectionDialog::EPhoneMemory )
+        {
+        spaceBelowCriticalLevel = SysUtil::DiskSpaceBelowCriticalLevelL( &fs, sizeEstimate, EDriveC );
+        }
+    else
+        {
+        spaceBelowCriticalLevel = SysUtil::MMCSpaceBelowCriticalLevelL( &fs, sizeEstimate );
+        }
+
+    if ( !spaceBelowCriticalLevel )
+        {
+        return ETrue;
+        }
+    else
+        {
+        return EFalse;
+        }
+    }
+
+TBool CVeiEditVideoView::FitsToMmsL()
+    {
+    /*
+    Read documentation of FitsToMmsL() in the header file
+     */
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::FitsToMmsL() in" );
+    TInt maxMmsSize = STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->GetMaxMmsSize();
+
+    CVedMovie::TVedMovieQuality origQuality = iMovie->Quality();
+    iMovie->SetQuality( CVedMovie::EQualityMMSInteroperability );
+    TInt videoTimeLineSize = iMovie->GetSizeEstimateL() / 1024;
+    iMovie->SetQuality( origQuality );
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::FitsToMmsL() out" );
+    videoTimeLineSize = videoTimeLineSize * 1.1;
+    return videoTimeLineSize < maxMmsSize;
+    }
+
+void CVeiEditVideoView::BrowseStartTransition( TBool aUpOrDown )
+    {
+    TInt currentEffect;
+    TInt currentIndex = iContainer->CurrentIndex();
+
+    if ( currentIndex == 0 )
+        {
+        currentEffect = iMovie->StartTransitionEffect();
+        if ( aUpOrDown )
+            {
+            if ( !( TVedStartTransitionEffect( currentEffect - 1 ) < EVedStartTransitionEffectNone ))
+                {
+                iMovie->SetStartTransitionEffect( TVedStartTransitionEffect( currentEffect - 1 ));
+                }
+            else
+                {
+                iMovie->SetStartTransitionEffect( TVedStartTransitionEffect( EVedStartTransitionEffectLast - 1 ));
+                }
+            }
+        else
+            {
+            if ( !( TVedStartTransitionEffect( currentEffect + 1 ) >= EVedStartTransitionEffectLast ))
+                {
+                iMovie->SetStartTransitionEffect( TVedStartTransitionEffect( currentEffect + 1 ));
+                }
+            else
+                {
+                iMovie->SetStartTransitionEffect( TVedStartTransitionEffect( EVedStartTransitionEffectNone ));
+                }
+            }
+        }
+    else if ( currentIndex < iMovie->VideoClipCount())
+        {
+        currentEffect = iMovie->MiddleTransitionEffect( currentIndex - 1 );
+
+        if ( aUpOrDown )
+            {
+            if ( !( TVedMiddleTransitionEffect( currentEffect - 1 ) < EVedMiddleTransitionEffectNone ))
+                {
+                iMovie->SetMiddleTransitionEffect( TVedMiddleTransitionEffect( currentEffect - 1 ), currentIndex - 1 );
+                }
+            else
+                {
+                iMovie->SetMiddleTransitionEffect( TVedMiddleTransitionEffect( EVedMiddleTransitionEffectLast - 1 ), currentIndex - 1 );
+                }
+            }
+        else
+            {
+            if ( !( TVedMiddleTransitionEffect( currentEffect + 1 ) >= EVedMiddleTransitionEffectLast ))
+                {
+                iMovie->SetMiddleTransitionEffect( TVedMiddleTransitionEffect( currentEffect + 1 ), currentIndex - 1 );
+                }
+            else
+                {
+                iMovie->SetMiddleTransitionEffect( TVedMiddleTransitionEffect( EVedMiddleTransitionEffectNone ), currentIndex - 1 );
+                }
+            }
+        }
+    else
+        {
+        currentEffect = iMovie->EndTransitionEffect();
+
+        if ( aUpOrDown )
+            {
+            if ( !( TVedEndTransitionEffect( currentEffect - 1 ) < EVedEndTransitionEffectNone ))
+                {
+                iMovie->SetEndTransitionEffect( TVedEndTransitionEffect( currentEffect - 1 ));
+                }
+            else
+                {
+                iMovie->SetEndTransitionEffect( TVedEndTransitionEffect( EVedEndTransitionEffectLast - 1 ));
+                }
+            }
+        else
+            {
+            if ( !( TVedEndTransitionEffect( currentEffect + 1 ) >= EVedEndTransitionEffectLast ))
+                {
+                iMovie->SetEndTransitionEffect( TVedEndTransitionEffect( currentEffect + 1 ));
+                }
+            else
+                {
+                iMovie->SetEndTransitionEffect( TVedEndTransitionEffect( EVedEndTransitionEffectNone ));
+                }
+            }
+        }
+
+    }
+
+void CVeiEditVideoView::ShowErrorNote( const TInt aResourceId, TInt /*aError*/ )const
+    {
+    CVeiErrorUI::ShowErrorNote( *iEikonEnv, aResourceId );
+    }
+
+void CVeiEditVideoView::ShowGlobalErrorNote( const TInt aError )const
+    {
+    iErrorUI->ShowGlobalErrorNote( aError );
+    }
+
+void CVeiEditVideoView::ShowInformationNoteL( const TDesC& aMessage )const
+    {
+    CAknInformationNote* note = new( ELeave )CAknInformationNote( ETrue );
+    note->ExecuteLD( aMessage );
+    }
+
+void CVeiEditVideoView::ShowVolumeLabelL( TInt aVolume )
+    {
+    STATIC_CAST( CVeiTimeLabelNavi* , iPreviewLabel->DecoratedControl())->SetVolumeIconVisibilityL( ETrue );
+
+    if ( iVolumeHider && iVolumeHider->IsActive())
+        {
+        iVolumeHider->Cancel();
+        }
+    if ( aVolume == 0 )
+        {
+        STATIC_CAST( CVeiTimeLabelNavi* , iPreviewLabel->DecoratedControl())->SetVolumeIconVisibilityL( EFalse );
+        HideVolume();
+        return ;
+        }
+
+    iNaviPane->PushL( *iVolumeNavi );
+    if ( !iVolumeHider )
+        {
+        iVolumeHider = CPeriodic::NewL( CActive::EPriorityLow );
+        }
+    iVolumeHider->Start( 1000000, 1000000, TCallBack( CVeiEditVideoView::HideVolumeCallbackL, this ));
+
+    STATIC_CAST( CAknVolumeControl* , iVolumeNavi->DecoratedControl())->SetValue( aVolume );
+
+    if ( aVolume > KMinVolume + 1 )
+        {
+        STATIC_CAST( CVeiTimeLabelNavi* , iPreviewLabel->DecoratedControl())->SetLeftArrowVisibilityL( ETrue );
+        }
+    else
+        {
+        STATIC_CAST( CVeiTimeLabelNavi* , iPreviewLabel->DecoratedControl())->SetLeftArrowVisibilityL( EFalse );
+        }
+
+    if ( aVolume < KMaxVolume )
+        {
+        STATIC_CAST( CVeiTimeLabelNavi* , iPreviewLabel->DecoratedControl())->SetRightArrowVisibilityL( ETrue );
+        }
+    else
+        {
+        STATIC_CAST( CVeiTimeLabelNavi* , iPreviewLabel->DecoratedControl())->SetRightArrowVisibilityL( EFalse );
+        }
+
+    }
+
+void CVeiEditVideoView::RemoveCurrentClipL()
+    {
+    if ( !iContainer )
+        {
+        return ;
+        }
+    TParse fp;
+
+    if ( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio )
+        {
+        if ( iMovie->AudioClipCount() == 0 )
+            {
+            return ;
+            }
+        CVedAudioClipInfo* audioclipinfo = iMovie->AudioClipInfo( iContainer->CurrentIndex());
+        fp.Set( audioclipinfo->FileName(), NULL, NULL );
+        }
+    else
+        {
+        if ( iMovie->VideoClipCount() == 0 )
+            {
+            return ;
+            }
+
+        /* Get filename to remove query. */
+        TBool isFile( iMovie->VideoClipInfo( iContainer->CurrentIndex())->Class() == EVedVideoClipClassFile );
+        CVedVideoClipInfo* videoclipinfo = iMovie->VideoClipInfo( iContainer->CurrentIndex());
+
+        if ( isFile )
+            {
+            fp.Set( videoclipinfo->FileName(), NULL, NULL );
+            }
+        else
+            {
+            fp.Set( videoclipinfo->DescriptiveName(), NULL, NULL );
+            }
+        }
+
+    HBufC* stringholder = StringLoader::LoadL( R_VEI_REMOVE_CLIP_QUERY, fp.Name(), iEikonEnv );
+    CleanupStack::PushL( stringholder );
+    CAknQueryDialog* dlg = new( ELeave )CAknQueryDialog( *stringholder, CAknQueryDialog::ENoTone );
+    TInt queryok = dlg->ExecuteLD( R_VEI_CONFIRMATION_QUERY );
+    CleanupStack::PopAndDestroy( stringholder );
+
+    if ( queryok )
+        {
+        TUint currentIndex = iContainer->GetAndDecrementCurrentIndex();
+
+        if ( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio )
+            {
+            iMovie->RemoveAudioClip( currentIndex );
+            }
+        else if ( iContainer->CursorLocation() == VideoEditor::ECursorOnClip )
+            {
+            iMovie->RemoveVideoClip( currentIndex );
+            }
+        else
+            {
+            ShowErrorNote( R_VEI_ERROR_NOTE );
+            }
+        }
+    }
+
+
+TInt CVeiEditVideoView::AddClipL( const TDesC& aFilename, TBool aStartNow )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::AddClipL: In" );
+
+    if ( !iContainer )
+        {
+        iContainer = new( ELeave )CVeiEditVideoContainer( *iMovie, * this );
+        iContainer->SetMopParent( this );
+        iContainer->ConstructL( AppUi()->ClientRect());
+        AppUi()->AddToStackL( *this, iContainer );
+        }
+
+    iMediaQueue->InsertMediaL( aFilename );
+
+    if ( aStartNow )
+        {
+        iMediaQueue->StartProcessingL();
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::AddClipL: Out" );
+    return KErrNone;
+    }
+
+
+void CVeiEditVideoView::AddNext()
+    {
+    iMediaQueue->GetNext();
+    }
+
+TBool CVeiEditVideoView::SaveL( TWaitMode aQuitAfterSaving )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::SaveL: In" );
+    RFs& fs = iEikonEnv->FsSession();
+
+    TParse file;
+    TFileName newname;
+
+    // Get default movie name from settings view	
+    CAknMemorySelectionDialog::TMemory memory( iMovieSaveSettings.MemoryInUse());
+
+    if ( memory == CAknMemorySelectionDialog::EPhoneMemory )
+        {
+        newname = PathInfo::PhoneMemoryRootPath();
+        }
+    else
+        {
+        newname = PathInfo::MemoryCardRootPath();
+        }
+
+    newname.Append( PathInfo::VideosPath());
+
+    TVedVideoFormat movieQuality = iMovie->Format();
+    if ( movieQuality == EVedVideoFormatMP4 )
+        {
+        newname.Append( KExtMp4 );
+        }
+    else
+        {
+        newname.Append( KExt3gp );
+        }
+
+    file.Set( iMovieSaveSettings.DefaultVideoName(), &newname, NULL );
+
+    TInt error( KErrNone );
+    error = fs.MkDirAll( file.DriveAndPath());
+
+    if (( error != KErrAlreadyExists ) && ( error != KErrNone ))
+        {
+        return EFalse;
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::SaveL: 2" );
+    if ( IsEnoughFreeSpaceToSaveL())
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::SaveL: 3" );
+        //FileNameQuery
+        newname.Zero();
+        newname.Append( file.FullName());
+
+        CApaApplication::GenerateFileName( fs, newname );
+        CAknFileNamePromptDialog* dlg = CAknFileNamePromptDialog::NewL();
+        CleanupStack::PushL( dlg );
+
+        HBufC* filenametitle = StringLoader::LoadLC( R_VEI_QUERY_FILE_NAME, iEikonEnv );
+
+        dlg->SetTitleL( *filenametitle );
+        CleanupStack::PopAndDestroy( filenametitle );
+
+        TBool namegiven = dlg->ExecuteL( newname );
+        CleanupStack::PopAndDestroy( dlg );
+
+        if ( namegiven )
+            {
+            newname.Insert( 0, file.DriveAndPath());
+
+            file.Set( newname, NULL, NULL );
+
+            if ( BaflUtils::FileExists( fs, newname ))
+                {
+                TBool overWrite;
+                CAknQueryDialog* queryDlg;
+
+                HBufC* overWriteConfirmationString;
+                overWriteConfirmationString = StringLoader::LoadLC( R_VEI_CONFIRM_OVERWRITE, file.Name(), iEikonEnv );
+                queryDlg = new( ELeave )CAknQueryDialog( *overWriteConfirmationString, CAknQueryDialog::ENoTone );
+                overWrite = queryDlg->ExecuteLD( R_VEI_CONFIRMATION_QUERY );
+
+                CleanupStack::PopAndDestroy( overWriteConfirmationString );
+                if ( !overWrite )
+                    {
+                    return EFalse;
+                    }
+                }
+
+            iWaitMode = aQuitAfterSaving;
+
+            if ( iSaveToFileName )
+                {
+                delete iSaveToFileName;
+                iSaveToFileName = NULL;
+                }
+
+            iSaveToFileName = HBufC::NewL( newname.Length());
+            *iSaveToFileName = newname;
+            LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::SaveL: 4, iSaveToFileName:%S", iSaveToFileName );
+            StartTempFileProcessingL();
+
+            return ETrue;
+            }
+        else
+            {
+            return EFalse;
+            }
+        }
+
+    else
+        {
+        return EFalse;
+        }
+    }
+
+
+// ----------------------------------------------------------------------------
+// CVeiEditVideoView::CheckMemoryCardAvailability()
+//
+//  Checks the memory card availability if MMC is selected as save store in
+//  application settings. An information note is shown in following
+//  situations:
+//  - MMC not inserted
+//  - MMC corrupted (unformatted)
+//  [- MMC is read-only (not implemented)]
+//  
+//  If note is popped up, this function waits until it's dismissed.
+// ----------------------------------------------------------------------------
+//
+void CVeiEditVideoView::CheckMemoryCardAvailabilityL()
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::CheckMemoryCardAvailability(): in" );
+
+    // Read the video editor settings from ini file.
+
+    iChangedFromMMCToPhoneMemory = EFalse;
+
+    TVeiSettings settings;
+    STATIC_CAST( CVeiAppUi* , AppUi())->ReadSettingsL( settings );
+
+    CAknMemorySelectionDialog::TMemory memoryInUse( settings.MemoryInUse());
+
+    // Check the MMC accessibility only if MMC is used as saving store.
+    if ( memoryInUse == CAknMemorySelectionDialog::EMemoryCard )
+        {
+        RFs& fs = iEikonEnv->FsSession();
+        TDriveInfo driveInfo;
+
+        User::LeaveIfError( fs.Drive( driveInfo, KMmcDrive ));
+
+        // Media is not present (MMC card not inserted).
+        if ( driveInfo.iType == EMediaNotPresent )
+            {
+            LOG( KVideoEditorLogFile, "CVeiEditVideoView::CheckMemoryCardAvailability(): no media" );
+            iChangedFromMMCToPhoneMemory = ETrue;
+
+            settings.MemoryInUse() = CAknMemorySelectionDialog::EPhoneMemory;
+            STATIC_CAST( CVeiAppUi* , AppUi())->WriteSettingsL( settings );
+            }
+        // Media is present
+        else
+            {
+            LOG( KVideoEditorLogFile, "CVeiEditVideoView::CheckMemoryCardAvailability(): media present" );
+
+            TVolumeInfo volumeInfo;
+            TInt volumeErr = fs.Volume( volumeInfo, KMmcDrive );
+            LOGFMT( KVideoEditorLogFile, "CEditVideoView::CheckMemoryCardAvailability() Volume(): %d", volumeErr );
+
+            // Show note if media is corrupted/unformatted.
+            if ( volumeErr == KErrCorrupt )
+                {
+                HBufC* noteText = StringLoader::LoadLC( R_VED_MMC_NOT_INSERTED, iEikonEnv );
+                CAknInformationNote* informationNote = new( ELeave )CAknInformationNote( ETrue );
+                informationNote->ExecuteLD( *noteText );
+
+                CleanupStack::PopAndDestroy( noteText );
+
+                settings.MemoryInUse() = CAknMemorySelectionDialog::EPhoneMemory;
+                STATIC_CAST( CVeiAppUi* , AppUi())->WriteSettingsL( settings );
+                }
+            }
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::CheckMemoryCardAvailability(): out" );
+    }
+
+void CVeiEditVideoView::UpdateEditNaviLabel()const
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::UpdateEditNaviLabel(): In" );
+    if ( !iContainer )
+        {
+        return ;
+        }
+
+    TRAPD( err, DoUpdateEditNaviLabelL());
+
+    if ( err != KErrNone )
+        {
+        ShowGlobalErrorNote( err );
+        }
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::UpdateEditNaviLabel(): In" );
+    }
+
+void CVeiEditVideoView::DoUpdateEditNaviLabelL()const
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL(): In" );
+
+    HBufC* buf;
+
+    CAknNavigationDecorator* currentDecorator = iNaviPane->Top();
+
+    iNaviPane->Pop( iMoveLabel );
+    iNaviPane->Pop( iPreviewLabel );
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL(): navi labels popped" );
+
+    TBool leftArrowVisible = EFalse;
+    TBool rightArrowVisible = EFalse;
+
+    TInt currentIndex = iContainer->CurrentIndex();
+
+    TInt test = iContainer->SelectionMode();
+
+    // Draw the time indicators to the navi pane in Small preview state.
+    // However, if the volume indicator is being show, do not draw the time label
+    if ( iContainer->SelectionMode() == CVeiEditVideoContainer::EModePreview && !iFullScreenSelected && !iVolumeHider )
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL(): iContainer->SelectionMode() == CVeiEditVideoContainer::EModePreview && !iFullScreenSelected && !iVolumeHider" );
+
+        TTime elapsed( iContainer->PlaybackPositionL().Int64());
+        TTime total( iContainer->TotalLength().Int64());
+
+        TBuf < 16 > elapsedBuf;
+        TBuf < 16 > totalBuf;
+
+        HBufC* dateFormatString;
+
+        // check if time is over 99:59
+        if (( total.Int64() / 1000 ) < 3600000 ) 
+            {
+            dateFormatString = iEikonEnv->AllocReadResourceLC( R_QTN_TIME_DURAT_MIN_SEC );
+            }
+        else
+            {
+            dateFormatString = iEikonEnv->AllocReadResourceLC( R_QTN_TIME_DURAT_LONG );
+            }
+
+        elapsed.FormatL( elapsedBuf, * dateFormatString );
+        total.FormatL( totalBuf, * dateFormatString );
+        CleanupStack::PopAndDestroy( dateFormatString );
+
+        CDesCArrayFlat* strings = new CDesCArrayFlat( 2 );
+        CleanupStack::PushL( strings );
+        strings->AppendL( elapsedBuf );
+        strings->AppendL( totalBuf );
+        HBufC* stringholder = StringLoader::LoadL( R_VEI_NAVI_TIME, * strings, iEikonEnv );
+        CleanupStack::PopAndDestroy( strings );
+        CleanupStack::PushL( stringholder );
+
+        STATIC_CAST( CVeiTimeLabelNavi* , iPreviewLabel->DecoratedControl())->SetLabelL( stringholder->Des());
+
+        CleanupStack::PopAndDestroy( stringholder );
+
+        iNaviPane->PushL( *iPreviewLabel );
+        }
+
+
+    else if ( iContainer->SelectionMode() == CVeiEditVideoContainer::EModeMove )
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL(): iContainer->SelectionMode() == CVeiEditVideoContainer::EModeMove" );
+
+        if ( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio )
+            {
+            buf = StringLoader::LoadLC( R_VEI_MOVE_AUDIO_NAVILABEL, iEikonEnv );
+
+            TTimeIntervalMicroSeconds startTime = iMovie->AudioClipStartTime( currentIndex );
+
+            if (( currentIndex == 0 ) && ( startTime > TTimeIntervalMicroSeconds( 0 )))
+                {
+                leftArrowVisible = ETrue;
+                }
+            else
+                {
+                if ( currentIndex >= 1 )
+                    {
+                    TTimeIntervalMicroSeconds prevEndTime = iMovie->AudioClipEndTime( currentIndex - 1 );
+                    TTimeIntervalMicroSeconds modifiedStartTime = TTimeIntervalMicroSeconds( startTime.Int64() - 100000 );
+
+                    if ( modifiedStartTime > prevEndTime )
+                        {
+                        leftArrowVisible = ETrue;
+                        }
+                    }
+                }
+
+            if ( currentIndex < ( iMovie->AudioClipCount() - 1 ))
+                {
+                TTimeIntervalMicroSeconds modifiedEndTime = TTimeIntervalMicroSeconds( iMovie->AudioClipEndTime( currentIndex ).Int64() + 100000 );
+                TTimeIntervalMicroSeconds nextStartTime = iMovie->AudioClipStartTime( currentIndex + 1 );
+                if ( modifiedEndTime < nextStartTime )
+                    {
+                    rightArrowVisible = ETrue;
+                    }
+                }
+
+            if ( currentIndex == iMovie->AudioClipCount() - 1 )
+                {
+                rightArrowVisible = ETrue;
+                }
+            }
+        else
+            {
+            buf = StringLoader::LoadLC( R_VEI_MOVE_VIDEO_NAVILABEL, iEikonEnv );
+
+            if ( currentIndex > 0 )
+                {
+                leftArrowVisible = ETrue;
+                }
+            if ( currentIndex < iMovie->VideoClipCount() - 1 )
+                {
+                rightArrowVisible = ETrue;
+                }
+            }
+
+        STATIC_CAST( CAknNaviLabel* , iMoveLabel->DecoratedControl())->SetTextL( *buf );
+
+        CleanupStack::PopAndDestroy( buf );
+
+        iMoveLabel->DrawNow();
+
+        iMoveLabel->MakeScrollButtonVisible( ETrue );
+        iMoveLabel->SetScrollButtonDimmed( CAknNavigationDecorator::ELeftButton, !leftArrowVisible );
+        iMoveLabel->SetScrollButtonDimmed( CAknNavigationDecorator::ERightButton, !rightArrowVisible );
+
+        iNaviPane->PushL( *iMoveLabel );
+        }
+    else if ( iContainer->SelectionMode() == CVeiEditVideoContainer::EModeDuration )
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL(): iContainer->SelectionMode() == CVeiEditVideoContainer::EModeDuration" );
+
+        buf = StringLoader::LoadLC( R_VEI_NAVI_PANE_DURATION, iEikonEnv );
+
+        STATIC_CAST( CAknNaviLabel* , iMoveLabel->DecoratedControl())->SetTextL( *buf );
+
+        CleanupStack::PopAndDestroy( buf );
+
+        iMoveLabel->DrawNow();
+
+        if ( currentDecorator )
+            {
+            iMoveLabel->MakeScrollButtonVisible( ETrue );
+
+            if ( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio )
+                {
+                TTimeIntervalMicroSeconds editedDuration = iMovie->AudioClipEditedDuration( currentIndex );
+                TTimeIntervalMicroSeconds duration = iMovie->AudioClipInfo( currentIndex )->Duration();
+
+                if ( editedDuration > TTimeIntervalMicroSeconds( 100000 ))
+                    {
+                    leftArrowVisible = ETrue;
+                    }
+
+                if ( editedDuration < duration )
+                    {
+                    rightArrowVisible = ETrue;
+                    }
+                }
+            else
+            // Cursor on generated video clip
+                {
+                TTimeIntervalMicroSeconds duration = iMovie->VideoClipInfo( currentIndex )->Duration();
+                if ( duration > TTimeIntervalMicroSeconds( 100000 ))
+                    {
+                    leftArrowVisible = ETrue;
+                    }
+                rightArrowVisible = ETrue;
+                }
+
+            iMoveLabel->SetScrollButtonDimmed( CAknNavigationDecorator::ELeftButton, !leftArrowVisible );
+            iMoveLabel->SetScrollButtonDimmed( CAknNavigationDecorator::ERightButton, !rightArrowVisible );
+            iNaviPane->PushL( *iMoveLabel );
+            }
+        }
+    else
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL(): else-branch" );
+
+        TInt maxMmsSize = STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->GetMaxMmsSize();
+
+        CVedMovie::TVedMovieQuality origQuality = iMovie->Quality();
+        iMovie->SetQuality( CVedMovie::EQualityMMSInteroperability );
+
+        TInt videoTimeLineSize = iMovie->GetSizeEstimateL() / 1024;
+
+        iMovie->SetQuality( origQuality );
+
+        // Navipanes MMS icon control. 
+        if ( videoTimeLineSize < maxMmsSize )
+            {
+            STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetMmsAvailableL( ETrue );
+            }
+        else
+            {
+            STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetMmsAvailableL( EFalse );
+            }
+
+        TInt size = iMovie->GetSizeEstimateL() / 1024;
+        /* If in recording state, show last audio clip end time+ recorded audio clip duration in navipane*/
+        LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL: iMovie->GetSizeEstimateL() OK : %d", size );
+        TTimeIntervalMicroSeconds audioEndTime( 0 );
+        if ((( iContainer->SelectionMode() == CVeiEditVideoContainer::EModeRecording ) || 
+             ( iContainer->SelectionMode() == CVeiEditVideoContainer::EModeRecordingPaused )))
+            {
+            TInt audioCount = iMovie->AudioClipCount();
+            /* check that cursor is on last audio clip */
+            if (( audioCount > 0 ) && ( iContainer->CurrentIndex() == audioCount - 1 ))
+                {
+                audioEndTime = iMovie->AudioClipEndTime( audioCount - 1 );
+                }
+            audioEndTime = audioEndTime.Int64() + iContainer->RecordedAudioDuration().Int64();
+            /*
+             * Get recorded audio clip size and add it to engine size estimate
+             * The size won't match with size estimate that engine gives when recorded audio clip is added,
+             * 
+             */
+            RFs& fs = iEikonEnv->FsSession();
+            TEntry entry;
+
+            User::LeaveIfError( fs.Entry( *iTempRecordedAudio, entry ));
+            TInt recordedClipSize = entry.iSize / 1024;
+            size += recordedClipSize;
+            }
+
+        if ( audioEndTime > iMovie->Duration())
+            {
+            STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetDurationLabelL( audioEndTime.Int64());
+            }
+        else
+            {
+            STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetDurationLabelL( iMovie->Duration().Int64());
+            LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL: iMovie->Duration() OK : %Ld", iMovie->Duration().Int64());
+            }
+
+        // Video line size to navipane.
+        STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetSizeLabelL( size );
+
+        LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL: SetSizeLabelL(%d) OK", size );
+
+        // Get default memory from settings view
+
+        if ( iMemoryInUse == CAknMemorySelectionDialog::EPhoneMemory )
+            {
+            STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetMemoryInUseL( ETrue );
+            }
+        else
+            {
+            STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetMemoryInUseL( EFalse );
+            }
+
+        if ( IsEnoughFreeSpaceToSave2L())
+            {
+            STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetMemoryAvailableL( ETrue );
+            }
+        else
+            {
+            STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetMemoryAvailableL( EFalse );
+            }
+        if ( !currentDecorator )
+            {
+            iNaviPane->PushL( *iEditLabel );
+            }
+        }
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL(): Out" );
+    }
+
+void CVeiEditVideoView::NotifyQueueProcessingStarted( MVeiQueueObserver::TProcessing aMode )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyQueueProcessingStarted: in" );
+
+    if ( iProgressNote )
+        {
+        delete iProgressNote;
+        iProgressNote = NULL;
+        }
+
+    if ( iWaitDialog )
+        {
+        CancelWaitDialog();
+        }
+
+    HBufC* stringholder;
+
+    switch ( aMode )
+        {
+        case MVeiQueueObserver::EProcessingAudio: 
+
+        iProgressNote = new( ELeave )CAknProgressDialog( REINTERPRET_CAST( CEikDialog** , &iProgressNote ), ETrue );
+
+        iProgressNote->SetCallback( this );
+
+        iProgressNote->ExecuteDlgLD( R_VEI_PROGRESS_NOTE_WITH_CANCEL );
+
+
+        stringholder = StringLoader::LoadLC( R_VEI_PROGRESS_NOTE_INSERTING_AUDIO, iEikonEnv );
+        iProgressNote->SetTextL( *stringholder );
+        CleanupStack::PopAndDestroy( stringholder );
+
+        iWaitMode = EOpeningAudioInfo;
+        iProgressNote->GetProgressInfoL()->SetFinalValue( 100 );
+        break;
+        case MVeiQueueObserver::EProcessingVideo: 
+
+        iWaitDialog = new( ELeave )CAknWaitDialog( REINTERPRET_CAST( CEikDialog** , &iWaitDialog ), ETrue );
+        iWaitDialog->ExecuteLD( R_VEI_WAIT_DIALOG_INSERTING_VIDEO );
+        break;
+        default:
+            iProgressNote = new( ELeave )CAknProgressDialog( REINTERPRET_CAST( CEikDialog** , &iProgressNote ), ETrue );
+
+            iProgressNote->SetCallback( this );
+
+            iProgressNote->ExecuteDlgLD( R_VEI_PROGRESS_NOTE );
+            UpdateInsertingProgressNoteL( 1 );
+            iProgressNote->GetProgressInfoL()->SetFinalValue( 100 );
+            break;
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyQueueProcessingStarted: out" );
+    }
+
+void CVeiEditVideoView::NotifyQueueProcessingProgressed( TInt aProcessedCount, TInt aPercentage )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyQueueProcessingProgressed: in" );
+    if ( iProgressNote )
+        {
+        UpdateInsertingProgressNoteL( aProcessedCount );
+        iProgressNote->GetProgressInfoL()->SetAndDraw( aPercentage );
+        }
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyQueueProcessingProgressed: out" );
+    }
+
+TBool CVeiEditVideoView::NotifyQueueClipFailed( const TDesC& aFilename, TInt aError )
+    {
+    LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::NotifyQueueClipFailed: in, aError:%d", aError );
+
+    TBool result;
+    if ( aError == CVeiAddQueue::EInsertingSingleClip )
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyQueueClipFailed: 1" );
+        ShowErrorNote( R_VEI_VIDEO_FAILED );
+        result = ETrue;
+        }
+    else
+        {
+        TBool continueProcessing;
+        CAknQueryDialog* dlg;
+        HBufC* failedContinueString;
+
+        failedContinueString = StringLoader::LoadLC( R_VEI_WARNING_NOTE_INSERTING_FAILED, aFilename, iEikonEnv );
+        dlg = new( ELeave )CAknQueryDialog( *failedContinueString, CAknQueryDialog::ENoTone );
+        continueProcessing = dlg->ExecuteLD( R_VEI_CONFIRMATION_QUERY );
+
+        CleanupStack::PopAndDestroy( failedContinueString );
+
+        result = continueProcessing;
+        }
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyQueueClipFailed: out" );
+
+    return result;
+    }
+
+void CVeiEditVideoView::NotifyQueueEmpty( TInt /*aInserted*/, TInt DEBUGLOG_ARG( aFailed ))
+    {
+    LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::NotifyQueueEmpty: in, aFailed:%d", aFailed );
+    if ( iProgressNote )
+        {
+        iProgressNote->GetProgressInfoL()->SetAndDraw( 100 );
+        TRAP_IGNORE( iProgressNote->ProcessFinishedL());
+        }
+    if ( iWaitDialog )
+        {
+        CancelWaitDialog();
+        }
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyQueueEmpty: out" );
+    }
+
+
+void CVeiEditVideoView::NotifyMovieProcessingStartedL( CVedMovie&  /*aMovie*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieProcessingStartedL: in" );
+
+    iPercentProcessed = 0;
+
+    iProgressNote = new( ELeave )CAknProgressDialog( REINTERPRET_CAST( CEikDialog** , &iProgressNote ), ETrue );
+    iProgressNote->SetCallback( this );
+    iProgressNote->ExecuteDlgLD( R_VEI_PROGRESS_NOTE_WITH_CANCEL );
+
+    HBufC* stringholder;
+
+    if (( EProcessingMovieSend == iWaitMode ) && ( KSenduiMtmBtUid == iGivenSendCommand ))
+        {
+        stringholder = StringLoader::LoadL( R_VEI_PROGRESS_NOTE_PROCESSING, iEikonEnv );
+        }
+    else if ( EProcessingMovieSend == iWaitMode )
+        {
+        stringholder = StringLoader::LoadL( R_VEI_PROGRESS_NOTE_SEND, iEikonEnv );
+        }
+    else if ( EProcessingMoviePreview == iWaitMode )
+        {
+        stringholder = StringLoader::LoadL( R_VEI_PROGRESS_NOTE_PROCESSING, iEikonEnv );
+        }
+    else if ( EProcessingMovieTrimMms == iWaitMode )
+        {
+        stringholder = StringLoader::LoadL( R_VEI_PROGRESS_NOTE_PROCESSING, iEikonEnv );
+        }
+    else
+        {
+        stringholder = StringLoader::LoadL( R_VEI_PROGRESS_NOTE_SAVING, iEikonEnv );
+        }
+
+    CleanupStack::PushL( stringholder );
+
+    iProgressNote->SetTextL( *stringholder );
+    CleanupStack::PopAndDestroy( stringholder );
+
+    iProgressNote->GetProgressInfoL()->SetFinalValue( 100 );
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieProcessingStartedL: out" );
+    }
+
+void CVeiEditVideoView::NotifyMovieProcessingProgressed( CVedMovie&  /*aMovie*/, TInt aPercentage )
+    {
+    iPercentProcessed = aPercentage;
+    User::ResetInactivityTime();
+    iProgressNote->GetProgressInfoL()->SetAndDraw( aPercentage );
+    }
+
+void CVeiEditVideoView::NotifyMovieProcessingCompleted( CVedMovie& aMovie, TInt aError )
+    {
+    LOGFMT2( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieProcessingCompleted: in, aError:%d, iPercentProcessed:%d", aError, iPercentProcessed );
+
+    aMovie.SetMovieSizeLimit( 0 ); // Movie size limit not in use
+
+    if ( aError == KErrNone )
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieProcessingCompleted: 2" );
+        Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
+        Cba()->DrawDeferred();
+        SetNewTempFileNeeded( EFalse );
+        iProgressNote->GetProgressInfoL()->SetAndDraw( 100 );
+        TRAP_IGNORE( iProgressNote->ProcessFinishedL());
+        }
+    else
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieProcessingCompleted: 3" );
+        if ( iProgressNote )
+            {
+            LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieProcessingCompleted: 4" );
+            iWaitMode = EProcessingError;
+            TRAP_IGNORE( iProgressNote->GetProgressInfoL()->SetAndDraw( 100 ));
+            iErrorNmb = aError;
+            TRAP_IGNORE( iProgressNote->ProcessFinishedL());
+            }
+        else
+            {
+            LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieProcessingCompleted: 5" );
+            if ( iTempFile )
+                {
+                LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieProcessingCompleted: 6" );
+                RFs& fs = iEikonEnv->FsSession();
+
+                fs.Delete( *iTempFile );
+                delete iTempFile;
+                iTempFile = NULL;
+                SetNewTempFileNeeded( ETrue );
+                }
+            }
+
+        // SetEditorState() must be called because of its side effects eventhough state has not changed,
+        // it sets CBAs. CBAs are set to empty before calling ProcessL()	
+        if ( EMixAudio != iEditorState )
+            {
+            SetEditorState( EEdit );
+            }
+        else
+            {
+            SetEditorState( EMixAudio );
+            }
+
+        iContainer->SetBlackScreen( EFalse );
+        iContainer->SetRect( AppUi()->ClientRect());
+        }
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieProcessingCompleted: out" );
+    }
+
+void CVeiEditVideoView::NotifyVideoClipAdded( CVedMovie&  /*aMovie*/, TInt aIndex )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipAdded: in" );
+    SetNewTempFileNeeded( ETrue );
+    iMovieSavedFlag = EFalse;
+
+    if ( iMovieFirstAddFlag )
+        {
+        CVedVideoClipInfo* info = iMovie->VideoClipInfo( aIndex );
+
+        if ( EVedVideoClipClassGenerated != info->Class())
+            {
+            SetNewTempFileNeeded( EFalse );
+            iMovieSavedFlag = ETrue;
+            }
+        iMovieFirstAddFlag = EFalse;
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipAdded: Completed" );
+
+    STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetState( CVeiEditVideoLabelNavi::EStateEditView );
+    UpdateEditNaviLabel();
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipAdded: out" );
+    }
+
+void CVeiEditVideoView::NotifyVideoClipAddingFailed( CVedMovie&  /*aMovie*/, TInt DEBUGLOG_ARG( aError ))
+    {
+    LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipAddingFailed: in, aError:%d", aError );
+    if ( iProgressNote )
+        {
+        iProgressNote->GetProgressInfoL()->SetAndDraw( 100 );
+        TRAP_IGNORE( iProgressNote->ProcessFinishedL());
+        }
+
+    if ( iWaitDialog )
+        {
+        CancelWaitDialog();
+        }
+    UpdateEditNaviLabel();
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipAddingFailed: out" );
+    }
+
+void CVeiEditVideoView::NotifyVideoClipRemoved( CVedMovie&  /*aMovie*/, TInt  /*aIndex*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipRemoved: in" );
+    SetNewTempFileNeeded( ETrue );
+    iMovieSavedFlag = EFalse;
+    UpdateEditNaviLabel();
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipRemoved: out" );
+    }
+
+void CVeiEditVideoView::NotifyVideoClipIndicesChanged( CVedMovie&  /*aMovie*/, TInt /*aOldIndex*/, TInt /*aNewIndex*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipIndicesChanged: in" );
+    iMovieSavedFlag = EFalse;
+    SetNewTempFileNeeded( ETrue );
+    UpdateEditNaviLabel();
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipIndicesChanged: out" );
+    }
+
+void CVeiEditVideoView::NotifyVideoClipTimingsChanged( CVedMovie&  /*aMovie*/, TInt /*aIndex*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipTimingsChanged: in" );
+    SetNewTempFileNeeded( ETrue );
+    iMovieSavedFlag = EFalse;
+    UpdateEditNaviLabel();
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipTimingsChanged: out" );
+    }
+
+void CVeiEditVideoView::NotifyVideoClipColorEffectChanged( CVedMovie&  /*aMovie*/, TInt /*aIndex*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipColorEffectChanged: in" );
+    SetNewTempFileNeeded( ETrue );
+    iMovieSavedFlag = EFalse;
+    UpdateEditNaviLabel();
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipColorEffectChanged: out" );
+    }
+
+void CVeiEditVideoView::NotifyVideoClipAudioSettingsChanged( CVedMovie&  /*aMovie*/, TInt /*aIndex*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipAudioSettingsChanged: in" );
+    SetNewTempFileNeeded( ETrue );
+    iMovieSavedFlag = EFalse;
+    UpdateEditNaviLabel();
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipAudioSettingsChanged: out" );
+    }
+
+void CVeiEditVideoView::NotifyStartTransitionEffectChanged( CVedMovie&  /*aMovie*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyStartTransitionEffectChanged: in" );
+    iMovieSavedFlag = EFalse;
+    SetNewTempFileNeeded( ETrue );
+    UpdateEditNaviLabel();
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyStartTransitionEffectChanged: out" );
+    }
+
+void CVeiEditVideoView::NotifyMiddleTransitionEffectChanged( CVedMovie&  /*aMovie*/, TInt /*aIndex*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMiddleTransitionEffectChanged: in" );
+    iMovieSavedFlag = EFalse;
+    SetNewTempFileNeeded( ETrue );
+    UpdateEditNaviLabel();
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMiddleTransitionEffectChanged: out" );
+    }
+
+void CVeiEditVideoView::NotifyEndTransitionEffectChanged( CVedMovie&  /*aMovie*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyEndTransitionEffectChanged: in" );
+    iMovieSavedFlag = EFalse;
+    SetNewTempFileNeeded( ETrue );
+    UpdateEditNaviLabel();
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyEndTransitionEffectChanged: out" );
+    }
+
+void CVeiEditVideoView::NotifyAudioClipAdded( CVedMovie& aMovie, TInt aIndex )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipAdded: in" );
+    iMovieSavedFlag = EFalse;
+    SetNewTempFileNeeded( ETrue );
+
+    if ( iProgressNote )
+        {
+        iProgressNote->GetProgressInfoL()->SetAndDraw( 100 );
+        TRAP_IGNORE( iProgressNote->ProcessFinishedL());
+        }
+
+    iOriginalAudioClipIndex = iContainer->CurrentIndex();
+
+    if ( iOriginalAudioClipIndex > aIndex )
+        {
+        iOriginalAudioClipIndex--;
+        }
+    iContainer->SetCurrentIndex( aIndex );
+
+    iOriginalAudioStartPoint = TTimeIntervalMicroSeconds(  - 1 );
+    CVedAudioClipInfo* audioclipinfo = aMovie.AudioClipInfo( aIndex );
+    iOriginalAudioDuration = audioclipinfo->Duration();
+
+    UpdateEditNaviLabel();
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipAdded: out" );
+    }
+
+void CVeiEditVideoView::NotifyAudioClipAddingFailed( CVedMovie&  /*aMovie*/, TInt DEBUGLOG_ARG( aError ))
+    {
+    LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipAddingFailed: in, aError:%d", aError );
+    if ( iProgressNote )
+        {
+        iProgressNote->GetProgressInfoL()->SetAndDraw( 100 );
+        TRAP_IGNORE( iProgressNote->ProcessFinishedL());
+        }
+
+    if ( iWaitDialog )
+        {
+        CancelWaitDialog();
+        }
+    ShowErrorNote( R_VEI_ERRORNOTE_AUDIO_INSERTING_FAILED );
+
+    UpdateEditNaviLabel();
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipAddingFailed: out" );
+    }
+
+void CVeiEditVideoView::NotifyAudioClipRemoved( CVedMovie&  /*aMovie*/, TInt  /*aIndex*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipRemoved: in" );
+    if ( iTempRecordedAudio )
+        {
+        delete iTempRecordedAudio;
+        iTempRecordedAudio = NULL;
+        }
+    iMovieSavedFlag = EFalse;
+    SetNewTempFileNeeded( ETrue );
+    UpdateEditNaviLabel();
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipRemoved: out" );
+    }
+
+void CVeiEditVideoView::NotifyAudioClipIndicesChanged( CVedMovie&  /*aMovie*/, TInt /*aOldIndex*/, TInt /*aNewIndex*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipIndicesChanged: in" );
+    iMovieSavedFlag = EFalse;
+    SetNewTempFileNeeded( ETrue );
+    UpdateEditNaviLabel();
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipIndicesChanged: out" );
+    }
+
+void CVeiEditVideoView::NotifyAudioClipTimingsChanged( CVedMovie&  /*aMovie*/, TInt /*aIndex*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipTimingsChanged: in" );
+    iMovieSavedFlag = EFalse;
+    SetNewTempFileNeeded( ETrue );
+    UpdateEditNaviLabel();
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipTimingsChanged: out" );
+    }
+
+void CVeiEditVideoView::NotifyMovieReseted( CVedMovie&  /*aMovie*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieReseted: in" );
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieReseted: out" );
+    }
+
+void CVeiEditVideoView::NotifyAudioClipInfoReady( CVedAudioClipInfo& aInfo, TInt aError )
+    {
+    LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipInfoReady: in, aError:%d", aError );
+    TInt err( KErrNone );
+
+    if ( aError == KErrNone )
+        {
+        if ( aInfo.Type() == EVedAudioTypeUnrecognized )
+            {
+            LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipInfoReady: 2: EVedAudioTypeUnrecognized" );
+
+            aError = KErrNotSupported;
+
+            /*TPtrC filename = aInfo.FileName();
+
+            iTempRecordedAudio = HBufC::NewL(KMaxFileName);
+            iTempMaker->GenerateTempFileName( *iTempRecordedAudio, iMovie );
+
+            TRAP_IGNORE( iConverter->StartConversionL( filename, *iTempRecordedAudio) );	
+
+            delete iTempRecordedAudio;
+            iTempRecordedAudio = NULL;
+             */
+            }
+        else if (( aInfo.Type() == EVedAudioTypeAMR ) || 
+                 ( aInfo.Type() == EVedAudioTypeAMRWB ) || 
+                 ( aInfo.Type() == EVedAudioTypeMP3 ) || 
+                 ( aInfo.Type() == EVedAudioTypeAAC_LC ) || 
+                 ( aInfo.Type() == EVedAudioTypeAAC_LTP ) || 
+                 ( aInfo.Type() == EVedAudioTypeWAV ))
+            {
+
+            LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipInfoReady: 3" );
+            TInt index = 0;
+            TInt64 startTimeInt = 0;
+            TInt64 durationInt = aInfo.Duration().Int64();
+
+            if ((( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio ) || 
+                 ( iContainer->CursorLocation() == VideoEditor::ECursorOnEmptyAudioTrack )) && 
+                 ( iMovie->AudioClipCount() > 0 ))
+                {
+                index = iContainer->CurrentIndex() + 1;
+                startTimeInt = iMovie->AudioClipEndTime( iContainer->CurrentIndex()).Int64();
+                }
+
+            while ( index < iMovie->AudioClipCount())
+                {
+                if ( TTimeIntervalMicroSeconds( startTimeInt ) == iMovie->AudioClipStartTime( index ))
+                    {
+                    startTimeInt = iMovie->AudioClipEndTime( index ).Int64();
+                    index++;
+                    }
+                else
+                    {
+                    break;
+                    }
+                }
+
+            if ( index < iMovie->AudioClipCount())
+                {
+                TInt64 endTimeInt = startTimeInt + durationInt;
+                TInt64 nextStartTimeInt = iMovie->AudioClipStartTime( index ).Int64();
+                if ( endTimeInt > nextStartTimeInt )
+                    {
+                    durationInt = nextStartTimeInt - startTimeInt;
+                    }
+                }
+            LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipInfoReady: 4" );
+            TRAP( err, iMovie->AddAudioClipL( aInfo.FileName(), 
+                                              TTimeIntervalMicroSeconds( startTimeInt ), 
+                                              TTimeIntervalMicroSeconds( 0 ), 
+                                              TTimeIntervalMicroSeconds( durationInt )));
+            LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipInfoReady: 5" );
+            }
+        }
+    if (( aError != KErrNone ) || ( err != KErrNone ))
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipInfoReady: 6" );
+        if ( aError != KErrCancel )
+            {
+            if ( aError )
+                {
+                iErrorNmb = aError;
+                }
+            else
+                {
+                iErrorNmb = err;
+                }
+            }
+        iWaitMode = EProcessingAudioError;
+
+        iProgressNote->GetProgressInfoL()->SetAndDraw( 100 );
+        TRAP_IGNORE( iProgressNote->ProcessFinishedL());
+        }
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipInfoReady: out" );
+    }
+
+
+
+void CVeiEditVideoView::NotifyVideoClipGeneratorSettingsChanged( CVedMovie&  /*aMovie*/, TInt /*aIndex*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipGeneratorSettingsChanged: in" );
+    if ( iWaitDialog )
+        {
+        iWaitDialog->ProcessFinishedL();
+        }
+
+    SetNewTempFileNeeded( ETrue );
+    iMovieSavedFlag = EFalse;
+    UpdateEditNaviLabel();
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipGeneratorSettingsChanged: out" );
+    }
+
+void CVeiEditVideoView::NotifyVideoClipDescriptiveNameChanged( CVedMovie&  /*aMovie*/, TInt /*aIndex*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipDescriptiveNameChanged: in and out" );
+    }
+
+void CVeiEditVideoView::NotifyMovieQualityChanged( CVedMovie&  /*aMovie*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieQualityChanged: in" );
+
+    // If there are text generator inserted into the movie, they need
+    // to be notified that the movie resolution has changed so that
+    // they can re-calculate the the wrapping etc. parameters.
+    /*	TInt clipCount = iMovie->VideoClipCount();
+    for (TInt i = 0; i < clipCount; i++)
+    {
+    CVedVideoClipInfo* clipInfo = iMovie->VideoClipInfo(i);
+    if (clipInfo->Class() == EVedVideoClipClassGenerated)
+    {
+    TUid generatorUid = clipInfo->Generator()->Uid();
+    if (generatorUid == KUidTitleClipGenerator)
+    {
+    CVeiTitleClipGenerator* generator = static_cast<CVeiTitleClipGenerator*>(clipInfo->Generator());
+    generator->RefreshTextFrameParametersL();
+    }
+    }
+    }*/
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieQualityChanged: out" );
+    }
+
+void CVeiEditVideoView::NotifyMovieOutputParametersChanged( CVedMovie& /*aMovie*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieOutputParametersChanged: in and out" );
+    SetNewTempFileNeeded( ETrue );
+    iMovieSavedFlag = EFalse;
+    }
+
+void CVeiEditVideoView::NotifyAudioClipDynamicLevelMarkInserted( CVedMovie& /*aMovie*/, 
+                                                                 TInt /*aClipIndex*/, 
+                                                                 TInt /*aMarkIndex*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipDynamicLevelMarkInserted: in and out" );
+    SetNewTempFileNeeded( ETrue );
+    iMovieSavedFlag = EFalse;
+    }
+
+void CVeiEditVideoView::NotifyAudioClipDynamicLevelMarkRemoved( CVedMovie& /*aMovie*/, 
+                                                                TInt /*aClipIndex*/, 
+                                                                TInt /*aMarkIndex*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipDynamicLevelMarkRemoved: in and out" );
+    SetNewTempFileNeeded( ETrue );
+    iMovieSavedFlag = EFalse;
+    }
+
+void CVeiEditVideoView::NotifyVideoClipDynamicLevelMarkInserted( CVedMovie& /*aMovie*/, 
+                                                                 TInt /*aClipIndex*/, 
+                                                                 TInt /*aMarkIndex*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipDynamicLevelMarkInserted: in and out" );
+    SetNewTempFileNeeded( ETrue );
+    iMovieSavedFlag = EFalse;
+    }
+
+void CVeiEditVideoView::NotifyVideoClipDynamicLevelMarkRemoved( CVedMovie& /*aMovie*/, 
+                                                                TInt /*aClipIndex*/, 
+                                                                TInt /*aMarkIndex*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipDynamicLevelMarkRemoved: in and out" );
+    SetNewTempFileNeeded( ETrue );
+    iMovieSavedFlag = EFalse;
+    }
+
+void CVeiEditVideoView::MoscoStateChangeEvent( CBase* aObject, TInt aPreviousState, TInt aCurrentState, TInt aErrorCode )
+    {
+    LOGFMT3( KVideoEditorLogFile, "CVeiEditVideoView::MoscoStateChangeEvent: In: aPreviousState:%d, aCurrentState:%d, aErrorCode:%d", aPreviousState, aCurrentState, aErrorCode );
+
+    if ( aObject == iRecorder )
+        {
+        if ( aErrorCode != KErrNone )
+            {
+            ShowErrorNote( R_VEI_RECORDING_FAILED );
+
+            if ( iTempRecordedAudio )
+                {
+                TInt err = iEikonEnv->FsSession().Delete( *iTempRecordedAudio );
+                if ( err ){
+
+                }
+                delete iTempRecordedAudio;
+                iTempRecordedAudio = NULL;
+                }
+
+            iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
+            TRAP_IGNORE( Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK ));
+            Cba()->DrawDeferred();
+            UpdateEditNaviLabel();
+
+            iRecorder->Close();
+            }
+        else if ( aCurrentState == CMdaAudioClipUtility::ERecording )
+            {
+            const TUint delay = 1000 * 1000 / 10;
+
+            if ( !iAudioRecordPeriodic->IsActive())
+                {
+                iAudioRecordPeriodic->Start( delay, delay, TCallBack( CVeiEditVideoView::UpdateAudioRecording, this ));
+                }
+
+            Cba()->SetCommandSetL( R_VEI_SOFTKEYS_PAUSE_STOP );
+            Cba()->DrawDeferred();
+            }
+        else if ( aPreviousState == CMdaAudioClipUtility::ENotReady )
+            {
+            TRAP_IGNORE( Cba()->SetCommandSetL( R_VEI_SOFTKEYS_RECORD_CANCEL ));
+            Cba()->DrawDeferred();
+            }
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::MoscoStateChangeEvent: Out" );
+    }
+
+
+void CVeiEditVideoView::DoActivateL( const TVwsViewId& /*aPrevViewId*/, 
+                                     TUid /*aCustomMessageId*/, 
+                                     const TDesC8& /*aCustomMessage*/ )
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::DoActivateL: In" );
+    if ( !iMemoryCardChecked )
+        {
+        CheckMemoryCardAvailabilityL();
+        iMemoryCardChecked = ETrue;
+        }
+
+    if ( !iContainer )
+        {
+        iContainer = new( ELeave )CVeiEditVideoContainer( *iMovie, * this );
+        iContainer->SetMopParent( this );
+        iContainer->ConstructL( AppUi()->ClientRect());
+        AppUi()->AddToStackL( *this, iContainer );
+        }
+
+    SetEditorState( EEdit );
+
+    // Add Context Pane icon
+
+    /*	TUid contextPaneUid;
+    contextPaneUid.iUid = EEikStatusPaneUidContext;
+
+    CEikStatusPane* sp = StatusPane();
+    CEikStatusPaneBase::TPaneCapabilities subPane = sp->PaneCapabilities( contextPaneUid );
+
+    if ( subPane.IsPresent() && subPane.IsAppOwned() )
+    {	
+    CAknContextPane* contextPane = (CAknContextPane*)sp->ControlL( contextPaneUid);
+
+    TFileName mbmPath( VideoEditorUtils::IconFileNameAndPath(KManualVideoEditorIconFileId) );
+    }*/
+
+    // Quality is taken from settings and set to engine.
+    STATIC_CAST( CVeiAppUi* , AppUi())->ReadSettingsL( iMovieSaveSettings );
+
+    TInt settingsSaveQuality = iMovieSaveSettings.SaveQuality();
+    CVedMovie::TVedMovieQuality saveQuality;
+
+    switch ( settingsSaveQuality )
+        {
+        case TVeiSettings::EMmsCompatible: saveQuality = CVedMovie::EQualityMMSInteroperability;
+        break;
+        case TVeiSettings::EMedium: saveQuality = CVedMovie::EQualityResolutionMedium;
+        break;
+        case TVeiSettings::EBest: saveQuality = CVedMovie::EQualityResolutionHigh;
+        break;
+        case TVeiSettings::EAuto: default:
+            saveQuality = CVedMovie::EQualityAutomatic;
+            break;
+        }
+
+    iMovie->SetQuality( saveQuality );
+    iMemoryInUse = iMovieSaveSettings.MemoryInUse();
+
+    if (( EProcessingMovieForCutting == iWaitMode ) || 
+        ( EProcessingMovieTrimMms == iWaitMode ) || 
+        ( ECuttingAudio == iWaitMode ))
+        {
+        iMovie->RegisterMovieObserverL( this );
+        iMovie->RegisterMovieObserverL( iContainer );
+        }
+
+    if ( EProcessingMovieForCutting == iWaitMode )
+        {
+        // miksi laitetaan jos ollaan oltu rimmaamassa?
+        //SetNewTempFileNeeded(ETrue);
+
+        TTimeIntervalMicroSeconds cutin;
+        TTimeIntervalMicroSeconds cutout;
+        cutin = iMovie->VideoClipCutInTime( iCutVideoIndex );
+        cutout = iMovie->VideoClipCutOutTime( iCutVideoIndex );
+
+        if (( cutin != TTimeIntervalMicroSeconds( 0 )) || 
+            ( cutout != iMovie->VideoClipInfo( iCutVideoIndex )->Duration()))
+            {
+            iMovieSavedFlag = EFalse;
+            }
+
+        if (( cutin != iOriginalCutInTime ) || ( cutout != iOriginalCutOutTime ) )
+            {
+            SetNewTempFileNeeded( ETrue );
+            iContainer->DrawNow();
+            Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_EMPTY );
+            iContainer->UpdateThumbnailL( iCutVideoIndex );
+            }
+        iContainer->SetCursorLocation( VideoEditor::ECursorOnClip );
+        }
+    else if ( ECuttingAudio == iWaitMode )
+        {
+
+        //SetNewTempFileNeeded(ETrue);
+
+        TTimeIntervalMicroSeconds cutin;
+        TTimeIntervalMicroSeconds cutout;
+        cutin = iMovie->AudioClipCutInTime( iCutAudioIndex );
+        cutout = iMovie->AudioClipCutOutTime( iCutAudioIndex );
+
+        if (( cutin != TTimeIntervalMicroSeconds( 0 )) || 
+            ( cutout != iMovie->AudioClipInfo( iCutAudioIndex )->Duration()))
+            {
+            iMovieSavedFlag = EFalse;
+            }
+
+        TTimeIntervalMicroSeconds currentEndTime;
+        TTimeIntervalMicroSeconds nextStartTime;
+
+        for ( TInt i = iContainer->CurrentIndex(); i < ( iMovie->AudioClipCount() - 1 ); i++ )
+            {
+            currentEndTime = iMovie->AudioClipEndTime( i );
+            nextStartTime = iMovie->AudioClipStartTime( i + 1 );
+
+            if ( nextStartTime < currentEndTime )
+            // what is the reason behind?
+            // is this a typo, should it be like this?:
+            //if ( nextStartTime != currentEndTime )
+                {
+                nextStartTime = currentEndTime;
+                iMovie->AudioClipSetStartTime( i + 1, nextStartTime );
+                }
+            }
+        if (( cutin != iOriginalAudioCutInTime ) || ( cutout != iOriginalAudioCutOutTime ))
+            {
+            SetNewTempFileNeeded( ETrue );
+            iContainer->DrawNow();
+            }
+
+        iContainer->SetCursorLocation( VideoEditor::ECursorOnAudio );
+        }
+
+    iNaviPane->PushL( *iEditLabel );
+
+    iSendKey = EFalse;
+    iWaitMode = ENotWaiting;
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::DoActivateL: out" );
+    }
+
+void CVeiEditVideoView::HandleForegroundEventL( TBool aForeground )
+    {
+    LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::HandleForegroundEventL: in: %d", aForeground );
+
+    if ( !aForeground )
+        {
+        // If the application is closing down, calling PauseVideoL 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();
+            return ;
+            }
+
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::HandleForegroundEventL 1" );
+        //if ( (EditorState() != EEdit ) && iContainer)
+        if ( EPreview == EditorState() || EQuickPreview == EditorState())
+            {
+            iContainer->PauseVideoL();
+            }
+        // In phones with clamshell (läppäpuhelin) background can be activated with closing the shell
+        // iContainer's OfferKeyEvent do not get this kind of shell events
+        if ( EPreview == EditorState())
+        // large preview
+            {
+            LOG( KVideoEditorLogFile, "CVeiEditVideoView::HandleForegroundEventL 2" );
+            SetEditorState( CVeiEditVideoView::EEdit );
+            iContainer->SetBlackScreen( EFalse );
+            SetFullScreenSelected( EFalse );
+            iContainer->StopVideo( ETrue );
+            }
+
+        if (( iContainer->SelectionMode() == CVeiEditVideoContainer::EModeRecordingPaused ) || ( iContainer->SelectionMode() == CVeiEditVideoContainer::EModeRecording ))
+            {
+            HandleCommandL( EVeiCmdEditVideoViewRecordStop );
+            }
+        DoDeactivate();
+        }
+    else
+        {
+        if ( EditorState() != EEdit )
+            {
+            if ( EMixAudio != EditorState() && EAdjustVolume != EditorState())
+                {
+                LOG( KVideoEditorLogFile, "CVeiEditVideoView::HandleForegroundEventL: 3, setting R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK" );
+                Cba()->SetCommandSetL( R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK );
+                }
+            Cba()->DrawDeferred();
+            }
+
+        /* When view is activated some clips can be deleted or
+        names can be changed.. So check that all video and audio clips are still available.*/
+        if ( iMovie )
+            {
+            TInt i;
+            TFileName clipName;
+            RFs& fs = iEikonEnv->FsSession();
+
+            for ( i = 0; i < iMovie->VideoClipCount(); i++ )
+                {
+                if ( iMovie->VideoClipInfo( i )->Class() == EVedVideoClipClassFile )
+                    {
+                    clipName = iMovie->VideoClipInfo( i )->FileName();
+
+                    if ( !BaflUtils::FileExists( fs, clipName ))
+                        {
+                        iContainer->GetAndDecrementCurrentIndex();
+
+                        iMovie->RemoveVideoClip( i );
+                        i--;
+                        UpdateMediaGalleryL();
+                        }
+                    clipName.Zero();
+                    }
+                }
+
+            for ( i = 0; i < iMovie->AudioClipCount(); i++ )
+                {
+                clipName = iMovie->AudioClipInfo( i )->FileName();
+
+                if ( !BaflUtils::FileExists( fs, clipName ))
+                    {
+                    iContainer->GetAndDecrementCurrentIndex();
+
+                    iMovie->RemoveAudioClip( i );
+                    i--;
+                    UpdateMediaGalleryL();
+                    }
+                clipName.Zero();
+                }
+
+            }
+
+        UpdateEditNaviLabel();
+        HandleScreenDeviceChangedL();
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::HandleForegroundEventL: out" );
+    }
+
+void CVeiEditVideoView::DoDeactivate()
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView:DoDeactivate: In" );
+
+    iNaviPane->Pop( iEditLabel );
+
+    if ( iVolumeHider )
+        {
+        iVolumeHider->Cancel();
+        delete iVolumeHider;
+        iVolumeHider = NULL;
+        }
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView:DoDeactivate: Out" );
+    }
+
+
+TTimeIntervalMicroSeconds CVeiEditVideoView::OriginalAudioDuration()const
+    {
+    return iOriginalAudioDuration;
+    }
+
+TInt CVeiEditVideoView::UpdateNaviPreviewing( TAny* aThis )
+    {
+    STATIC_CAST( CVeiEditVideoView* , aThis )->DoUpdateEditNaviLabelL();
+    return 1;
+    }
+
+
+TInt CVeiEditVideoView::UpdateAudioRecording( TAny* aThis )
+    {
+    STATIC_CAST( CVeiEditVideoView* , aThis )->DoUpdateAudioRecording();
+    return 1;
+    }
+
+void CVeiEditVideoView::DoUpdateAudioRecording()
+    {
+    if ( iRecorder->State() != CMdaAudioClipUtility::ERecording )
+        {
+        iAudioRecordPeriodic->Cancel();
+        Cba()->SetCommandSetL( R_VEI_SOFTKEYS_CONTINUE_STOP );
+        Cba()->DrawDeferred();
+        }
+    else
+        {
+        TTimeIntervalMicroSeconds duration = iRecorder->Duration();
+
+        iContainer->SetRecordedAudioDuration( duration );
+        iContainer->DrawTrackBoxes();
+
+        UpdateEditNaviLabel();
+
+        // !!!*** Safety margin of 0.5s because cropping does not work, remove when cropping fixed. ***!!!
+        duration = TTimeIntervalMicroSeconds( duration.Int64());
+
+        if (( iRecordedAudioMaxDuration >= TTimeIntervalMicroSeconds( 0 )) && ( duration > iRecordedAudioMaxDuration ))
+            {
+            TRAP_IGNORE( HandleCommandL( EVeiCmdEditVideoViewRecordStop ));
+            }
+        }
+    }
+
+void CVeiEditVideoView::CancelWaitDialog( TInt aError )
+    {
+    LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::CancelWaitDialog: In, aError:%d", aError );
+    if ( iWaitDialog )
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::CancelWaitDialog: 2" );
+        iWaitDialog->ProcessFinishedL();
+        }
+
+    if ( aError )
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::CancelWaitDialog: 3" );
+        ShowGlobalErrorNote( aError );
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::CancelWaitDialog: 4" );
+        }
+    Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::CancelWaitDialog: 5" );
+    Cba()->DrawDeferred();
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::CancelWaitDialog: Out" );
+    }
+
+void CVeiEditVideoView::NotifyImageClipGeneratorInitializationComplete( CVeiImageClipGenerator&  /*aGenerator*/, TInt aError )
+    {
+    LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::NotifyImageClipGeneratorInitializationComplete: in, aError:%d", aError );
+    if ( aError != KErrNone )
+        {
+        ShowGlobalErrorNote( aError );
+        delete iGenerator;
+        iGenerator = 0;
+        return ;
+        }
+
+    // insert the generator into movie
+    TInt index = ( iContainer->CurrentIndex() == iMovie->VideoClipCount()) ? iMovie->VideoClipCount(): iContainer->CurrentIndex() + 1;
+    iMovie->InsertVideoClipL( *iGenerator, ETrue, index );
+
+    // Generator is no longer our concern
+    iGenerator = 0;
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyImageClipGeneratorInitializationComplete: out" );
+    }
+
+
+void CVeiEditVideoView::NotifyTitleClipBackgroundImageLoadComplete( CVeiTitleClipGenerator&  /*aGenerator*/, TInt aError )
+    {
+    LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::NotifyTitleClipBackgroundImageLoadComplete: in, aError:%d", aError );
+    if ( aError != KErrNone )
+        {
+        ShowGlobalErrorNote( aError );
+        delete iGenerator;
+        iGenerator = 0;
+        return ;
+        }
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyTitleClipBackgroundImageLoadComplete: out" );
+    }
+
+void CVeiEditVideoView::UpdateInsertingProgressNoteL( TInt aProcessed )
+    {
+    TInt queueCount = iMediaQueue->Count();
+
+    CArrayFix < TInt > * numbers = new CArrayFixFlat < TInt > ( 2 );
+    CleanupStack::PushL( numbers );
+    numbers->AppendL( aProcessed );
+    numbers->AppendL( queueCount );
+
+    HBufC* stringholder = StringLoader::LoadL( R_VEI_PROGRESS_NOTE_INSERTING_MEDIA, * numbers, iEikonEnv );
+
+    CleanupStack::PushL( stringholder );
+
+    iProgressNote->SetTextL( *stringholder );
+    iProgressNote->DrawNow(); // otherwise text is not drawn at all 
+    CleanupStack::PopAndDestroy( stringholder );
+    CleanupStack::PopAndDestroy( numbers );
+    }
+
+void CVeiEditVideoView::MmsSendCompatibleCheck()
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::MmsSendCompatibleCheck(): in" );
+
+    TInt maxMmsSize = STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->GetMaxMmsSize()* 1024;
+
+    CVedMovie::TVedMovieQuality origQuality = iMovie->Quality();
+    iMovie->SetQuality( CVedMovie::EQualityMMSInteroperability );
+    TInt sizeEstimate = 0;
+    TRAP_IGNORE( sizeEstimate = iMovie->GetSizeEstimateL());
+    iMovie->SetQuality( origQuality );
+
+    LOGFMT2( KVideoEditorLogFile, "CVeiEditVideoView::MmsSendCompatibleCheck(): maxMmsSize: %d, sizeEstimate: %d", maxMmsSize, sizeEstimate );
+
+    TInt movieSizeLimit = ( TInt )( maxMmsSize* 0.9 );
+    LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::MmsSendCompatibleCheck(): testing, test:%d", movieSizeLimit );
+
+    if ( sizeEstimate < ( TInt )( maxMmsSize* 1.1 ))
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::MmsSendCompatibleCheck(): SetMovieSizeLimit..ok" );
+        iMovie->SetMovieSizeLimit( movieSizeLimit );
+        }
+
+    TVeiSettings movieSaveSettings;
+
+    if ( iMovie->IsMovieMMSCompatible())
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::MmsSendCompatibleCheck: MMSCompatible YES" );
+        iWaitMode = EProcessingMovieTrimMms;
+        StartTempFileProcessingL();
+        }
+    else
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::MmsSendCompatibleCheck: MMSCompatible NO" );
+        iWaitMode = EProcessingMovieTrimMms;
+        movieSaveSettings.SaveQuality() = TVeiSettings::EMmsCompatible;
+        StartTempFileProcessingL();
+        }
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::MmsSendCompatibleCheck(): out" );
+    }
+
+// Screen twisting 
+/*
+/* experimental code trying to fix this:
+EECO-6W39YS 
+Manual Video Editor: Wrong layout displays if switching phone mode during large preview playing
+
+void CVeiEditVideoView::HandleScreenDeviceChangedL()
+{	
+LOG(KVideoEditorLogFile, "CVeiEditVideoView::HandleScreenDeviceChangedL() in");
+if ( iContainer )
+{
+// Orientation changed. Resize container rect and update component
+//positions.
+
+
+//	iContainer->SetRect( ClientOrApplicationRect( iFullScreenSelected ) );
+//	
+//	iContainer->SetRect( AppUi()->ClientRect() );
+//	
+
+if(CVeiEditVideoContainer::EModePreview == iContainer->SelectionMode() && iFullScreenSelected &&
+CVeiEditVideoContainer::EStatePlaying == iContainer->PreviewState())
+{
+LOG(KVideoEditorLogFile, "CVeiEditVideoView::HandleScreenDeviceChangedL() 1");
+iContainer->SetBlackScreen( ETrue );
+iContainer->SetRect( ClientOrApplicationRect( iFullScreenSelected ) );
+return;	
+}		
+LOG(KVideoEditorLogFile, "CVeiEditVideoView::HandleScreenDeviceChangedL() 2");				
+iContainer->SetCursorLocation( iContainer->CursorLocation() );
+iContainer->ArrowsControl();
+
+iContainer->DrawDeferred();
+}		
+LOG(KVideoEditorLogFile, "CVeiEditVideoView::HandleScreenDeviceChangedL() out");	
+}
+ */
+/* Screen twisting */
+void CVeiEditVideoView::HandleScreenDeviceChangedL()
+    {
+    if ( iContainer )
+        {
+        // Orientation changed. Resize container rect and update component
+        //positions.
+        iContainer->SetRect( AppUi()->ClientRect());
+
+        iContainer->SetCursorLocation( iContainer->CursorLocation());
+        iContainer->ArrowsControl();
+
+        iContainer->DrawDeferred();
+        }
+    }
+
+void CVeiEditVideoView::HideVolume()
+    {
+    iNaviPane->Pop( iVolumeNavi );
+
+    delete iVolumeHider;
+    iVolumeHider = NULL;
+    }
+
+TInt CVeiEditVideoView::HideVolumeCallbackL( TAny* aPtr )
+    {
+    CVeiEditVideoView* view = ( CVeiEditVideoView* )aPtr;
+    view->HideVolume();
+    return 0;
+    }
+
+void CVeiEditVideoView::UpdateMediaGalleryL()
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::UpdateMediaGalleryL(): In" );
+
+  
+    // Publish & Subscribe API used to make the saved file name available to AIW provider
+    if ( iSaveToFileName )
+        {
+        LOG( KVideoEditorLogFile, "CVeiEditVideoView::UpdateMediaGalleryL(): Calling RProperty::Define(KUidVideoEditorProperties, VideoEditor::EPropertyFilename, RProperty::EText); " );
+        TInt err = RProperty::Define( KUidVideoEditorProperties, VideoEditor::EPropertyFilename, RProperty::EText );
+        if ( err != KErrAlreadyExists )
+            {
+            User::LeaveIfError( err );
+            }
+        User::LeaveIfError( RProperty::Set( KUidVideoEditorProperties, VideoEditor::EPropertyFilename, iSaveToFileName->Des()));
+        }
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::UpdateMediaGalleryL(): Out" );
+    }
+
+void CVeiEditVideoView::SetFullScreenSelected( TBool aFullScreenSelected )
+    {
+    iFullScreenSelected = aFullScreenSelected;
+    }
+
+void CVeiEditVideoView::StartNaviPaneUpdateL()
+    {
+    if ( iPreviewUpdatePeriodic )
+        {
+        if ( iPreviewUpdatePeriodic->IsActive())
+            {
+            iPreviewUpdatePeriodic->Cancel();
+            }
+
+        iPreviewUpdatePeriodic->Start( 100000, 100000, TCallBack( CVeiEditVideoView::UpdateNaviPreviewing, this ));
+        }
+    }
+
+void CVeiEditVideoView::ShowAndHandleSendMenuCommandsL()
+    {
+    /* Show send menu, postcard dimmed */
+    CArrayFix < TUid > * mtmToDim = new( ELeave )CArrayFixFlat < TUid > ( 3 );
+    TUid userSelection;
+    CleanupStack::PushL( mtmToDim );
+    /*
+    this uid is empirically got with one device 19.10.2006
+    there is currently (19.10.2006) no constans found in headers for Web Upload
+     */
+
+    const TInt KSenduiMtmOwnWebUploadIntValue = 536873429;
+    const TUid KSenduiMtmOwnWebUpload = 
+        {
+        KSenduiMtmOwnWebUploadIntValue
+    };
+
+    mtmToDim->AppendL( KSenduiMtmPostcardUid );
+    mtmToDim->AppendL( KSenduiMtmAudioMessageUid );
+    mtmToDim->AppendL( KSenduiMtmOwnWebUpload );
+
+
+    userSelection = iSendAppUi.ShowSendQueryL( NULL, TSendingCapabilities( 0, 0, TSendingCapabilities::ESupportsAttachments ), mtmToDim );
+    CleanupStack::PopAndDestroy( mtmToDim );
+
+    iGivenSendCommand = userSelection;
+
+    if ( IsEnoughFreeSpaceToSaveL())
+        {
+        switch ( userSelection.iUid )
+            {
+            case KSenduiMtmSmtpUidValue:
+            case KSenduiMtmImap4UidValue:
+            case KSenduiMtmPop3UidValue:
+                    {
+                    LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::ShowAndHandleSendMenuCommandsL: MTM UID: %d", userSelection.iUid );
+                    iWaitMode = EProcessingMovieSend;
+                    StartTempFileProcessingL();
+                    break;
+                    }
+            case KSenduiMtmIrUidValue:
+                    {
+                    LOG( KVideoEditorLogFile, "CVeiEditVideoView::ShowAndHandleSendMenuCommandsL: MTM UID: KSenduiMtmIrUidValue" );
+                    iWaitMode = EProcessingMovieSend;
+                    StartTempFileProcessingL();
+                    break;
+                    }
+            case KSenduiMtmMmsUidValue:
+                    {
+                    LOG( KVideoEditorLogFile, "CVeiEditVideoView::ShowAndHandleSendMenuCommandsL: MTM UID: KSenduiMtmMmsUidValue" );
+                    iWaitMode = EProcessingMovieTrimMms;
+                    MmsSendCompatibleCheck();
+                    break;
+                    }
+            case KSenduiMtmBtUidValue:
+                    {
+                    LOG( KVideoEditorLogFile, "CVeiEditVideoView::ShowAndHandleSendMenuCommandsL: MTM UID: KSenduiMtmBtUidValue" );
+                    iWaitMode = EProcessingMovieSend;
+                    StartTempFileProcessingL();
+                    break;
+                    }
+                /*case KSenduiMtmOwnWebUploadIntValue:			// 0x200009D5
+                {
+                LOG(KVideoEditorLogFile, "CVeiEditVideoView::ShowAndHandleSendMenuCommandsL 6: MTM UID: 536873429");
+                iWaitMode = EProcessingMovieSend;
+                StartTempFileProcessingL();
+                break;            	
+                }	
+                 */
+            default:
+                break;
+
+            }
+        }
+    }
+
+void CVeiEditVideoView::StopNaviPaneUpdateL()
+    {
+    DoUpdateEditNaviLabelL();
+
+    if ( iPreviewUpdatePeriodic && iPreviewUpdatePeriodic->IsActive())
+        {
+        iPreviewUpdatePeriodic->Cancel();
+        }
+    }
+
+TRect CVeiEditVideoView::ClientOrApplicationRect( TBool aFullScreenSelected )const
+    {
+    if ( aFullScreenSelected )
+        {
+        return AppUi()->ApplicationRect();
+        }
+    else
+        {
+        return AppUi()->ClientRect();
+        }
+
+    }
+
+TBool CVeiEditVideoView::MixingConditionsOk()const
+    {
+    // prerequisites for sound mixing: at least one video with audio and one imported audio exist
+    if ( iMovie->VideoClipCount() > 0 && iMovie->AudioClipCount() > 0 )
+        {
+        for ( TInt i = 0; i < iMovie->VideoClipCount(); i++ )
+            {
+            //if (iMovie->VideoClipEditedHasAudio(i))
+            if ( iMovie->VideoClipInfo( i )->HasAudio())
+                {
+                return ETrue;
+                }
+            }
+        }
+    return EFalse;
+    }
+
+/*void CVeiEditVideoView::MixAudio()
+{		
+
+//TReal gainVideoNew(0);
+//TReal gainAudioNew(0);
+
+TInt gainVideoNew(0);
+TInt gainAudioNew(0);
+
+TInt gainVideoCurrent = iMovie->GetVideoClipVolumeGainL(KVedClipIndexAll);
+TInt gainAudioCurrent = iMovie->GetAudioClipVolumeGainL(KVedClipIndexAll);
+
+// video clips are faded      
+if (iContainer->AudioMixingRatio() > 0)    
+{
+//@ : think how to tackle situations where value is form x.0, adding 0.5 gets wrong int
+//Math::Round(fadevideo, iContainer->AudioMixingRatio()*(KVolumeMaxGain/10), 2);
+
+gainVideoNew = iContainer->AudioMixingRatio()*(KVolumeMaxGain/10);    	
+gainVideoNew += 0.5; // for making real to int rounding work in constructor of TVedDynamicLevelMark
+gainVideoNew = 0 - gainVideoNew;    	
+}
+// audio clips are faded
+else if (iContainer->AudioMixingRatio() < 0)    
+{
+//@ : think how to tackle situations where value is form x.0, adding 0.5 gets wrong int
+//Math::Round(fadeaudio, iContainer->AudioMixingRatio()*(KVolumeMaxGain/10), 2);    	
+gainAudioNew = iContainer->AudioMixingRatio()*(KVolumeMaxGain/10);     	    	    	    	
+gainAudioNew -= 0.5;    // for making real to int rounding	work in constructor of TVedDynamicLevelMark    	
+}        			    
+
+if (gainVideoNew != gainVideoCurrent)
+{
+iMovie->SetVideoClipVolumeGainL(KVedClipIndexAll, gainVideoNew);
+}
+if (gainAudioNew != gainAudioCurrent)
+{
+iMovie->SetAudioClipVolumeGainL(KVedClipIndexAll, gainAudioNew);	
+}    	    	    	
+}
+ */
+
+void CVeiEditVideoView::MixAudio()
+    {
+    TReal fadevideo( 0 );
+    TReal fadeaudio( 0 );
+
+    // video clips are faded        
+    if ( iContainer->AudioMixingRatio() > 0 )
+        {
+        //@ : think how to tackle situations where value is form x.0, adding 0.5 gets wrong int
+        //Math::Round(fadevideo, iContainer->AudioMixingRatio()*(KVolumeMaxGain/10), 2);
+
+        fadevideo = iContainer->AudioMixingRatio()*( KVolumeMaxGain / 10 );
+        fadevideo += 0.5; // for making real to int rounding work in constructor of TVedDynamicLevelMark
+        fadevideo = 0-fadevideo;
+        fadeaudio = 0;
+        }
+    // audio clips are faded
+    else if ( iContainer->AudioMixingRatio() < 0 )
+        {
+        //@ : think how to tackle situations where value is form x.0, adding 0.5 gets wrong int
+        //Math::Round(fadeaudio, iContainer->AudioMixingRatio()*(KVolumeMaxGain/10), 2);
+
+        fadeaudio = iContainer->AudioMixingRatio()*( KVolumeMaxGain / 10 );
+        fadeaudio -= 0.5; // for making real to int rounding	work in constructor of TVedDynamicLevelMark
+        fadevideo = 0;
+        }
+
+    // video clips are faded        
+    if ( iContainer->AudioMixingRatio() > 0 && iMovie->VideoClipCount() > 0 )
+        {
+        TInt gain = iMovie->GetVideoClipVolumeGainL( KVedClipIndexAll ); ///(KVolumeMaxGain/10);
+        TInt gainNew = ( TInt )fadevideo;
+        if ( gainNew != gain )
+            {
+            iMovie->SetAudioClipVolumeGainL( KVedClipIndexAll, 0 );
+            iMovie->SetVideoClipVolumeGainL( KVedClipIndexAll, gainNew );
+            }
+        }
+    // audio clips are faded
+    else if ( iContainer->AudioMixingRatio() < 0 && iMovie->AudioClipCount() > 0 )
+        {
+        TInt gain = iMovie->GetAudioClipVolumeGainL( KVedClipIndexAll ); ///(KVolumeMaxGain/10);
+        TInt gainNew = ( TInt )fadeaudio;
+        if ( gainNew != gain )
+            {
+            iMovie->SetVideoClipVolumeGainL( KVedClipIndexAll, 0 );
+            iMovie->SetAudioClipVolumeGainL( KVedClipIndexAll, gainNew );
+            }
+        }
+    else
+    //if marks set back to position '0'
+        {
+        if ( 0 != iMovie->GetVideoClipVolumeGainL( KVedClipIndexAll ))
+            {
+            iMovie->SetVideoClipVolumeGainL( KVedClipIndexAll, 0 );
+            }
+        if ( 0 != iMovie->GetAudioClipVolumeGainL( KVedClipIndexAll ))
+            {
+            iMovie->SetAudioClipVolumeGainL( KVedClipIndexAll, 0 );
+            }
+        }
+    }
+
+void CVeiEditVideoView::AdjustVolumeL()
+    {
+    TReal adjustVolume = iContainer->Volume()*( KVolumeMaxGain / 10 );
+    // to make rounding to int work correctly in constructor of TVedDynamicLevelMark
+    // @ : if adjustvolume is x.0, rounding does not work, think how to fix problem
+    if ( 0 < adjustVolume )
+        {
+        adjustVolume += 0.5;
+        }
+    else
+        {
+        adjustVolume -= 0.5;
+        }
+
+    if ( iContainer->CursorLocation() == VideoEditor::ECursorOnClip )
+        {
+        TReal currentVolume = iMovie->GetVideoClipVolumeGainL( iContainer->CurrentIndex()); ///(KVolumeMaxGain/10);						
+        if ( 0 == iContainer->Volume())
+            {
+            if ( 0 != ( TInt )currentVolume )
+                {
+                iMovie->SetVideoClipVolumeGainL( iContainer->CurrentIndex(), 0 );
+                }
+            }
+        else if (( TInt )currentVolume != ( TInt )adjustVolume )
+            {
+            iMovie->SetVideoClipVolumeGainL( iContainer->CurrentIndex(), ( TInt )adjustVolume );
+            }
+        }
+    else if ( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio )
+        {
+        TReal currentVolume = iMovie->GetAudioClipVolumeGainL( iContainer->CurrentIndex()); ///(KVolumeMaxGain/10);		
+        if ( 0 == iContainer->Volume())
+            {
+            if ( 0 != ( TInt )currentVolume )
+                {
+                iMovie->SetAudioClipVolumeGainL( iContainer->CurrentIndex(), 0 );
+                }
+            }
+        else if (( TInt )currentVolume != ( TInt )adjustVolume )
+            {
+            iMovie->SetAudioClipVolumeGainL( iContainer->CurrentIndex(), ( TInt )adjustVolume );
+            }
+        }
+    }
+
+void CVeiEditVideoView::StoreOrientation()
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::StoreOrientation: in" );
+
+    iOriginalOrientation = AppUi()->Orientation();
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::StoreOrientation: out" );
+    }
+
+void CVeiEditVideoView::RestoreOrientation()
+    {
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::RestoreOrientation: in" );
+
+    TRAP_IGNORE( AppUi()->SetOrientationL( iOriginalOrientation ));
+
+    LOG( KVideoEditorLogFile, "CVeiEditVideoView::RestoreOrientation: out" );
+    }
+
+void CVeiEditVideoView::SetNewTempFileNeeded( const TBool aUpdateNeeded )
+    {
+    iUpdateTemp = aUpdateNeeded;
+    }
+
+// End of File