videditor/ManualVideoEditor/src/VeiEditVideoView.cpp
changeset 0 951a5db380a0
equal deleted inserted replaced
-1:000000000000 0:951a5db380a0
       
     1 /*
       
     2 * Copyright (c) 2010 Ixonos Plc.
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - Initial contribution
       
    11 *
       
    12 * Contributors:
       
    13 * Ixonos Plc
       
    14 *
       
    15 * Description: 
       
    16 *
       
    17 */
       
    18 
       
    19 
       
    20 // INCLUDE FILES
       
    21 
       
    22 // System includes
       
    23 #include <aknviewappui.h>
       
    24 #include <avkon.hrh>
       
    25 #include <manualvideoeditor.rsg>
       
    26 #include <aknappui.h>
       
    27 #include <akntitle.h> 
       
    28 #include <caknfilenamepromptdialog.h> 
       
    29 #include <aknnotewrappers.h> 
       
    30 #include <aknlists.h> 
       
    31 #include <aknquerydialog.h> 
       
    32 #include <pathinfo.h> 
       
    33 #include <eikmenub.h> 
       
    34 
       
    35 #include <sendui.h> 
       
    36 #include <caknfileselectiondialog.h>
       
    37 #include <stringloader.h> 
       
    38 #include <eikprogi.h>
       
    39 #include <mgfetch.h> 
       
    40 #include <aknnavilabel.h> 
       
    41 #include <aknnavide.h> 
       
    42 #include <aknselectionlist.h> 
       
    43 #include <MdaAudioSampleEditor.h> 
       
    44 #include <bautils.h>
       
    45 #include <sysutil.h>
       
    46 #include <aknwaitdialog.h>
       
    47 #include <utf.h>
       
    48 #include <akncolourselectiongrid.h>
       
    49 //#include <akncontext.h>
       
    50 #include <MGXFileManagerFactory.h>
       
    51 #include <CMGXFileManager.h>
       
    52 #include <audiopreference.h>
       
    53 #include <senduiconsts.h>
       
    54 #include <mmsconst.h>
       
    55 #include <CMessagedata.h>
       
    56 #include <e32property.h>
       
    57 #include <e32math.h> 
       
    58 
       
    59 #include <VedVideoClipInfo.h>
       
    60 
       
    61 // User includes 
       
    62 #include "veiapp.h"
       
    63 #include "veicutaudioview.h"
       
    64 #include "VeiEditVideoView.h"
       
    65 #include "VeiEditVideoContainer.h" 
       
    66 #include "manualvideoeditor.hrh"
       
    67 #include "veieditvideolabelnavi.h"
       
    68 #include "veicutvideoview.h"
       
    69 #include "veiappui.h"
       
    70 #include "VideoEditorCommon.h"
       
    71 #include "VideoEditorUtils.h"
       
    72 #include "VeiTimeLabelNavi.h"
       
    73 #include "veiaddqueue.h"
       
    74 #include "veitempmaker.h"
       
    75 #include "videoeditorcommon.h"
       
    76 #include "VeiImageClipGenerator.h"
       
    77 #include "VeiTitleClipGenerator.h"
       
    78 #include "VeiTextDisplay.h"
       
    79 #include "VeiPopup.h"
       
    80 #include "VeiVideoEditorSettings.h"
       
    81 #include "VeiMGFetchVerifier.h"
       
    82 #include "VeiErrorUi.h"
       
    83 
       
    84 
       
    85 const TInt KTitleScreenMaxTextLength = 100; //2048;
       
    86 
       
    87 
       
    88 void CleanupRestoreOrientation( TAny* object )
       
    89     {
       
    90     LOG( KVideoEditorLogFile, "CleanupRestoreOrientation: in" );
       
    91 
       
    92     CVeiEditVideoView* me = static_cast < CVeiEditVideoView*  > ( object );
       
    93     me->RestoreOrientation();
       
    94 
       
    95     LOG( KVideoEditorLogFile, "CleanupRestoreOrientation: Out" );
       
    96     }
       
    97 
       
    98 CVeiEditVideoView* CVeiEditVideoView::NewL( CVeiCutVideoView& aCutView,
       
    99                                             CVeiCutAudioView& aCutAudioView, 
       
   100                                             CSendUi& aSendAppUi )
       
   101     {
       
   102     CVeiEditVideoView* self = CVeiEditVideoView::NewLC( aCutView, aCutAudioView, aSendAppUi );
       
   103     CleanupStack::Pop( self );
       
   104     return self;
       
   105     }
       
   106 
       
   107 CVeiEditVideoView* CVeiEditVideoView::NewLC( CVeiCutVideoView& aCutView,
       
   108                                              CVeiCutAudioView& aCutAudioView, 
       
   109                                              CSendUi& aSendAppUi )
       
   110     {
       
   111     CVeiEditVideoView* self = new ( ELeave ) CVeiEditVideoView( aCutView, aCutAudioView, aSendAppUi );
       
   112     CleanupStack::PushL( self );
       
   113     self->ConstructL();
       
   114     return self;
       
   115     }
       
   116 
       
   117 CVeiEditVideoView::CVeiEditVideoView( CVeiCutVideoView& aCutView, 
       
   118                                       CVeiCutAudioView& aCutAudioView, 
       
   119                                       CSendUi& aSendAppUi )
       
   120     : iCutView( aCutView ), 
       
   121       iCutAudioView( aCutAudioView ), 
       
   122       iSendAppUi( aSendAppUi ), 
       
   123       iOriginalAudioStartPoint( -1 ), 
       
   124       iOriginalAudioDuration( -1 ), 
       
   125       iMemoryCardChecked(EFalse),
       
   126       iOriginalOrientation( CAknAppUiBase::EAppUiOrientationAutomatic )
       
   127     {
       
   128     iOriginalVideoClipIndex =  - 1;
       
   129     iMovieSavedFlag = ETrue;
       
   130     SetNewTempFileNeeded( EFalse );
       
   131     iMovieFirstAddFlag = ETrue;
       
   132     iWaitMode = ENotWaiting;
       
   133     }
       
   134 
       
   135 void CVeiEditVideoView::ConstructL()
       
   136     {
       
   137     LOG( KVideoEditorLogFile, "CVeiEditVideoView::ConstructL: in" );
       
   138 
       
   139     BaseConstructL( R_VEI_EDIT_VIDEO_VIEW );
       
   140 
       
   141     CEikStatusPane* sp = StatusPane();
       
   142     iNaviPane = ( CAknNavigationControlContainer* ) sp->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) );
       
   143 
       
   144     /** General navilabel(mms state, movie size, movie time). 
       
   145     Is visible always except when in moving state */
       
   146     iEditLabel = CreateEditNaviLabelL();
       
   147 
       
   148 
       
   149     /** Navilabel when previewing video in small preview */
       
   150     iPreviewLabel = CreatePreviewNaviLabelL();
       
   151 
       
   152     /** Navipane updating timer when editor is on small preview - mode */
       
   153     iPreviewUpdatePeriodic = CPeriodic::NewL( CActive::EPriorityLow );
       
   154 
       
   155     /* volume bars are showed when volume is changed in small preview */
       
   156     //	iVolumeHider = CPeriodic::NewL( CActive::EPriorityLow );
       
   157 
       
   158     iVolumeNavi = iNaviPane->CreateVolumeIndicatorL(
       
   159         R_AVKON_NAVI_PANE_VOLUME_INDICATOR );
       
   160 
       
   161     /** Navilabel when audio or video clip is in moving state */
       
   162     iMoveLabel = CreateMoveNaviLabelL();
       
   163 
       
   164     iTempMaker = CVeiTempMaker::NewL();
       
   165 
       
   166     iErrorUI = CVeiErrorUI::NewL( *iCoeEnv );
       
   167 
       
   168     iMovie = CVedMovie::NewL( NULL );
       
   169     iMovie->RegisterMovieObserverL( this );
       
   170 
       
   171     /** All media files are added to video/audio tracks through mediaqueue */
       
   172     iMediaQueue = CVeiAddQueue::NewL( *this, * iMovie, * this );
       
   173 
       
   174     iOriginalAudioDuration = TTimeIntervalMicroSeconds(  - 1 );
       
   175     /* Create recorder with max priority. */
       
   176     iRecorder = CMdaAudioRecorderUtility::NewL( *this, NULL, EMdaPriorityMax,
       
   177                        TMdaPriorityPreference( KAudioPrefVideoRecording )
       
   178                        /*EMdaPriorityPreferenceQuality*/ );
       
   179     iAudioRecordPeriodic = CPeriodic::NewL( CActive::EPriorityStandard );
       
   180 
       
   181     /** Popup menus for video editor */
       
   182     iPopup = CVeiPopup::NewL( *this );
       
   183 
       
   184     LOG( KVideoEditorLogFile, "CVeiEditVideoView::ConstructL: out" );
       
   185     }
       
   186 
       
   187 TUid CVeiEditVideoView::Id()const
       
   188     {
       
   189     return TUid::Uid( EVeiEditVideoView );
       
   190     }
       
   191 
       
   192 CAknNavigationDecorator* CVeiEditVideoView::CreateMoveNaviLabelL()
       
   193     {
       
   194     CAknNaviLabel* movelabel = new( ELeave )CAknNaviLabel;
       
   195     movelabel->SetNaviLabelType( CAknNaviLabel::ENavigationLabel );
       
   196 
       
   197     CleanupStack::PushL( movelabel );
       
   198 
       
   199     CAknNavigationDecorator* decoratedFolder = CAknNavigationDecorator::NewL(
       
   200         iNaviPane, movelabel, CAknNavigationDecorator::ENotSpecified );
       
   201 
       
   202     CleanupStack::Pop( movelabel );
       
   203 
       
   204     CleanupStack::PushL( decoratedFolder );
       
   205     decoratedFolder->SetContainerWindowL( *iNaviPane );
       
   206     CleanupStack::Pop( decoratedFolder );
       
   207     decoratedFolder->MakeScrollButtonVisible( ETrue );
       
   208 
       
   209     return decoratedFolder;
       
   210     }
       
   211 
       
   212 CAknNavigationDecorator* CVeiEditVideoView::CreatePreviewNaviLabelL()
       
   213     {
       
   214     CVeiTimeLabelNavi* timelabelnavi = CVeiTimeLabelNavi::NewLC();
       
   215     CAknNavigationDecorator* decoratedFolder = CAknNavigationDecorator::NewL(
       
   216         iNaviPane, timelabelnavi, CAknNavigationDecorator::ENotSpecified );
       
   217     CleanupStack::Pop( timelabelnavi );
       
   218 
       
   219     CleanupStack::PushL( decoratedFolder );
       
   220     decoratedFolder->SetContainerWindowL( *iNaviPane );
       
   221     CleanupStack::Pop( decoratedFolder );
       
   222     decoratedFolder->MakeScrollButtonVisible( EFalse );
       
   223 
       
   224     return decoratedFolder;
       
   225     }
       
   226 
       
   227 /**
       
   228  * Default navilabel. Shows MMS,Size and Time information. 
       
   229  */
       
   230 CAknNavigationDecorator* CVeiEditVideoView::CreateEditNaviLabelL()
       
   231     {
       
   232     CVeiEditVideoLabelNavi* editvideolabelnavi = CVeiEditVideoLabelNavi::NewLC();
       
   233 
       
   234     editvideolabelnavi->SetState( CVeiEditVideoLabelNavi::EStateInitializing );
       
   235 
       
   236     CAknNavigationDecorator* navidecorator = CAknNavigationDecorator::NewL(
       
   237         iNaviPane, editvideolabelnavi, CAknNavigationDecorator::ENotSpecified );
       
   238 
       
   239     CleanupStack::Pop( editvideolabelnavi );
       
   240 
       
   241     CleanupStack::PushL( navidecorator );
       
   242     navidecorator->SetContainerWindowL( *iNaviPane );
       
   243     CleanupStack::Pop( navidecorator );
       
   244     navidecorator->MakeScrollButtonVisible( EFalse );
       
   245 
       
   246     return navidecorator;
       
   247     }
       
   248 
       
   249 CVeiEditVideoView::~CVeiEditVideoView()
       
   250     {
       
   251     LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: In" );
       
   252 
       
   253     if ( iProgressNote )
       
   254         {
       
   255         delete iProgressNote;
       
   256         iProgressNote = NULL;
       
   257         }
       
   258 
       
   259     if ( iPopup )
       
   260         {
       
   261         delete iPopup;
       
   262         iPopup = NULL;
       
   263         }
       
   264 
       
   265     LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iContainer" );
       
   266     if ( iContainer )
       
   267         {
       
   268         AppUi()->RemoveFromStack( iContainer );
       
   269         delete iContainer;
       
   270         iContainer = NULL;
       
   271         }
       
   272 
       
   273     LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iMediaQueue" );
       
   274     if ( iMediaQueue )
       
   275         {
       
   276         delete iMediaQueue;
       
   277         }
       
   278 
       
   279     LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iMovie" );
       
   280     if ( iMovie )
       
   281         {
       
   282         iMovie->Reset();
       
   283         //if application is closed from cut video view, observer is not
       
   284         //registered.
       
   285         if ( ( EProcessingMovieForCutting != iWaitMode ) &&
       
   286             ( ECuttingAudio != iWaitMode ) )
       
   287             {
       
   288             iMovie->UnregisterMovieObserver( this );
       
   289             }
       
   290         delete iMovie;
       
   291         iMovie = NULL;
       
   292         }
       
   293 
       
   294     if ( iAudioRecordPeriodic )
       
   295         {
       
   296         iAudioRecordPeriodic->Cancel();
       
   297         delete iAudioRecordPeriodic;
       
   298         }
       
   299 
       
   300     if ( iPreviewUpdatePeriodic )
       
   301         {
       
   302         iPreviewUpdatePeriodic->Cancel();
       
   303         delete iPreviewUpdatePeriodic;
       
   304         }
       
   305 
       
   306     LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iTempFile" );
       
   307     if ( iTempFile )
       
   308         {
       
   309         TInt err = iEikonEnv->FsSession().Delete( *iTempFile );
       
   310         if ( err )
       
   311             {
       
   312             // what to do when error occurs in destructor???
       
   313             }
       
   314         delete iTempFile;
       
   315         iTempFile = NULL;
       
   316         }
       
   317 
       
   318     LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iSaveToFileName" );
       
   319         
       
   320     if ( iSaveToFileName )
       
   321         {
       
   322         delete iSaveToFileName;
       
   323         iSaveToFileName = NULL;
       
   324         }
       
   325 
       
   326     if ( iTempRecordedAudio )
       
   327         {
       
   328         TInt err = iEikonEnv->FsSession().Delete( *iTempRecordedAudio );
       
   329         if ( err )
       
   330             {
       
   331             // what to do when error occurs in destructor???
       
   332             }
       
   333         delete iTempRecordedAudio;
       
   334         iTempRecordedAudio = NULL;
       
   335         }
       
   336 
       
   337     LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iTempMaker" );
       
   338         
       
   339     if ( iTempMaker )
       
   340         {
       
   341         delete iTempMaker;
       
   342         iTempMaker = NULL;
       
   343         }
       
   344 
       
   345     LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iErrorUI" );
       
   346     if ( iErrorUI )
       
   347         {
       
   348         delete iErrorUI;
       
   349         iErrorUI = NULL;
       
   350         }
       
   351 
       
   352     LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iAudioClipInfo" );
       
   353     delete iAudioClipInfo;
       
   354 
       
   355     LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iEditLabel" );
       
   356     delete iEditLabel;
       
   357 
       
   358     LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iMoveLabel" );
       
   359     delete iMoveLabel;
       
   360 
       
   361     LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iPreviewLabel" );
       
   362     delete iPreviewLabel;
       
   363 
       
   364     LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iRecorder" );
       
   365     if ( iRecorder )
       
   366         {
       
   367         delete iRecorder;
       
   368         iRecorder = NULL;
       
   369         }
       
   370 
       
   371     LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iVolumeHider" );
       
   372     if ( iVolumeHider )
       
   373         {
       
   374         iVolumeHider->Cancel();
       
   375         delete iVolumeHider;
       
   376         }
       
   377 
       
   378     LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: iVolumeNavi" );
       
   379     delete iVolumeNavi;
       
   380 
       
   381     delete iCallBack;
       
   382 
       
   383     LOG( KVideoEditorLogFile, "CVeiEditVideoView::~CVeiEditVideoView: Out" );
       
   384     }
       
   385 
       
   386 void CVeiEditVideoView::DialogDismissedL( TInt aButtonId )
       
   387     {
       
   388     LOGFMT2( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: In, aButtonId:%d, iWaitMode:%d", aButtonId, iWaitMode );
       
   389 
       
   390     IsEnoughFreeSpaceToSaveL();
       
   391 
       
   392     if ( aButtonId != EAknSoftkeyDone )
       
   393         {
       
   394         LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: In, 2" );
       
   395         CMdaAudioRecorderUtility::TState rState;
       
   396         rState = CMdaAudioClipUtility::ENotReady;
       
   397 
       
   398         if ( iRecorder )
       
   399             {
       
   400             rState = iRecorder->State();
       
   401             }
       
   402 
       
   403         if (( EOpeningAudioInfo == iWaitMode ) || ( CMdaAudioClipUtility::EOpen == rState ))
       
   404             {
       
   405             delete iAudioClipInfo;
       
   406             iAudioClipInfo = NULL;
       
   407             iWaitMode = EProcessingError;
       
   408             iMovie->CancelProcessing();
       
   409             }
       
   410         else
       
   411             {
       
   412             iWaitMode = EProcessingError;
       
   413             iMovie->CancelProcessing();
       
   414             }
       
   415         }
       
   416     else if ( EProcessingMovieSend == iWaitMode )
       
   417         {
       
   418         //SendMovieL();
       
   419         if ( !iCallBack )
       
   420             {
       
   421             TCallBack cb( CVeiEditVideoView::AsyncBackSend, this );
       
   422             iCallBack = new ( ELeave ) CAsyncCallBack( cb, CActive::EPriorityStandard );
       
   423             }
       
   424         iCallBack->CallBack();
       
   425         }
       
   426     else if ( EProcessingMovieTrimMms == iWaitMode )
       
   427         {
       
   428         SetNewTempFileNeeded( EFalse );
       
   429 
       
   430         LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 3, EProcessingMovieTrimMms" );
       
   431 
       
   432         RFs& fs = iEikonEnv->FsSession();
       
   433         TEntry entry;
       
   434         User::LeaveIfError( fs.Entry( *iTempFile, entry ));
       
   435         TInt tempFileSize = entry.iSize / 1024;
       
   436         TInt maxMmsSize = STATIC_CAST( CVeiEditVideoLabelNavi*, iEditLabel->DecoratedControl() )->GetMaxMmsSize();
       
   437 
       
   438         LOGFMT2( KVideoEditorLogFile, 
       
   439                 "CVeiEditVideoView::DialogDismissedL: 4, tempFileSize:%d, maxMmsSize:%d", tempFileSize, maxMmsSize );
       
   440 
       
   441         if ( iMovie->IsMovieMMSCompatible())
       
   442             {
       
   443             if ( tempFileSize <= maxMmsSize )
       
   444                 {
       
   445                 LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 5, MMS SIZE OK -- SEND" );
       
   446                 iWaitMode = EProcessingMovieSend;
       
   447                 iGivenSendCommand = KSenduiMtmMmsUid; // MMS
       
   448 
       
   449                 //SendMovieL();
       
   450                 if ( !iCallBack )
       
   451                     {
       
   452                     TCallBack cb( CVeiEditVideoView::AsyncBackSend, this );
       
   453                     iCallBack = new( ELeave )CAsyncCallBack( cb, CActive::EPriorityStandard );
       
   454                     }
       
   455                 iCallBack->CallBack();
       
   456                 }
       
   457             else
       
   458                 {
       
   459                 LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 6, MMS SIZE FAILED - to TRIMM" );
       
   460                 TBuf8 < 255 > conv8Filename;
       
   461                 CnvUtfConverter::ConvertFromUnicodeToUtf8( conv8Filename, *iTempFile );
       
   462                 iMovie->UnregisterMovieObserver( iContainer );
       
   463                 iMovie->UnregisterMovieObserver( this );
       
   464 
       
   465                 AppUi()->ActivateLocalViewL( TUid::Uid( EVeiTrimForMmsView ), TUid::Uid(0), conv8Filename );
       
   466                 }
       
   467             }
       
   468         else
       
   469             {
       
   470             // if movie is not mms capable, trimming it does not help, instead its quality should be set
       
   471             // trimming is made when other compatibility issues are fullfilled 
       
   472             LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 7, MMS Compatible FAILED - to TRIMM" );
       
   473             TBuf8 < KMaxFileName > conv8Filename;
       
   474             CnvUtfConverter::ConvertFromUnicodeToUtf8( conv8Filename, *iTempFile );
       
   475                 
       
   476             iMovie->UnregisterMovieObserver( iContainer );
       
   477             iMovie->UnregisterMovieObserver( this );
       
   478 
       
   479             AppUi()->ActivateLocalViewL( TUid::Uid( EVeiTrimForMmsView ), TUid::Uid( 0 ), conv8Filename );
       
   480             }
       
   481         iMovie->SetQuality( iBackupSaveQuality );
       
   482         return ;
       
   483         }
       
   484     else if (( EProcessingMovieSave == iWaitMode ) ||
       
   485              ( EProcessingMovieSaveThenQuit == iWaitMode ))
       
   486         {
       
   487         LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 8, EProcessingMovieSave|EProcessingMovieSaveThenQuit" );
       
   488         RFs& fs = iEikonEnv->FsSession();
       
   489 
       
   490         CFileMan* fileman = CFileMan::NewL( fs );
       
   491         CleanupStack::PushL( fileman );
       
   492 
       
   493         TInt moveErr( KErrNone );
       
   494 
       
   495         if ( iTempFile->Left( 1 ) == iSaveToFileName->Left( 1 ))
       
   496             {
       
   497             moveErr = fileman->Rename( *iTempFile, * iSaveToFileName );
       
   498             LOGFMT2( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 9, rename %S to %S", iTempFile, iSaveToFileName );
       
   499             }
       
   500         else
       
   501             {
       
   502             moveErr = fileman->Move( *iTempFile, * iSaveToFileName );
       
   503             LOGFMT2( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 10, moved %S to %S", iTempFile, iSaveToFileName );
       
   504             }
       
   505         CleanupStack::PopAndDestroy( fileman );
       
   506 
       
   507         delete iTempFile;
       
   508         iTempFile = NULL;
       
   509 
       
   510         if ( moveErr )
       
   511             {
       
   512             ShowGlobalErrorNote( moveErr );
       
   513             UpdateEditNaviLabel();
       
   514             iWaitMode = ENotWaiting;
       
   515             return ;
       
   516             }
       
   517 
       
   518         iMovieSavedFlag = ETrue;
       
   519 
       
   520         if ( EProcessingMovieSaveThenQuit == iWaitMode )
       
   521             {
       
   522             iMovie->Reset();
       
   523             iMovieFirstAddFlag = ETrue; // True for the next edit process.						
       
   524             }
       
   525 
       
   526         LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 11" );
       
   527         UpdateMediaGalleryL();
       
   528         LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 12, media gallery updated" );
       
   529 
       
   530         if ( EProcessingMovieSaveThenQuit == iWaitMode )
       
   531             {
       
   532             if ( !iCallBack )
       
   533                 {
       
   534                 TCallBack cb( CVeiEditVideoView::AsyncBackSaveThenExitL, this );
       
   535                 iCallBack = new( ELeave )CAsyncCallBack( cb, CActive::EPriorityStandard );
       
   536                                 
       
   537                 }
       
   538             iCallBack->CallBack();
       
   539             }
       
   540 
       
   541         LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL Out" );
       
   542         return ;
       
   543         }
       
   544     else if ( EProcessingMoviePreview == iWaitMode && ( iTempFile != NULL ))
       
   545         {
       
   546         iContainer->SetSelectionMode( CVeiEditVideoContainer::EModePreview );
       
   547         iContainer->PlayVideoFileL( *iTempFile, iFullScreenSelected );
       
   548         }
       
   549     else
       
   550         {
       
   551         if ( EProcessingError == iWaitMode )
       
   552             {
       
   553             LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 13" );
       
   554             if ( iTempFile )
       
   555                 {
       
   556                 RFs& fs = iEikonEnv->FsSession();
       
   557 
       
   558                 fs.Delete( *iTempFile );
       
   559                 delete iTempFile;
       
   560                 iTempFile = NULL;
       
   561                 SetNewTempFileNeeded( ETrue );
       
   562                 }
       
   563 
       
   564             iWaitMode = ENotWaiting;
       
   565             ShowGlobalErrorNote( iErrorNmb );
       
   566             LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 14" );
       
   567             UpdateEditNaviLabel();
       
   568             }
       
   569 
       
   570         if ( EProcessingAudioError == iWaitMode )
       
   571             {
       
   572             LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 15" );
       
   573             ShowErrorNote( R_VEI_ERRORNOTE_AUDIO_INSERTING_FAILED );
       
   574             LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: 16" );
       
   575             UpdateEditNaviLabel();
       
   576             iWaitMode = ENotWaiting;
       
   577             }
       
   578 
       
   579         if ( iChangedFromMMCToPhoneMemory )
       
   580             {
       
   581             HBufC* noteText = StringLoader::LoadLC( R_VED_MMC_NOT_INSERTED,
       
   582                                                         iEikonEnv );
       
   583             CAknInformationNote* informationNote = new( ELeave )
       
   584                                                     CAknInformationNote( ETrue );
       
   585             informationNote->ExecuteLD( *noteText );
       
   586 
       
   587             CleanupStack::PopAndDestroy( noteText );
       
   588             }
       
   589         }
       
   590     if ( EProcessingMovieSend != iWaitMode )
       
   591         {
       
   592         iWaitMode = ENotWaiting;
       
   593         }
       
   594     LOG( KVideoEditorLogFile, "CVeiEditVideoView::DialogDismissedL: Out" );
       
   595     }
       
   596 
       
   597 
       
   598 TInt CVeiEditVideoView::AsyncBackSend( TAny* aThis )
       
   599     {
       
   600     LOG( KVideoEditorLogFile, "CVeiEditVideoView::AsyncBackSend" );
       
   601 
       
   602     // In the asynchronous version, trap the rest of the functions 
       
   603     // to make sure that the caller's TRequestStatus is always 
       
   604     // completed, also in case of failures.
       
   605     CVeiEditVideoView* view = static_cast < CVeiEditVideoView*  > ( aThis );
       
   606     TInt err = KErrNone;
       
   607     TRAP( err, view->SendMovieL());
       
   608     LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::AsyncBackSend 1, err:%d", err );
       
   609            
       
   610     view->iWaitMode = ENotWaiting;
       
   611     User::LeaveIfError( err );
       
   612     return KErrNone;
       
   613     }
       
   614 
       
   615 TInt CVeiEditVideoView::AsyncBackSaveThenExitL( TAny* aThis )
       
   616     {
       
   617     LOG( KVideoEditorLogFile, "CVeiEditVideoView::AsyncBackSaveThenExitL In" );
       
   618 
       
   619     // In the asynchronous version, trap the rest of the functions 
       
   620     // to make sure that the caller's TRequestStatus is always 
       
   621     // completed, also in case of failures.
       
   622 
       
   623     CVeiEditVideoView* view = static_cast < CVeiEditVideoView*  > ( aThis );
       
   624 
       
   625     view->AppUi()->HandleCommandL( EAknCmdExit );
       
   626     LOG( KVideoEditorLogFile, "CVeiEditVideoView::AsyncBackSaveThenExitL 1" );
       
   627     return KErrNone;
       
   628     }
       
   629 
       
   630 void CVeiEditVideoView::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane*
       
   631     aMenuPane )
       
   632     {
       
   633     if ( !iContainer || !iMovie )
       
   634         {
       
   635         return ;
       
   636         }
       
   637     if ( aResourceId == R_VEI_EDIT_VIDEO_VIEW_MENU && CVeiEditVideoContainer
       
   638         ::EModeMixingAudio == iContainer->SelectionMode())
       
   639         {
       
   640         // Dim all the items and replace the with 
       
   641         // R_VEI_EDIT_VIDEO_VIEW_AUDIO_MIXING_MENU
       
   642         aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewInsert, ETrue );
       
   643         aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditVideo, ETrue );
       
   644         aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditAudio, ETrue );
       
   645         aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditText, ETrue );
       
   646         aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditImage, ETrue );
       
   647         aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewMovie, ETrue );
       
   648         aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewSettings, ETrue );
       
   649         aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditStartTransition, ETrue );
       
   650         aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditMiddleTransition, ETrue );
       
   651         aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditEndTransition, ETrue );
       
   652         aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewHelp, ETrue );
       
   653         aMenuPane->SetItemDimmed( EEikCmdExit, ETrue );
       
   654 
       
   655         aMenuPane->AddMenuItemsL( R_VEI_EDIT_VIDEO_VIEW_AUDIO_MIXING_MENU );
       
   656 
       
   657         return ;
       
   658         }
       
   659 
       
   660     if (( aResourceId == R_VEI_EDIT_VIDEO_VIEW_EDIT_VIDEO_MENU ) || 
       
   661         ( aResourceId == R_VEI_EDIT_VIDEO_VIEW_EDIT_VIDEO_SUBMENU ))
       
   662         {
       
   663         // @ : if muted, remove AdjustVolume, if video has no audio, remove AdjustVolume
       
   664         //if (!iMovie->VideoClipEditedHasAudio(iContainer->CurrentIndex()))				
       
   665         if ( !( iMovie->VideoClipInfo( iContainer->CurrentIndex()))->HasAudio())
       
   666             {
       
   667             aMenuPane->DeleteMenuItem( EVeiCmdEditVideoAdjustVolume );
       
   668             }
       
   669 
       
   670         if ( iMovie->VideoClipCount() < 2 )
       
   671             {
       
   672             aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewEditVideoMove );
       
   673             }
       
   674 
       
   675         if ( iMovie->VideoClipIsMuteable( iContainer->CurrentIndex()) == EFalse
       
   676             )
       
   677             {
       
   678             aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewEditVideoMute );
       
   679             aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewEditVideoUnmute );
       
   680             }
       
   681         else if ( iMovie->VideoClipIsMuted( iContainer->CurrentIndex()))
       
   682             {
       
   683             aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewEditVideoMute );
       
   684             }
       
   685         else
       
   686             {
       
   687             aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewEditVideoUnmute );
       
   688             }
       
   689         // remove "cut" if video duration < 1 sec. because engine/codec(s) do not handle them wholly at the moment
       
   690         TTimeIntervalMicroSeconds duration = iMovie->VideoClipInfo( 
       
   691                                         iContainer->CurrentIndex())->Duration();
       
   692         if ( duration.Int64() < KMinCutVideoLength )
       
   693             {
       
   694             aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewEditVideoCutting );
       
   695             }
       
   696         }
       
   697 
       
   698     if ( aResourceId == R_VEI_EDIT_VIDEO_VIEW_MOVIE_SUBMENU )
       
   699         {
       
   700         if ( STATIC_CAST( CVeiEditVideoLabelNavi* , 
       
   701                           iEditLabel->DecoratedControl())->IsMMSAvailable())
       
   702             {
       
   703             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewTrimForMms, ETrue );
       
   704             }
       
   705 
       
   706         /*TInt tempint;
       
   707         if (aMenuPane->MenuItemExists(EVeiCmdEditVideoMixAudio, tempint))
       
   708         {
       
   709         if ((iMovie->VideoClipCount() > 0 && 
       
   710         (iMovie->VideoClipEditedHasAudio(0) && 
       
   711         iMovie->VideoClipEditedHasAudio(iMovie->VideoClipCount() - 1)))
       
   712         && iMovie->AudioClipCount() > 0)*/
       
   713         if ( MixingConditionsOk())
       
   714             {
       
   715             aMenuPane->SetItemDimmed( EVeiCmdEditVideoMixAudio, EFalse );
       
   716             }
       
   717         else
       
   718             {
       
   719             aMenuPane->SetItemDimmed( EVeiCmdEditVideoMixAudio, ETrue );
       
   720             }
       
   721         //}	
       
   722         }
       
   723 
       
   724     if ( aResourceId == R_VEI_EDIT_VIDEO_VIEW_MENU )
       
   725         {
       
   726         if ( iSendKey )
       
   727         //Display send menu. 
       
   728             {
       
   729             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewInsert, ETrue );
       
   730             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditVideo, ETrue );
       
   731             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditAudio, ETrue );
       
   732             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditText, ETrue );
       
   733             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditImage, ETrue );
       
   734             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewMovie, ETrue );
       
   735             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewSettings, ETrue );
       
   736             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditStartTransition, ETrue );
       
   737             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditMiddleTransition, ETrue );
       
   738             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditEndTransition, ETrue );
       
   739             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewHelp, ETrue );
       
   740             aMenuPane->SetItemDimmed( EEikCmdExit, ETrue );
       
   741 
       
   742             ShowAndHandleSendMenuCommandsL();
       
   743 
       
   744             iSendKey = EFalse;
       
   745             return ;
       
   746             }
       
   747 
       
   748         if ( iMovie->VideoClipCount() == 0 )
       
   749             {
       
   750             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditVideo, ETrue );
       
   751             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditText, ETrue );
       
   752             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditImage, ETrue );
       
   753             }
       
   754 
       
   755 
       
   756         if ( iMovie->VideoClipCount() == 0 && iMovie->AudioClipCount() == 0 )
       
   757             {
       
   758             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditStartTransition, ETrue );
       
   759             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditMiddleTransition, ETrue );
       
   760             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditEndTransition, ETrue );
       
   761 
       
   762             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewMovie, ETrue );
       
   763             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditAudio, ETrue );
       
   764             return ;
       
   765             }
       
   766         else
       
   767             {
       
   768             TInt index = 0;
       
   769 
       
   770             aMenuPane->ItemAndPos( EVeiCmdEditVideoViewHelp, index );
       
   771             iSendAppUi.AddSendMenuItemL( *aMenuPane, index, EVeiCmdEditVideoViewSend );
       
   772             }
       
   773         /* Remove irrelevant "edit" menus. */
       
   774 
       
   775         if ( iContainer->CursorLocation() != VideoEditor::ECursorOnClip )
       
   776             {
       
   777             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditText, ETrue );
       
   778             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditVideo, ETrue );
       
   779             }
       
   780         /* Checks if title or image */
       
   781         if (( iContainer->CursorLocation() == VideoEditor::ECursorOnClip ) && 
       
   782             ( iMovie->VideoClipCount() > 0 ) && 
       
   783             ( iMovie->VideoClipInfo( iContainer->CurrentIndex())->Class() 
       
   784                                                 == EVedVideoClipClassGenerated
       
   785             ))
       
   786             {
       
   787             /* Now refine the menu dimming to specific generators. */
       
   788             TUid generatorUid = iMovie->VideoClipInfo( 
       
   789                                 iContainer->CurrentIndex())->Generator()->Uid();
       
   790 
       
   791             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditVideo, ETrue );
       
   792             if ( generatorUid == KUidImageClipGenerator )
       
   793                 {
       
   794                 aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditText, ETrue );
       
   795                 }
       
   796             else
       
   797                 {
       
   798                 aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditImage, ETrue )
       
   799                     ;
       
   800                 }
       
   801             }
       
   802         else
       
   803             {
       
   804             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditImage, ETrue );
       
   805             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditText, ETrue );
       
   806             }
       
   807 
       
   808 
       
   809         if ( iContainer->CurrentClipIsFile())
       
   810             {
       
   811             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditText, ETrue );
       
   812             }
       
   813         else
       
   814             {
       
   815             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditVideo, ETrue );
       
   816             }
       
   817 
       
   818         if ( iContainer->CursorLocation() != VideoEditor::ECursorOnTransition )
       
   819             {
       
   820             aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewEditStartTransition )
       
   821                                       ;
       
   822             aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewEditEndTransition );
       
   823             aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewEditMiddleTransition
       
   824                                       );
       
   825             }
       
   826         if (( iContainer->CursorLocation() != VideoEditor::ECursorOnAudio ) || 
       
   827             ( iMovie->AudioClipCount() == 0 ))
       
   828             {
       
   829             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditAudio, ETrue );
       
   830             }
       
   831 
       
   832         /* Remove irrelevant transition effect menus. */
       
   833         if ( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio )
       
   834             {
       
   835             aMenuPane->SetItemDimmed( EVeiCmdEditVideoViewEditText, ETrue );
       
   836             }
       
   837 
       
   838         if ( iContainer->CursorLocation() == VideoEditor::ECursorOnTransition )
       
   839             {
       
   840             if ( iContainer->CurrentIndex() == 0 )
       
   841                 {
       
   842                 aMenuPane->DeleteMenuItem(
       
   843                     EVeiCmdEditVideoViewEditEndTransition );
       
   844                 aMenuPane->DeleteMenuItem(
       
   845                     EVeiCmdEditVideoViewEditMiddleTransition );
       
   846                 }
       
   847             else if ( iContainer->CurrentIndex() < iMovie->VideoClipCount())
       
   848                 {
       
   849                 aMenuPane->DeleteMenuItem(
       
   850                     EVeiCmdEditVideoViewEditStartTransition );
       
   851                 aMenuPane->DeleteMenuItem(
       
   852                     EVeiCmdEditVideoViewEditEndTransition );
       
   853                 }
       
   854             else
       
   855                 {
       
   856                 aMenuPane->DeleteMenuItem(
       
   857                     EVeiCmdEditVideoViewEditStartTransition );
       
   858                 aMenuPane->DeleteMenuItem(
       
   859                     EVeiCmdEditVideoViewEditMiddleTransition );
       
   860                 }
       
   861             }
       
   862         }
       
   863 
       
   864     if ( aResourceId == R_VEI_EDIT_VIDEO_VIEW_EDIT_START_TRANSITION_SUBMENU )
       
   865         {
       
   866         switch ( iMovie->StartTransitionEffect())
       
   867             {
       
   868             case EVedStartTransitionEffectNone:
       
   869                 aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewTransitionNone );
       
   870                 break;
       
   871             case EVedStartTransitionEffectFadeFromBlack:
       
   872                 aMenuPane->DeleteMenuItem(
       
   873                     EVeiCmdEditVideoViewTransitionFadeFromBlack );
       
   874                 break;
       
   875             case EVedStartTransitionEffectFadeFromWhite:
       
   876                 aMenuPane->DeleteMenuItem(
       
   877                     EVeiCmdEditVideoViewTransitionFadeFromWhite );
       
   878                 break;
       
   879             default:
       
   880                 break;
       
   881             }
       
   882         }
       
   883 
       
   884     if ( aResourceId == R_VEI_EDIT_VIDEO_VIEW_EDIT_END_TRANSITION_SUBMENU )
       
   885         {
       
   886         switch ( iMovie->EndTransitionEffect())
       
   887             {
       
   888             case EVedEndTransitionEffectNone:
       
   889                 aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewTransitionNone );
       
   890                 break;
       
   891             case EVedEndTransitionEffectFadeToBlack:
       
   892                 aMenuPane->DeleteMenuItem(
       
   893                     EVeiCmdEditVideoViewTransitionFadeToBlack );
       
   894                 break;
       
   895             case EVedEndTransitionEffectFadeToWhite:
       
   896                 aMenuPane->DeleteMenuItem(
       
   897                     EVeiCmdEditVideoViewTransitionFadeToWhite );
       
   898                 break;
       
   899             default:
       
   900                 break;
       
   901             }
       
   902         }
       
   903 
       
   904     if ( aResourceId == R_VEI_EDIT_VIDEO_VIEW_EDIT_MIDDLE_TRANSITION_SUBMENU )
       
   905         {
       
   906         TInt currentindex = iContainer->CurrentIndex() - 1;
       
   907         switch ( iMovie->MiddleTransitionEffect( currentindex ))
       
   908             {
       
   909             case EVedMiddleTransitionEffectNone:
       
   910                 aMenuPane->DeleteMenuItem( EVeiCmdEditVideoViewTransitionNone );
       
   911                 break;
       
   912             case EVedMiddleTransitionEffectDipToBlack:
       
   913                 aMenuPane->DeleteMenuItem(
       
   914                     EVeiCmdEditVideoViewTransitionDipToBlack );
       
   915                 break;
       
   916             case EVedMiddleTransitionEffectDipToWhite:
       
   917                 aMenuPane->DeleteMenuItem(
       
   918                     EVeiCmdEditVideoViewTransitionDipToWhite );
       
   919                 break;
       
   920             case EVedMiddleTransitionEffectCrossfade:
       
   921                 aMenuPane->DeleteMenuItem(
       
   922                     EVeiCmdEditVideoViewTransitionCrossfade );
       
   923                 break;
       
   924             case EVedMiddleTransitionEffectWipeLeftToRight:
       
   925                 aMenuPane->DeleteMenuItem(
       
   926                     EVeiCmdEditVideoViewTransitionWipeFromLeft );
       
   927                 break;
       
   928             case EVedMiddleTransitionEffectWipeRightToLeft:
       
   929                 aMenuPane->DeleteMenuItem(
       
   930                     EVeiCmdEditVideoViewTransitionWipeFromRight );
       
   931                 break;
       
   932             case EVedMiddleTransitionEffectWipeTopToBottom:
       
   933                 aMenuPane->DeleteMenuItem(
       
   934                     EVeiCmdEditVideoViewTransitionWipeFromTop );
       
   935                 break;
       
   936             case EVedMiddleTransitionEffectWipeBottomToTop:
       
   937                 aMenuPane->DeleteMenuItem(
       
   938                     EVeiCmdEditVideoViewTransitionWipeFromBottom );
       
   939                 break;
       
   940             default:
       
   941                 break;
       
   942             }
       
   943         }
       
   944     }
       
   945 
       
   946 void CVeiEditVideoView::HandleCommandL( TInt aCommand )
       
   947     {
       
   948     LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::HandleCommandL( %d ): In", aCommand );
       
   949 
       
   950     // At the startup HandleCommandL may get called before iContainer
       
   951     // has been constructed.
       
   952     if ( !iContainer )
       
   953         {
       
   954         LOG( KVideoEditorLogFile, "\tiContainer == NULL" );
       
   955         AppUi()->HandleCommandL( aCommand );
       
   956         return ;
       
   957         }
       
   958 
       
   959     TInt index;
       
   960     switch ( aCommand )
       
   961         {
       
   962         /* Cursor is on transition and up/key key is pressed*/
       
   963         case EVeiCmdEditVideoViewTransitionKeyUp:
       
   964                 {
       
   965                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionKeyUp" );
       
   966                 BrowseStartTransition( ETrue );
       
   967                 break;
       
   968                 }
       
   969         case EVeiCmdEditVideoViewTransitionKeyDown:
       
   970                 {
       
   971                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionKeyDown" );
       
   972                 BrowseStartTransition( EFalse );
       
   973                 break;
       
   974                 }
       
   975         case EVeiCmdSendMovie:
       
   976                 {
       
   977                 LOG( KVideoEditorLogFile, "\tEVeiCmdSendMovie" );
       
   978                 if (( iMovie->VideoClipCount() == 0 ) && 
       
   979                     ( iMovie->AudioClipCount() == 0 ))
       
   980                     {
       
   981                     iSendKey = EFalse;
       
   982                     }
       
   983                 else
       
   984                     {
       
   985                     MenuBar()->TryDisplayMenuBarL();
       
   986                     }
       
   987                 break;
       
   988                 }
       
   989         case EAknSoftkeyDone:
       
   990                 {
       
   991                 LOG( KVideoEditorLogFile, "\tEAknSoftkeyDone" );
       
   992 
       
   993                 /*if (CVeiEditVideoContainer::EModeMixingAudio == iContainer->SelectionMode())
       
   994                 {
       
   995                 Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
       
   996                 Cba()->DrawDeferred();
       
   997                 iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
       
   998                 //iContainer->ArrowsControl();
       
   999                 break;	
       
  1000                 }	
       
  1001                  */
       
  1002 
       
  1003                 if ( CVeiEditVideoContainer::EModeMixingAudio == iContainer->SelectionMode())
       
  1004                     
       
  1005                     {
       
  1006 
       
  1007                     MixAudio();
       
  1008 
       
  1009                     Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
       
  1010                     Cba()->DrawDeferred();
       
  1011 
       
  1012                     VideoEditor::TCursorLocation cursorLocation = iContainer->CursorLocation();
       
  1013                     if (( cursorLocation == VideoEditor::ECursorOnClip ) && 
       
  1014                         ( iContainer->SelectionMode() == CVeiEditVideoContainer::EModeSlowMotion ))
       
  1015                         
       
  1016                         {
       
  1017                         iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
       
  1018                         iContainer->ArrowsControl();
       
  1019                         }
       
  1020                     else
       
  1021                         {
       
  1022                         iOriginalAudioClipIndex =  - 1;
       
  1023                         iOriginalVideoClipIndex =  - 1;
       
  1024                         iOriginalAudioStartPoint = TTimeIntervalMicroSeconds( -1 );
       
  1025                         iOriginalAudioDuration = TTimeIntervalMicroSeconds(  -1 );
       
  1026                             
       
  1027 
       
  1028                         iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
       
  1029                         }
       
  1030                     SetEditorState( EEdit );
       
  1031                     UpdateEditNaviLabel();
       
  1032 
       
  1033                     // Setting the cursor location resets the image in the video display box
       
  1034                     iContainer->SetCursorLocation( cursorLocation );
       
  1035                     }
       
  1036                 break;
       
  1037                 }
       
  1038 
       
  1039         case EAknSoftkeyOk:
       
  1040                 {
       
  1041                 LOG( KVideoEditorLogFile, "\tEAknSoftkeyOk" );
       
  1042 
       
  1043                 if ( CVeiEditVideoContainer::EModeAdjustVolume == iContainer->SelectionMode())
       
  1044                     
       
  1045                     {
       
  1046                     AdjustVolumeL();
       
  1047                     SetEditorState( EEdit );
       
  1048                     }
       
  1049 
       
  1050                 Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
       
  1051                 Cba()->DrawDeferred();
       
  1052 
       
  1053                 if (( iContainer->CursorLocation() == VideoEditor::ECursorOnClip ) &&
       
  1054                     ( iContainer->SelectionMode() == CVeiEditVideoContainer::EModeSlowMotion ))
       
  1055                     
       
  1056                     {
       
  1057                     iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
       
  1058                     iContainer->ArrowsControl();
       
  1059                     }
       
  1060                 else
       
  1061                     {
       
  1062                     iOriginalAudioClipIndex =  - 1;
       
  1063                     iOriginalVideoClipIndex =  - 1;
       
  1064                     iOriginalAudioStartPoint = TTimeIntervalMicroSeconds(  -1 );
       
  1065                     iOriginalAudioDuration = TTimeIntervalMicroSeconds(  -1 );
       
  1066 
       
  1067                     iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
       
  1068                     }
       
  1069                 UpdateEditNaviLabel();
       
  1070                 break;
       
  1071                 }
       
  1072         case EAknSoftkeyCancel:
       
  1073         case EVeiCmdEditVideoMixAudioCancel:
       
  1074                 {
       
  1075                 LOG( KVideoEditorLogFile, "\tEAknSoftkeyCancel||EVeiCmdEditVideoMixAudioCancel" );
       
  1076 
       
  1077                 Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
       
  1078                 Cba()->DrawDeferred();
       
  1079 
       
  1080                 SetEditorState( EEdit );
       
  1081 
       
  1082                 if ( CVeiEditVideoContainer::EModeMixingAudio == iContainer->SelectionMode() ||
       
  1083                      CVeiEditVideoContainer::EModeAdjustVolume == iContainer->SelectionMode())
       
  1084                     {
       
  1085                     iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
       
  1086                     // Setting the cursor location resets the image in the video display box
       
  1087                     iContainer->SetCursorLocation( iContainer->CursorLocation());
       
  1088                     break;
       
  1089                     }
       
  1090 
       
  1091                 if (( iContainer->CursorLocation() == VideoEditor::ECursorOnClip ) &&
       
  1092                      ( iContainer->SelectionMode() == CVeiEditVideoContainer::EModeSlowMotion ))
       
  1093                     {
       
  1094                     iMovie->VideoClipSetSpeed( iContainer->CurrentIndex(), iOriginalVideoSpeed );
       
  1095                     iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
       
  1096                         
       
  1097                     iContainer->ArrowsControl();
       
  1098                     }
       
  1099                 else
       
  1100                     {
       
  1101                     if ( iContainer->CursorLocation() == VideoEditor
       
  1102                         ::ECursorOnAudio )
       
  1103                         {
       
  1104                         if ( iOriginalAudioStartPoint >= TTimeIntervalMicroSeconds( 0 ))
       
  1105                             {
       
  1106                             iMovie->AudioClipSetStartTime( iContainer->CurrentIndex(), iOriginalAudioStartPoint );
       
  1107                             iOriginalAudioStartPoint = TTimeIntervalMicroSeconds(  -1 );
       
  1108                             iMovie->AudioClipSetCutOutTime( iContainer->CurrentIndex(), iOriginalAudioDuration );
       
  1109                             iOriginalAudioDuration = TTimeIntervalMicroSeconds( -1 );
       
  1110                             }
       
  1111                         else
       
  1112                             {
       
  1113                             index = iContainer->CurrentIndex();
       
  1114 
       
  1115                             iContainer->SetCurrentIndex( iOriginalAudioClipIndex );
       
  1116                             iOriginalAudioClipIndex =  - 1;
       
  1117                             iOriginalAudioDuration = TTimeIntervalMicroSeconds( -1 );
       
  1118 
       
  1119                             iMovie->RemoveAudioClip( index );
       
  1120                             }
       
  1121                         }
       
  1122                     else
       
  1123                         {
       
  1124                         if ( iContainer->SelectionMode() != CVeiEditVideoContainer::EModeDuration )
       
  1125                             {
       
  1126                             iMovie->VideoClipSetIndex( iContainer->CurrentIndex(), iOriginalVideoClipIndex );
       
  1127                             iContainer->SetVideoCursorPosition( iOriginalVideoClipIndex );
       
  1128                             iOriginalVideoClipIndex =  - 1;
       
  1129                             }
       
  1130                         else
       
  1131                             {
       
  1132                             CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
       
  1133                             if ( info->Class() == EVedVideoClipClassGenerated )
       
  1134                                 {
       
  1135                                 if ( info->Generator()->Uid() == KUidTitleClipGenerator )
       
  1136                                     {
       
  1137                                     CVeiTitleClipGenerator* generator =
       
  1138                                                     STATIC_CAST( CVeiTitleClipGenerator* , info->Generator());
       
  1139                                     generator->SetDuration( TTimeIntervalMicroSeconds(
       
  1140                                                                 iOriginalVideoCutOutTime.Int64() -
       
  1141                                                                 iOriginalVideoCutInTime.Int64()));
       
  1142                                     }
       
  1143                                 else if ( info->Generator()->Uid() == KUidImageClipGenerator )
       
  1144                                     {
       
  1145                                     CVeiImageClipGenerator* generator =
       
  1146                                             STATIC_CAST( CVeiImageClipGenerator* , info->Generator());
       
  1147                                     generator->SetDuration( TTimeIntervalMicroSeconds(
       
  1148                                                                 iOriginalVideoCutOutTime.Int64() -
       
  1149                                                                 iOriginalVideoCutInTime.Int64()));
       
  1150                                     }
       
  1151                                 }
       
  1152                             }
       
  1153                         }
       
  1154                     }
       
  1155 
       
  1156                 if ( iContainer->SelectionMode() == CVeiEditVideoContainer
       
  1157                     ::EModePreview )
       
  1158                     {
       
  1159                     iContainer->SetBlackScreen( EFalse );
       
  1160                     iContainer->SetRect( AppUi()->ClientRect());
       
  1161                     iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
       
  1162                     iContainer->ArrowsControl();
       
  1163                     }
       
  1164                 else
       
  1165                     {
       
  1166                     iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
       
  1167                     UpdateEditNaviLabel();
       
  1168                     }
       
  1169                 break;
       
  1170                 }
       
  1171         case EVeiCmdEditVideoViewSend:
       
  1172                 {
       
  1173                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewSend" );
       
  1174                 ShowAndHandleSendMenuCommandsL();
       
  1175                 break;
       
  1176                 }
       
  1177 
       
  1178         case EVeiCmdEditVideoViewPreviewLarge:
       
  1179         case EVeiCmdEditVideoViewPreviewSmall:
       
  1180                 {
       
  1181                 LOG( KVideoEditorLogFile, 
       
  1182                     "\tEVeiCmdEditVideoViewPreviewLarge||EVeiCmdEditVideoViewPreviewSmall" );
       
  1183 
       
  1184                 if ( CVeiEditVideoContainer::EModeMixingAudio == iContainer->SelectionMode())
       
  1185                     {
       
  1186                     MixAudio();
       
  1187                     }
       
  1188 
       
  1189                 if ( IsEnoughFreeSpaceToSaveL())
       
  1190                     {
       
  1191                     if ( aCommand == EVeiCmdEditVideoViewPreviewLarge )
       
  1192                         {
       
  1193                         iFullScreenSelected = ETrue;
       
  1194                         }
       
  1195                     else
       
  1196                         {
       
  1197                         iFullScreenSelected = EFalse;
       
  1198                         }
       
  1199                     iWaitMode = EProcessingMoviePreview;
       
  1200                     StartTempFileProcessingL();
       
  1201                     }
       
  1202                 break;
       
  1203                 }
       
  1204 
       
  1205             /**
       
  1206              * Trim for MMS
       
  1207              */
       
  1208         case EVeiCmdEditVideoViewTrimForMms:
       
  1209                 {
       
  1210                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTrimForMms" );
       
  1211                 if ( IsEnoughFreeSpaceToSaveL())
       
  1212                     {
       
  1213                     iWaitMode = EProcessingMovieTrimMms;
       
  1214                     StartTempFileProcessingL();
       
  1215                     }
       
  1216                 break;
       
  1217                 }
       
  1218             /**
       
  1219              * Cut (Audio and Video)
       
  1220              */
       
  1221         case EVeiCmdEditVideoViewEditVideoCutting:
       
  1222                 {
       
  1223                 LOG( KVideoEditorLogFile, 
       
  1224                     "\tEVeiCmdEditVideoViewEditVideoCutting" );
       
  1225 
       
  1226                 if ( IsEnoughFreeSpaceToSaveL())
       
  1227                     {
       
  1228                     // Cut video
       
  1229                     if ( iContainer->CursorLocation() == VideoEditor::ECursorOnClip )
       
  1230                         {
       
  1231                         __ASSERT_ALWAYS( iMovie->VideoClipCount() > 0, 
       
  1232                                          User::Panic( _L( "VideoEditor" ), 34 ));
       
  1233 
       
  1234                         iCutVideoIndex = iContainer->CurrentIndex();
       
  1235                         iWaitMode = EProcessingMovieForCutting;
       
  1236                         iOriginalCutInTime = iMovie->VideoClipCutInTime( iCutVideoIndex );
       
  1237                         iOriginalCutOutTime = iMovie->VideoClipCutOutTime( iCutVideoIndex );
       
  1238 
       
  1239                         iMovie->UnregisterMovieObserver( iContainer );
       
  1240                         iMovie->UnregisterMovieObserver( this );
       
  1241 
       
  1242                         AppUi()->DeactivateActiveViewL();
       
  1243 
       
  1244                         // set file name & clip
       
  1245                         iCutView.SetVideoClipAndIndex( *iMovie, iCutVideoIndex )
       
  1246                             ;
       
  1247 
       
  1248                         // activate cut  view
       
  1249                         AppUi()->ActivateLocalViewL( iCutView.Id());
       
  1250                         }
       
  1251                     else if ( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio )
       
  1252                     // Cut audio
       
  1253                         {
       
  1254                         __ASSERT_ALWAYS( iMovie->AudioClipCount() > 0, 
       
  1255                                          User::Panic( _L( "VideoEditor" ), 34 ));
       
  1256 
       
  1257                         iCutAudioIndex = iContainer->CurrentIndex();
       
  1258                         iWaitMode = ECuttingAudio;
       
  1259                         iOriginalAudioCutInTime = iMovie->AudioClipCutInTime( iCutAudioIndex );
       
  1260                         iOriginalAudioCutOutTime = iMovie->AudioClipCutOutTime( iCutAudioIndex );
       
  1261 
       
  1262                         iMovie->UnregisterMovieObserver( iContainer );
       
  1263                         iMovie->UnregisterMovieObserver( this );
       
  1264 
       
  1265                         AppUi()->DeactivateActiveViewL();
       
  1266 
       
  1267                         // set file name & clip
       
  1268                         iCutAudioView.SetVideoClipAndIndex( *iMovie, iCutAudioIndex );
       
  1269                         // activate cut  view
       
  1270                         AppUi()->ActivateLocalViewL( TUid::Uid( EVeiCutAudioView ));
       
  1271                         }
       
  1272                     }
       
  1273                 break;
       
  1274                 }
       
  1275             /**
       
  1276              * Selection (joystick).
       
  1277              */
       
  1278         case EVeiCmdEditVideoViewContainerShowMenu:
       
  1279                 {
       
  1280                 LOG( KVideoEditorLogFile, 
       
  1281                     "\tEVeiCmdEditVideoViewContainerShowMenu" );
       
  1282 
       
  1283                 //preview popup
       
  1284                 if ( iEditorState != EEdit )
       
  1285                     {
       
  1286                     if ( iEditorState == CVeiEditVideoView::EQuickPreview )
       
  1287                         {
       
  1288                         StopNaviPaneUpdateL();
       
  1289                         iContainer->PauseVideoL();
       
  1290                         LOG( KVideoEditorLogFile, 
       
  1291                             "\tEVeiCmdEditVideoViewContainerShowMenu, setting R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK" );
       
  1292                         Cba()->SetCommandSetL( R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK
       
  1293                             );
       
  1294                         Cba()->DrawDeferred();
       
  1295                         }
       
  1296                     MenuBar()->SetMenuTitleResourceId( R_VEI_PREVIEW_BAR );
       
  1297                     MenuBar()->TryDisplayMenuBarL();
       
  1298                     MenuBar()->SetMenuTitleResourceId(
       
  1299                             R_VEI_MENUBAR_EDIT_VIDEO_VIEW );
       
  1300                     break;
       
  1301                     }
       
  1302                 switch ( iContainer->CursorLocation())
       
  1303                     {
       
  1304                     case VideoEditor::ECursorOnAudio: 
       
  1305                         {
       
  1306                         iPopup->ShowEditAudioPopupList();
       
  1307                         break;
       
  1308                         }
       
  1309                     case VideoEditor::ECursorOnClip: 
       
  1310                         {
       
  1311                         if ( iMovie->VideoClipInfo( iContainer->CurrentIndex())->Class() == EVedVideoClipClassFile )
       
  1312                             {
       
  1313                             iPopup->ShowEditVideoPopupList();
       
  1314                             }
       
  1315                         else
       
  1316                             {
       
  1317 
       
  1318                             TUid generatorUid = iMovie->VideoClipInfo(
       
  1319                                                     iContainer->CurrentIndex())->Generator()->Uid();
       
  1320                             if ( generatorUid == KUidImageClipGenerator )
       
  1321                             // Image 
       
  1322                                 {
       
  1323                                 iPopup->ShowEditImagePopupList();
       
  1324                                 }
       
  1325                             else
       
  1326                             // Text
       
  1327                                 {
       
  1328                                 iPopup->ShowEditTextPopupList();
       
  1329                                 }
       
  1330                             }
       
  1331                         break;
       
  1332                         }
       
  1333                     /**
       
  1334                      * Cursor on video transition.
       
  1335                      */
       
  1336                     case VideoEditor::ECursorOnTransition: 
       
  1337                         {
       
  1338                         if ( iContainer->CurrentIndex() == 0 )
       
  1339                             {
       
  1340                             iPopup->ShowStartTransitionPopupListL();
       
  1341                             }
       
  1342                         else if ( iContainer->CurrentIndex() < iMovie->VideoClipCount())
       
  1343                             {
       
  1344                             iPopup->ShowMiddleTransitionPopupListL();
       
  1345                             }
       
  1346                         else
       
  1347                             {
       
  1348                             iPopup->ShowEndTransitionPopupListL();
       
  1349                             }
       
  1350                         break;
       
  1351                         }
       
  1352                 default:
       
  1353                     break;
       
  1354                     }
       
  1355                 break;
       
  1356                 }
       
  1357         case EVeiCmdEditVideoViewInsert:
       
  1358         case EVeiCmdEditVideoViewEditVideo:
       
  1359         case EVeiCmdEditVideoViewEditAudio:
       
  1360             LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsert||EVeiCmdEditVideoViewEditVideo||EVeiCmdEditVideoViewEditAudio" );
       
  1361             break;
       
  1362         case EVeiCmdEditVideoViewTransitionNone:
       
  1363                 {
       
  1364                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionNone" );
       
  1365 
       
  1366                 if ( iContainer->CurrentIndex() == 0 )
       
  1367                     {
       
  1368                     iMovie->SetStartTransitionEffect( EVedStartTransitionEffectNone );
       
  1369                     }
       
  1370                 else if ( iContainer->CurrentIndex() < iMovie->VideoClipCount())
       
  1371                     {
       
  1372                     index = iContainer->CurrentIndex() - 1;
       
  1373                     iMovie->SetMiddleTransitionEffect( EVedMiddleTransitionEffectNone, index );
       
  1374                     }
       
  1375                 else
       
  1376                     {
       
  1377                     iMovie->SetEndTransitionEffect( EVedEndTransitionEffectNone );
       
  1378                     }
       
  1379                 break;
       
  1380                 }
       
  1381         case EVeiCmdEditVideoViewTransitionFadeFromBlack:
       
  1382                 {
       
  1383                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionFadeFromBlack" );
       
  1384                 __ASSERT_ALWAYS( iContainer->CurrentIndex() == 0, User::Panic( _L( "VideoEditor" ), 34 ));
       
  1385                 iMovie->SetStartTransitionEffect( EVedStartTransitionEffectFadeFromBlack );
       
  1386                 break;
       
  1387                 }
       
  1388         case EVeiCmdEditVideoViewTransitionFadeFromWhite:
       
  1389                 {
       
  1390                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionFadeFromWhite" );
       
  1391                 __ASSERT_ALWAYS( iContainer->CurrentIndex() == 0, User::Panic( _L( "VideoEditor" ), 34 ));
       
  1392                 iMovie->SetStartTransitionEffect( EVedStartTransitionEffectFadeFromWhite );
       
  1393                 break;
       
  1394                 }
       
  1395         case EVeiCmdEditVideoViewTransitionDipToBlack:
       
  1396                 {
       
  1397                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionDipToBlack" );
       
  1398                 __ASSERT_ALWAYS( iContainer->CurrentIndex() < iMovie->VideoClipCount(), User::Panic( _L( "VideoEditor" ), 34 ));
       
  1399                 __ASSERT_ALWAYS( iContainer->CurrentIndex() > 0, User::Panic( _L( "VideoEditor" ), 34 ));
       
  1400                 index = iContainer->CurrentIndex() - 1;
       
  1401                 iMovie->SetMiddleTransitionEffect( EVedMiddleTransitionEffectDipToBlack, index );
       
  1402                 break;
       
  1403                 }
       
  1404         case EVeiCmdEditVideoViewTransitionDipToWhite:
       
  1405                 {
       
  1406                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionDipToWhite" );
       
  1407                 __ASSERT_ALWAYS( iContainer->CurrentIndex() < iMovie->VideoClipCount(), User::Panic( _L( "VideoEditor" ), 34 ));
       
  1408                 __ASSERT_ALWAYS( iContainer->CurrentIndex() > 0, User::Panic( _L( "VideoEditor" ), 34 ));
       
  1409                 index = iContainer->CurrentIndex() - 1;
       
  1410                 iMovie->SetMiddleTransitionEffect( EVedMiddleTransitionEffectDipToWhite, index );
       
  1411                 break;
       
  1412                 }
       
  1413         case EVeiCmdEditVideoViewTransitionCrossfade:
       
  1414                 {
       
  1415                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionCrossfade" );
       
  1416                 __ASSERT_ALWAYS( iContainer->CurrentIndex() < iMovie->VideoClipCount(), User::Panic( _L( "VideoEditor" ), 34 ));
       
  1417                 __ASSERT_ALWAYS( iContainer->CurrentIndex() > 0, User::Panic( _L( "VideoEditor" ), 34 ));
       
  1418                 index = iContainer->CurrentIndex() - 1;
       
  1419                 iMovie->SetMiddleTransitionEffect( EVedMiddleTransitionEffectCrossfade, index );
       
  1420                 break;
       
  1421                 }
       
  1422         case EVeiCmdEditVideoViewTransitionWipeFromLeft:
       
  1423                 {
       
  1424                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionWipeFromLeft" );
       
  1425                 __ASSERT_ALWAYS( iContainer->CurrentIndex() < iMovie->VideoClipCount(), User::Panic( _L( "VideoEditor" ), 34 ));
       
  1426                 __ASSERT_ALWAYS( iContainer->CurrentIndex() > 0, User::Panic( _L( "VideoEditor" ), 34 ));
       
  1427                 index = iContainer->CurrentIndex() - 1;
       
  1428                 iMovie->SetMiddleTransitionEffect( EVedMiddleTransitionEffectWipeLeftToRight, index );
       
  1429                 break;
       
  1430                 }
       
  1431         case EVeiCmdEditVideoViewTransitionWipeFromRight:
       
  1432                 {
       
  1433                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionWipeFromRight" );
       
  1434                 __ASSERT_ALWAYS( iContainer->CurrentIndex() < iMovie->VideoClipCount(), User::Panic( _L( "VideoEditor" ), 34 ));
       
  1435                 __ASSERT_ALWAYS( iContainer->CurrentIndex() > 0, User::Panic( _L( "VideoEditor" ), 34 ));
       
  1436                 index = iContainer->CurrentIndex() - 1;
       
  1437                 iMovie->SetMiddleTransitionEffect( EVedMiddleTransitionEffectWipeRightToLeft, index );
       
  1438                 break;
       
  1439                 }
       
  1440         case EVeiCmdEditVideoViewTransitionWipeFromTop:
       
  1441                 {
       
  1442                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionWipeFromTop" );
       
  1443                 __ASSERT_ALWAYS( iContainer->CurrentIndex() < iMovie->VideoClipCount(), User::Panic( _L( "VideoEditor" ), 34 ));
       
  1444                 __ASSERT_ALWAYS( iContainer->CurrentIndex() > 0, User::Panic( _L( "VideoEditor" ), 34 ));
       
  1445                 index = iContainer->CurrentIndex() - 1;
       
  1446                 iMovie->SetMiddleTransitionEffect( EVedMiddleTransitionEffectWipeTopToBottom, index );
       
  1447                 break;
       
  1448                 }
       
  1449         case EVeiCmdEditVideoViewTransitionWipeFromBottom:
       
  1450                 {
       
  1451                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionWipeFromBottom" );
       
  1452                 __ASSERT_ALWAYS( iContainer->CurrentIndex() < iMovie->VideoClipCount(), User::Panic( _L( "VideoEditor" ), 34 ));
       
  1453                 __ASSERT_ALWAYS( iContainer->CurrentIndex() > 0, User::Panic( _L( "VideoEditor" ), 34 ));
       
  1454                 index = iContainer->CurrentIndex() - 1;
       
  1455                 iMovie->SetMiddleTransitionEffect( EVedMiddleTransitionEffectWipeBottomToTop, index );
       
  1456                 break;
       
  1457                 }
       
  1458         case EVeiCmdEditVideoViewTransitionFadeToBlack:
       
  1459                 {
       
  1460                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionFadeToBlack" );
       
  1461                 __ASSERT_ALWAYS( iContainer->CurrentIndex() == iMovie->VideoClipCount(), User::Panic( _L( "VideoEditor" ), 34 ));
       
  1462                 iMovie->SetEndTransitionEffect( EVedEndTransitionEffectFadeToBlack );
       
  1463                 break;
       
  1464                 }
       
  1465         case EVeiCmdEditVideoViewTransitionFadeToWhite:
       
  1466                 {
       
  1467                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewTransitionFadeToWhite" );
       
  1468                 __ASSERT_ALWAYS( iContainer->CurrentIndex() == iMovie->VideoClipCount(), User::Panic( _L( "VideoEditor" ), 34 ));
       
  1469                 iMovie->SetEndTransitionEffect( EVedEndTransitionEffectFadeToWhite );
       
  1470                 break;
       
  1471                 }
       
  1472         case EVeiCmdEditVideoViewEditStartTransition:
       
  1473         case EVeiCmdEditVideoViewEditMiddleTransition:
       
  1474         case EVeiCmdEditVideoViewEditEndTransition:
       
  1475             LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditStartTransition||EVeiCmdEditVideoViewEditMiddleTransition||EVeiCmdEditVideoViewEditEndTransition" );
       
  1476             break;
       
  1477         case EVeiCmdEditVideoViewSaveTo:
       
  1478                 {
       
  1479                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewSaveTo" );
       
  1480                 if ( IsEnoughFreeSpaceToSaveL())
       
  1481                     {
       
  1482                     TInt err;
       
  1483                     TRAP( err, SaveL( EProcessingMovieSave ));
       
  1484                     if ( err != KErrNone )
       
  1485                         {
       
  1486                         ShowErrorNote( R_VEI_ERROR_NOTE );
       
  1487                         }
       
  1488                     }
       
  1489                 break;
       
  1490                 }
       
  1491         case EVeiCmdEditVideoMixAudio:
       
  1492                 {
       
  1493                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoMixAudio" );
       
  1494                 SetEditorState( EMixAudio );
       
  1495                 break;
       
  1496                 }
       
  1497 
       
  1498         case EVeiCmdEditVideoAdjustVolume:
       
  1499                 {
       
  1500                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoAdjustVolume" );
       
  1501                 SetEditorState( EAdjustVolume );
       
  1502                 break;
       
  1503                 }
       
  1504 
       
  1505         case EVeiCmdEditVideoViewInsertVideo:
       
  1506                 {
       
  1507                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertVideo" );
       
  1508                 if ( IsEnoughFreeSpaceToSaveL())
       
  1509                     {
       
  1510                     __ASSERT_ALWAYS( iMediaQueue, User::Panic( _L( "CVeiEditVideoView" ), 1 ));
       
  1511 
       
  1512                     if ( !iMediaQueue->ShowVideoClipDialogL( iContainer->CursorLocation(), iContainer->CurrentIndex()))
       
  1513                         {
       
  1514                         return ;
       
  1515                         }
       
  1516                     }
       
  1517                 HandleScreenDeviceChangedL();
       
  1518                 break;
       
  1519                 }
       
  1520         case EVeiCmdEditVideoDuplicate:
       
  1521                 {
       
  1522                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoDuplicate" );
       
  1523                 if ( IsEnoughFreeSpaceToSaveL())
       
  1524                     {
       
  1525                     TEntry fileinfo;
       
  1526 
       
  1527                     SetNewTempFileNeeded( ETrue );
       
  1528                     iMovieSavedFlag = EFalse;
       
  1529 
       
  1530                     iWaitMode = EDuplicating;
       
  1531 
       
  1532                     if ( iContainer->CursorLocation() == VideoEditor::ECursorOnClip )
       
  1533                         {
       
  1534                         CVedVideoClipInfo* previousInfo = iMovie->VideoClipInfo( iContainer->CurrentIndex());
       
  1535 
       
  1536                         RFs& fs = iEikonEnv->FsSession();
       
  1537                         fs.Entry( previousInfo->FileName(), fileinfo );
       
  1538 
       
  1539                         if ( IsEnoughFreeSpaceToSaveL( fileinfo.iSize ))
       
  1540                             {
       
  1541                             iMovie->InsertVideoClipL( previousInfo->FileName(), iContainer->CurrentIndex() + 1 );
       
  1542                             }
       
  1543                         }
       
  1544                     else
       
  1545                         {
       
  1546                         if ( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio )
       
  1547                             {
       
  1548                             CVedAudioClipInfo* currentInfo = iMovie->AudioClipInfo( iContainer->CurrentIndex());
       
  1549                             TTimeIntervalMicroSeconds currentDuration = iMovie->AudioClipEditedDuration( iContainer->CurrentIndex());
       
  1550 
       
  1551                             TInt currentIndex = iContainer->CurrentIndex();
       
  1552 
       
  1553                             for ( TInt i = iMovie->AudioClipCount() - 1; i > currentIndex; i-- )
       
  1554                                 {
       
  1555                                 TTimeIntervalMicroSeconds oldStartTime = iMovie->AudioClipStartTime( i );
       
  1556                                 iMovie->AudioClipSetStartTime( i, TTimeIntervalMicroSeconds( oldStartTime.Int64() + currentDuration.Int64()));
       
  1557                                 }
       
  1558 
       
  1559                             TTimeIntervalMicroSeconds currentAudioClipEndTime = iMovie->AudioClipEndTime( currentIndex );
       
  1560                             TTimeIntervalMicroSeconds currentCutInTime = iMovie->AudioClipCutInTime( currentIndex );
       
  1561                             TTimeIntervalMicroSeconds currentCutOutTime = iMovie->AudioClipCutOutTime( currentIndex );
       
  1562                             iMovie->AddAudioClipL( currentInfo->FileName(), currentAudioClipEndTime, currentCutInTime, currentCutOutTime );
       
  1563                             }
       
  1564                         }
       
  1565                     }
       
  1566                 break;
       
  1567                 }
       
  1568 
       
  1569             /*
       
  1570              * Insert TITLE text *	
       
  1571              */
       
  1572         case EVeiCmdEditVideoViewInsertText:
       
  1573                 {
       
  1574                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertText" );
       
  1575                 if ( IsEnoughFreeSpaceToSaveL())
       
  1576                     {
       
  1577                     iPopup->ShowInsertTextPopupList();
       
  1578                     }
       
  1579                 break;
       
  1580                 }
       
  1581 
       
  1582         case EVeiCmdEditVideoViewInsertTextTitle:
       
  1583                 {
       
  1584                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertTextTitle" );
       
  1585 
       
  1586                 if ( IsEnoughFreeSpaceToSaveL())
       
  1587                     {
       
  1588                     StoreOrientation();
       
  1589                     CleanupStack::PushL( TCleanupItem( CleanupRestoreOrientation, this ));
       
  1590                     AppUi()->SetOrientationL( CAknAppUiBase::EAppUiOrientationPortrait );
       
  1591 
       
  1592                     TSize res = TSize( iMovie->Resolution());
       
  1593 
       
  1594                     CVeiTitleClipGenerator* generator = CVeiTitleClipGenerator::NewLC( res, 
       
  1595                                                                                        EVeiTitleClipTransitionNone, 
       
  1596                                                                                        EVeiTitleClipHorizontalAlignmentCenter, 
       
  1597                                                                                        EVeiTitleClipVerticalAlignmentCenter );
       
  1598 
       
  1599                     HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_TITLE_NAME, iEikonEnv );
       
  1600                     generator->SetDescriptiveNameL( *descriptiveName );
       
  1601                     CleanupStack::PopAndDestroy( descriptiveName );
       
  1602 
       
  1603                     generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionNone, 
       
  1604                                                             EVeiTitleClipHorizontalAlignmentCenter, 
       
  1605                                                             EVeiTitleClipVerticalAlignmentCenter );
       
  1606 
       
  1607                     /* Ask for text. */
       
  1608                     HBufC* text = HBufC::NewLC( KTitleScreenMaxTextLength );
       
  1609                     TPtr txtptr( text->Des());
       
  1610                     CAknTextQueryDialog* textQuery = CAknTextQueryDialog::NewL( txtptr );
       
  1611                     CleanupStack::PushL( textQuery );
       
  1612 
       
  1613                     textQuery->SetMaxLength( KTitleScreenMaxTextLength );
       
  1614                     //textQuery->SetPredictiveTextInputPermitted(ETrue);
       
  1615                     CleanupStack::Pop( textQuery );
       
  1616 
       
  1617                     if ( !textQuery->ExecuteLD( R_VEI_EDITVIDEO_TITLESCREEN_TEXT_QUERY ))
       
  1618                         {
       
  1619                         CleanupStack::PopAndDestroy( text );
       
  1620                         CleanupStack::PopAndDestroy( generator );
       
  1621                         CleanupStack::PopAndDestroy( this ); // restore appui orientation
       
  1622                         break;
       
  1623                         }
       
  1624 
       
  1625                     generator->SetTextL( *text );
       
  1626                     CleanupStack::PopAndDestroy( text );
       
  1627 
       
  1628                     /* Insert generator into the movie. */
       
  1629                     TInt err = 0;
       
  1630                     index = ( iContainer->CurrentIndex() == iMovie->VideoClipCount()) ? iMovie->VideoClipCount(): iContainer->CurrentIndex() + 1;
       
  1631                     TRAP( err, iMovie->InsertVideoClipL( *generator, ETrue, index ));
       
  1632 
       
  1633                     CleanupStack::Pop( generator );
       
  1634                     User::LeaveIfError( err );
       
  1635 
       
  1636                     CleanupStack::PopAndDestroy( this ); // restore appui orientation
       
  1637                     }
       
  1638                 break;
       
  1639                 }
       
  1640             /*
       
  1641              * Insert TITLE (fading) text *	
       
  1642              */
       
  1643         case EVeiCmdEditVideoViewInsertTextTitleFading:
       
  1644                 {
       
  1645                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertTextTitleFading" );
       
  1646 
       
  1647                 if ( IsEnoughFreeSpaceToSaveL())
       
  1648                     {
       
  1649 
       
  1650                     StoreOrientation();
       
  1651                     CleanupStack::PushL( TCleanupItem( CleanupRestoreOrientation, this ));
       
  1652                     AppUi()->SetOrientationL( CAknAppUiBase::EAppUiOrientationPortrait );
       
  1653 
       
  1654                     TSize res = TSize( iMovie->Resolution());
       
  1655                     CVeiTitleClipGenerator* generator = CVeiTitleClipGenerator::NewLC( res, 
       
  1656                                                                                        EVeiTitleClipTransitionNone, 
       
  1657                                                                                        EVeiTitleClipHorizontalAlignmentCenter, 
       
  1658                                                                                        EVeiTitleClipVerticalAlignmentCenter );
       
  1659 
       
  1660                     HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_TITLE_FADING_NAME, iEikonEnv );
       
  1661                     generator->SetDescriptiveNameL( *descriptiveName );
       
  1662                     CleanupStack::PopAndDestroy( descriptiveName );
       
  1663 
       
  1664                     generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionFade, 
       
  1665                                                             EVeiTitleClipHorizontalAlignmentCenter, 
       
  1666                                                             EVeiTitleClipVerticalAlignmentCenter );
       
  1667                     /* Ask for text. */
       
  1668                     HBufC* text = HBufC::NewLC( KTitleScreenMaxTextLength );
       
  1669                     TPtr txtptr( text->Des());
       
  1670 
       
  1671                     CAknTextQueryDialog* textQuery = CAknTextQueryDialog::NewL( txtptr );
       
  1672                     CleanupStack::PushL( textQuery );
       
  1673 
       
  1674                     textQuery->SetMaxLength( KTitleScreenMaxTextLength );
       
  1675                     //textQuery->SetPredictiveTextInputPermitted(ETrue);
       
  1676                     CleanupStack::Pop( textQuery );
       
  1677 
       
  1678                     if ( !textQuery->ExecuteLD( R_VEI_EDITVIDEO_TITLESCREEN_TEXT_QUERY ))
       
  1679                         {
       
  1680                         CleanupStack::PopAndDestroy( text );
       
  1681                         CleanupStack::PopAndDestroy( generator );
       
  1682                         CleanupStack::PopAndDestroy( this ); // restore appui orientation
       
  1683                         break;
       
  1684                         }
       
  1685 
       
  1686                     generator->SetTextL( *text );
       
  1687                     CleanupStack::PopAndDestroy( text );
       
  1688 
       
  1689                     /* Insert generator into the movie. */
       
  1690                     TInt err = 0;
       
  1691                     index = ( iContainer->CurrentIndex() == iMovie->VideoClipCount()) ? iMovie->VideoClipCount(): iContainer->CurrentIndex() + 1;
       
  1692                     TRAP( err, iMovie->InsertVideoClipL( *generator, ETrue, index ));
       
  1693                     CleanupStack::Pop( generator );
       
  1694                     User::LeaveIfError( err );
       
  1695 
       
  1696                     CleanupStack::PopAndDestroy( this ); // restore appui orientation
       
  1697                     }
       
  1698                 break;
       
  1699                 }
       
  1700             /*
       
  1701              * Insert SUBTITLE text *	
       
  1702              */
       
  1703         case EVeiCmdEditVideoViewInsertTextSubTitle:
       
  1704                 {
       
  1705                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertTextSubTitle" );
       
  1706 
       
  1707                 if ( IsEnoughFreeSpaceToSaveL())
       
  1708                     {
       
  1709                     StoreOrientation();
       
  1710                     CleanupStack::PushL( TCleanupItem( CleanupRestoreOrientation, this ));
       
  1711                     AppUi()->SetOrientationL( CAknAppUiBase::EAppUiOrientationPortrait );
       
  1712 
       
  1713                     TSize res = TSize( iMovie->Resolution());
       
  1714                     CVeiTitleClipGenerator* generator = CVeiTitleClipGenerator::NewLC( res, 
       
  1715                                                                                        EVeiTitleClipTransitionNone, 
       
  1716                                                                                        EVeiTitleClipHorizontalAlignmentCenter, 
       
  1717                                                                                        EVeiTitleClipVerticalAlignmentCenter );
       
  1718 
       
  1719                     HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_SUBTITLE_NAME, iEikonEnv );
       
  1720                     generator->SetDescriptiveNameL( *descriptiveName );
       
  1721                     CleanupStack::PopAndDestroy( descriptiveName );
       
  1722 
       
  1723                     generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionNone, 
       
  1724                                                             EVeiTitleClipHorizontalAlignmentLeft, 
       
  1725                                                             EVeiTitleClipVerticalAlignmentBottom );
       
  1726 
       
  1727                     /* Ask for text. */
       
  1728                     HBufC* text = HBufC::NewLC( KTitleScreenMaxTextLength );
       
  1729                     TPtr txtptr( text->Des());
       
  1730                     CAknTextQueryDialog* textQuery = CAknTextQueryDialog::NewL( txtptr );
       
  1731                     CleanupStack::PushL( textQuery );
       
  1732 
       
  1733                     textQuery->SetMaxLength( KTitleScreenMaxTextLength );
       
  1734                     //textQuery->SetPredictiveTextInputPermitted(ETrue);
       
  1735                     CleanupStack::Pop( textQuery );
       
  1736 
       
  1737                     if ( !textQuery->ExecuteLD( R_VEI_EDITVIDEO_TITLESCREEN_TEXT_QUERY ))
       
  1738                         {
       
  1739                         CleanupStack::PopAndDestroy( text );
       
  1740                         CleanupStack::PopAndDestroy( generator );
       
  1741                         CleanupStack::PopAndDestroy( this ); // restore appui orientation
       
  1742                         break;
       
  1743                         }
       
  1744 
       
  1745                     generator->SetTextL( *text );
       
  1746                     CleanupStack::PopAndDestroy( text );
       
  1747 
       
  1748                     /* Insert generator into the movie. */
       
  1749                     TInt err = 0;
       
  1750                     index = ( iContainer->CurrentIndex() == iMovie->VideoClipCount()) ? iMovie->VideoClipCount(): iContainer->CurrentIndex() + 1;
       
  1751                     TRAP( err, iMovie->InsertVideoClipL( *generator, ETrue, index ));
       
  1752                     CleanupStack::Pop( generator );
       
  1753                     User::LeaveIfError( err );
       
  1754 
       
  1755                     CleanupStack::PopAndDestroy( this ); // restore appui orientation
       
  1756                     }
       
  1757                 break;
       
  1758                 }
       
  1759             /*
       
  1760              * Insert SUBTITLE (fading) text *	
       
  1761              */
       
  1762         case EVeiCmdEditVideoViewInsertTextSubTitleFading:
       
  1763                 {
       
  1764                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertTextSubTitleFading" );
       
  1765 
       
  1766                 if ( IsEnoughFreeSpaceToSaveL())
       
  1767                     {
       
  1768                     StoreOrientation();
       
  1769                     CleanupStack::PushL( TCleanupItem( CleanupRestoreOrientation, this ));
       
  1770                     AppUi()->SetOrientationL( CAknAppUiBase::EAppUiOrientationPortrait );
       
  1771 
       
  1772                     TSize res = TSize( iMovie->Resolution());
       
  1773                     CVeiTitleClipGenerator* generator = CVeiTitleClipGenerator::NewLC( res, 
       
  1774                                                                                        EVeiTitleClipTransitionNone, 
       
  1775                                                                                        EVeiTitleClipHorizontalAlignmentCenter, 
       
  1776                                                                                        EVeiTitleClipVerticalAlignmentCenter );
       
  1777 
       
  1778                     HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_SUBTITLE_FADING_NAME, iEikonEnv );
       
  1779                     generator->SetDescriptiveNameL( *descriptiveName );
       
  1780                     CleanupStack::PopAndDestroy( descriptiveName );
       
  1781 
       
  1782                     generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionFade, 
       
  1783                                                             EVeiTitleClipHorizontalAlignmentLeft, 
       
  1784                                                             EVeiTitleClipVerticalAlignmentBottom );
       
  1785 
       
  1786                     /* Ask for text. */
       
  1787                     HBufC* text = HBufC::NewLC( KTitleScreenMaxTextLength );
       
  1788                     TPtr txtptr( text->Des());
       
  1789                     CAknTextQueryDialog* textQuery = CAknTextQueryDialog::NewL( txtptr );
       
  1790                     CleanupStack::PushL( textQuery );
       
  1791 
       
  1792                     textQuery->SetMaxLength( KTitleScreenMaxTextLength );
       
  1793                     //textQuery->SetPredictiveTextInputPermitted(ETrue);
       
  1794                     CleanupStack::Pop( textQuery );
       
  1795 
       
  1796                     if ( !textQuery->ExecuteLD( R_VEI_EDITVIDEO_TITLESCREEN_TEXT_QUERY ))
       
  1797                         {
       
  1798                         CleanupStack::PopAndDestroy( text );
       
  1799                         CleanupStack::PopAndDestroy( generator );
       
  1800                         CleanupStack::PopAndDestroy( this ); // restore appui orientation
       
  1801                         break;
       
  1802                         }
       
  1803 
       
  1804                     generator->SetTextL( *text );
       
  1805                     CleanupStack::PopAndDestroy( text );
       
  1806 
       
  1807                     /* Insert generator into the movie. */
       
  1808                     TInt err = 0;
       
  1809                     index = ( iContainer->CurrentIndex() == iMovie->VideoClipCount()) ? iMovie->VideoClipCount(): iContainer->CurrentIndex() + 1;
       
  1810                     TRAP( err, iMovie->InsertVideoClipL( *generator, ETrue, index ));
       
  1811                     CleanupStack::Pop( generator );
       
  1812                     User::LeaveIfError( err );
       
  1813 
       
  1814                     CleanupStack::PopAndDestroy( this ); // restore appui orientation
       
  1815                     }
       
  1816                 break;
       
  1817                 }
       
  1818             /*
       
  1819              * Insert CREDIT text *	
       
  1820              */
       
  1821         case EVeiCmdEditVideoViewInsertTextCredits:
       
  1822                 {
       
  1823                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertTextCredits" );
       
  1824 
       
  1825                 if ( IsEnoughFreeSpaceToSaveL())
       
  1826                     {
       
  1827                     StoreOrientation();
       
  1828                     CleanupStack::PushL( TCleanupItem( CleanupRestoreOrientation, this ));
       
  1829                     AppUi()->SetOrientationL( CAknAppUiBase::EAppUiOrientationPortrait );
       
  1830 
       
  1831                     TSize res = TSize( iMovie->Resolution());
       
  1832                     CVeiTitleClipGenerator* generator = CVeiTitleClipGenerator::NewLC( res, 
       
  1833                                                                                        EVeiTitleClipTransitionNone, 
       
  1834                                                                                        EVeiTitleClipHorizontalAlignmentCenter, 
       
  1835                                                                                        EVeiTitleClipVerticalAlignmentCenter );
       
  1836 
       
  1837                     HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_CREDITS_NAME, iEikonEnv );
       
  1838                     generator->SetDescriptiveNameL( *descriptiveName );
       
  1839                     CleanupStack::PopAndDestroy( descriptiveName );
       
  1840 
       
  1841                     generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionScrollBottomToTop, 
       
  1842                                                             EVeiTitleClipHorizontalAlignmentCenter, 
       
  1843                                                             EVeiTitleClipVerticalAlignmentCenter );
       
  1844 
       
  1845                     /* Ask for text. */
       
  1846                     HBufC* text = HBufC::NewLC( KTitleScreenMaxTextLength );
       
  1847                     TPtr txtptr( text->Des());
       
  1848                     CAknTextQueryDialog* textQuery = CAknTextQueryDialog::NewL( txtptr );
       
  1849                     CleanupStack::PushL( textQuery );
       
  1850 
       
  1851                     textQuery->SetMaxLength( KTitleScreenMaxTextLength );
       
  1852                     //textQuery->SetPredictiveTextInputPermitted(ETrue);
       
  1853                     CleanupStack::Pop( textQuery );
       
  1854 
       
  1855                     if ( !textQuery->ExecuteLD( R_VEI_EDITVIDEO_TITLESCREEN_TEXT_QUERY ))
       
  1856                         {
       
  1857                         CleanupStack::PopAndDestroy( text );
       
  1858                         CleanupStack::PopAndDestroy( generator );
       
  1859                         CleanupStack::PopAndDestroy( this );
       
  1860                         break;
       
  1861                         }
       
  1862                     generator->SetTextL( *text );
       
  1863                     CleanupStack::PopAndDestroy( text );
       
  1864 
       
  1865                     /* Insert generator into the movie. */
       
  1866                     TInt err = 0;
       
  1867                     index = ( iContainer->CurrentIndex() == iMovie->VideoClipCount()) ? iMovie->VideoClipCount(): iContainer->CurrentIndex() + 1;
       
  1868                     TRAP( err, iMovie->InsertVideoClipL( *generator, ETrue, index ));
       
  1869                     CleanupStack::Pop( generator );
       
  1870                     User::LeaveIfError( err );
       
  1871 
       
  1872                     CleanupStack::PopAndDestroy( this ); // restore appui orientation
       
  1873                     }
       
  1874                 break;
       
  1875                 }
       
  1876 
       
  1877             /*
       
  1878              * Edit Text *
       
  1879              */
       
  1880         case EVeiCmdEditVideoViewEditTextMove:
       
  1881                 {
       
  1882                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextMove" );
       
  1883                 if ( IsEnoughFreeSpaceToSaveL())
       
  1884                     {
       
  1885                     Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL );
       
  1886                     Cba()->DrawDeferred();
       
  1887 
       
  1888                     index = iContainer->CurrentIndex();
       
  1889 
       
  1890                     if ( iContainer->CursorLocation() == VideoEditor::ECursorOnClip )
       
  1891                         {
       
  1892                         iOriginalVideoClipIndex = index;
       
  1893                         }
       
  1894                     else
       
  1895                         {
       
  1896                         User::Panic( _L( "VideoEditor" ), 34 );
       
  1897                         }
       
  1898                     iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeMove );
       
  1899                     UpdateEditNaviLabel();
       
  1900                     }
       
  1901                 break;
       
  1902                 }
       
  1903         case EVeiCmdEditVideoViewEditTextChangeDuration:
       
  1904                 {
       
  1905                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextChangeDuration" );
       
  1906                 if ( IsEnoughFreeSpaceToSaveL())
       
  1907                     {
       
  1908                     Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL );
       
  1909                     Cba()->DrawDeferred();
       
  1910                     index = iContainer->CurrentIndex();
       
  1911 
       
  1912                     iOriginalVideoStartPoint = iMovie->VideoClipStartTime( index );
       
  1913                     iOriginalVideoCutInTime = iMovie->VideoClipCutInTime( index );
       
  1914                     iOriginalVideoCutOutTime = iMovie->VideoClipCutOutTime( index );
       
  1915 
       
  1916                     iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeDuration );
       
  1917                     UpdateEditNaviLabel();
       
  1918                     }
       
  1919                 break;
       
  1920                 }
       
  1921         case EVeiCmdEditVideoViewEditTextChangeText:
       
  1922                 {
       
  1923                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextChangeText" );
       
  1924                 if ( IsEnoughFreeSpaceToSaveL())
       
  1925                     {
       
  1926                     StoreOrientation();
       
  1927                     CleanupStack::PushL( TCleanupItem( CleanupRestoreOrientation, this ));
       
  1928                     AppUi()->SetOrientationL( CAknAppUiBase::EAppUiOrientationPortrait );
       
  1929 
       
  1930                     Cba()->DrawDeferred();
       
  1931                     CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
       
  1932 
       
  1933                     CVeiTitleClipGenerator* generator = STATIC_CAST( CVeiTitleClipGenerator* , info->Generator());
       
  1934                     HBufC* text = HBufC::NewLC( KTitleScreenMaxTextLength );
       
  1935                     *text = (( CVeiTitleClipGenerator* )info->Generator())->Text();
       
  1936 
       
  1937                     TPtr txtptr( text->Des());
       
  1938                     CAknTextQueryDialog* textQuery = CAknTextQueryDialog::NewL( txtptr );
       
  1939                     CleanupStack::PushL( textQuery );
       
  1940 
       
  1941                     textQuery->SetMaxLength( KTitleScreenMaxTextLength );
       
  1942                     //textQuery->SetPredictiveTextInputPermitted(ETrue);
       
  1943                     CleanupStack::Pop( textQuery );
       
  1944 
       
  1945                     if ( !textQuery->ExecuteLD( R_VEI_EDITVIDEO_TITLESCREEN_TEXT_QUERY ))
       
  1946                         {
       
  1947                         CleanupStack::PopAndDestroy( text );
       
  1948                         CleanupStack::PopAndDestroy( this ); // restore appui orientation
       
  1949                         break;
       
  1950                         }
       
  1951                     generator->SetTextL( *text );
       
  1952                     CleanupStack::PopAndDestroy( text );
       
  1953                     UpdateEditNaviLabel();
       
  1954 
       
  1955                     CleanupStack::PopAndDestroy( this ); // restore appui orientation
       
  1956                     }
       
  1957                 break;
       
  1958                 }
       
  1959 
       
  1960         case EVeiCmdEditVideoViewEditTextSetTextColor:
       
  1961                 {
       
  1962                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextSetTextColor" );
       
  1963                 if ( IsEnoughFreeSpaceToSaveL())
       
  1964                     {
       
  1965                     CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
       
  1966                     CVeiTitleClipGenerator* generator = STATIC_CAST( CVeiTitleClipGenerator* , info->Generator());
       
  1967 
       
  1968                     TRgb color = generator->TextColor();
       
  1969                     if ( !iPopup->ShowColorSelectorL( color ))
       
  1970                         {
       
  1971                         break;
       
  1972                         }
       
  1973                     generator->SetTextColorL( color );
       
  1974                     }
       
  1975                 break;
       
  1976                 }
       
  1977         case EVeiCmdEditVideoViewEditTextSetBackGround:
       
  1978                 {
       
  1979                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextSetBackGround" );
       
  1980                 if ( IsEnoughFreeSpaceToSaveL())
       
  1981                     {
       
  1982                     CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
       
  1983                     CVeiTitleClipGenerator* generator = STATIC_CAST( CVeiTitleClipGenerator* , info->Generator());
       
  1984 
       
  1985                     // ask for color or image
       
  1986                     TBool imageSelected;
       
  1987                     TInt err = iPopup->ShowTitleScreenBackgroundSelectionPopupL( imageSelected );
       
  1988                     if ( err != KErrNone )
       
  1989                         {
       
  1990                         break;
       
  1991                         }
       
  1992 
       
  1993                     if ( imageSelected )
       
  1994                         {
       
  1995                         CDesCArrayFlat* selectedFiles = new( ELeave )CDesCArrayFlat( 1 );
       
  1996                         CleanupStack::PushL( selectedFiles );
       
  1997 
       
  1998                         CVeiMGFetchVerifier* mgFetchVerifier = CVeiMGFetchVerifier::NewLC();
       
  1999 
       
  2000                         if ( MGFetch::RunL( *selectedFiles, EImageFile, EFalse, mgFetchVerifier ) == EFalse )
       
  2001                             {
       
  2002                             /* User cancelled the dialog. */
       
  2003                             CleanupStack::PopAndDestroy( mgFetchVerifier );
       
  2004                             CleanupStack::PopAndDestroy( selectedFiles );
       
  2005                             break;
       
  2006                             }
       
  2007 
       
  2008                         CleanupStack::PopAndDestroy( mgFetchVerifier );
       
  2009 
       
  2010                         if ( !iWaitDialog )
       
  2011                             {
       
  2012                             iWaitDialog = new( ELeave )CAknWaitDialog( REINTERPRET_CAST( CEikDialog** , &iWaitDialog ), ETrue );
       
  2013                             iWaitDialog->ExecuteLD( R_VEI_WAIT_DIALOG_INSERTING_IMAGE );
       
  2014                             }
       
  2015 
       
  2016 
       
  2017                         TRAP( err, generator->SetBackgroundImageL(( *selectedFiles )[0], * this ));
       
  2018 
       
  2019                         if ( err )
       
  2020                             {
       
  2021                             if ( iWaitDialog )
       
  2022                                 {
       
  2023                                 CancelWaitDialog();
       
  2024                                 }
       
  2025                             ShowErrorNote( R_VEI_ERRORNOTE_IMAGE_INSERTING_FAILED );
       
  2026                             }
       
  2027 
       
  2028                         CleanupStack::PopAndDestroy( selectedFiles );
       
  2029                         }
       
  2030                     else
       
  2031                         {
       
  2032                         TRgb color = generator->BackgroundColor();
       
  2033                         if ( !iPopup->ShowColorSelectorL( color ))
       
  2034                             {
       
  2035                             break;
       
  2036                             }
       
  2037                         generator->SetBackgroundColorL( color );
       
  2038                         }
       
  2039                     }
       
  2040                 break;
       
  2041                 }
       
  2042         case EVeiCmdEditVideoViewEditTextStyle:
       
  2043                 {
       
  2044                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextStyle" );
       
  2045                 if ( IsEnoughFreeSpaceToSaveL())
       
  2046                     {
       
  2047                     /* Ask for style. */
       
  2048                     iPopup->ShowTitleScreenStyleSelectionPopupL();
       
  2049                     }
       
  2050                 break;
       
  2051                 }
       
  2052             /*
       
  2053              * Edit text, AddColorEffect *	
       
  2054              */
       
  2055         case EVeiCmdEditVideoViewEditTextAddColorEffect:
       
  2056                 {
       
  2057                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextAddColorEffect" );
       
  2058                 if ( IsEnoughFreeSpaceToSaveL())
       
  2059                     {
       
  2060                     iPopup->ShowEffectSelectionPopupListL();
       
  2061                     }
       
  2062                 break;
       
  2063                 }
       
  2064             /*
       
  2065              * Edit text style *	
       
  2066              */
       
  2067         case EVeiCmdEditVideoViewEditTextStyleTitle:
       
  2068                 {
       
  2069                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextStyleTitle" );
       
  2070                 if ( IsEnoughFreeSpaceToSaveL())
       
  2071                     {
       
  2072                     CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
       
  2073 
       
  2074                     CVeiTitleClipGenerator* generator = STATIC_CAST( CVeiTitleClipGenerator* , info->Generator());
       
  2075 
       
  2076                     HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_TITLE_NAME, iEikonEnv );
       
  2077                     generator->SetDescriptiveNameL( *descriptiveName );
       
  2078                     CleanupStack::PopAndDestroy( descriptiveName );
       
  2079 
       
  2080                     generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionNone, 
       
  2081                                                             EVeiTitleClipHorizontalAlignmentCenter, 
       
  2082                                                             EVeiTitleClipVerticalAlignmentCenter );
       
  2083                     }
       
  2084                 break;
       
  2085                 }
       
  2086         case EVeiCmdEditVideoViewEditTextStyleTitleFading:
       
  2087                 {
       
  2088                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextStyleTitleFading" );
       
  2089                 if ( IsEnoughFreeSpaceToSaveL())
       
  2090                     {
       
  2091                     CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
       
  2092 
       
  2093                     CVeiTitleClipGenerator* generator = STATIC_CAST( CVeiTitleClipGenerator* , info->Generator());
       
  2094 
       
  2095                     HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_TITLE_FADING_NAME, iEikonEnv );
       
  2096                     generator->SetDescriptiveNameL( *descriptiveName );
       
  2097                     CleanupStack::PopAndDestroy( descriptiveName );
       
  2098                     generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionFade, 
       
  2099                                                             EVeiTitleClipHorizontalAlignmentCenter, 
       
  2100                                                             EVeiTitleClipVerticalAlignmentCenter );
       
  2101                     }
       
  2102                 break;
       
  2103                 }
       
  2104         case EVeiCmdEditVideoViewEditTextStyleSubTitle:
       
  2105                 {
       
  2106                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextStyleSubTitle" );
       
  2107                 if ( IsEnoughFreeSpaceToSaveL())
       
  2108                     {
       
  2109                     CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
       
  2110 
       
  2111                     CVeiTitleClipGenerator* generator = STATIC_CAST( CVeiTitleClipGenerator* , info->Generator());
       
  2112 
       
  2113                     HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_SUBTITLE_NAME, iEikonEnv );
       
  2114                     generator->SetDescriptiveNameL( *descriptiveName );
       
  2115                     CleanupStack::PopAndDestroy( descriptiveName );
       
  2116                     generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionNone, 
       
  2117                                                             EVeiTitleClipHorizontalAlignmentLeft, 
       
  2118                                                             EVeiTitleClipVerticalAlignmentBottom );
       
  2119 
       
  2120                     }
       
  2121                 break;
       
  2122                 }
       
  2123         case EVeiCmdEditVideoViewEditTextStyleSubTitleFading:
       
  2124                 {
       
  2125                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextStyleSubTitleFading" );
       
  2126                 if ( IsEnoughFreeSpaceToSaveL())
       
  2127                     {
       
  2128                     CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
       
  2129 
       
  2130                     CVeiTitleClipGenerator* generator = STATIC_CAST( CVeiTitleClipGenerator* , info->Generator());
       
  2131 
       
  2132                     HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_SUBTITLE_FADING_NAME, iEikonEnv );
       
  2133                     generator->SetDescriptiveNameL( *descriptiveName );
       
  2134                     CleanupStack::PopAndDestroy( descriptiveName );
       
  2135                     generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionFade, 
       
  2136                                                             EVeiTitleClipHorizontalAlignmentLeft, 
       
  2137                                                             EVeiTitleClipVerticalAlignmentBottom );
       
  2138                     }
       
  2139                 break;
       
  2140                 }
       
  2141         case EVeiCmdEditVideoViewEditTextStyleCredit:
       
  2142                 {
       
  2143                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextStyleCredit" );
       
  2144                 if ( IsEnoughFreeSpaceToSaveL())
       
  2145                     {
       
  2146                     CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
       
  2147 
       
  2148                     CVeiTitleClipGenerator* generator = STATIC_CAST( CVeiTitleClipGenerator* , info->Generator());
       
  2149 
       
  2150                     HBufC* descriptiveName = StringLoader::LoadLC( R_VEI_EDIT_VIEW_CREDITS_NAME, iEikonEnv );
       
  2151                     generator->SetDescriptiveNameL( *descriptiveName );
       
  2152                     CleanupStack::PopAndDestroy( descriptiveName );
       
  2153                     generator->SetTransitionAndAlignmentsL( EVeiTitleClipTransitionScrollBottomToTop, 
       
  2154                                                             EVeiTitleClipHorizontalAlignmentCenter, 
       
  2155                                                             EVeiTitleClipVerticalAlignmentCenter );
       
  2156                     }
       
  2157                 break;
       
  2158                 }
       
  2159             /*
       
  2160              * Edit text, Duplicate *	
       
  2161              */
       
  2162         case EVeiCmdEditVideoViewEditTextDuplicate:
       
  2163                 {
       
  2164                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditTextDuplicate" );
       
  2165                 if ( IsEnoughFreeSpaceToSaveL())
       
  2166                     {
       
  2167                     CVedVideoClipInfo* previousInfo = iMovie->VideoClipInfo( iContainer->CurrentIndex());
       
  2168                     CVeiTitleClipGenerator* generator = STATIC_CAST( CVeiTitleClipGenerator* , previousInfo->Generator());
       
  2169 
       
  2170                     iWaitMode = EDuplicating;
       
  2171 
       
  2172                     CVeiTitleClipGenerator* generator2 = CVeiTitleClipGenerator::NewLC( iMovie->Resolution(), 
       
  2173                                                                                         generator->Transition(), 
       
  2174                                                                                         generator->HorizontalAlignment(), 
       
  2175                                                                                         generator->VerticalAlignment());
       
  2176 
       
  2177                     generator2->SetDescriptiveNameL( generator->DescriptiveName());
       
  2178                     generator2->SetTransitionAndAlignmentsL( generator->Transition(), 
       
  2179                                                              generator->HorizontalAlignment(), 
       
  2180                                                              generator->VerticalAlignment() );
       
  2181                     generator2->SetTextL( generator->Text());
       
  2182                     generator2->SetTextColorL( generator->TextColor());
       
  2183 
       
  2184                     generator2->SetBackgroundColorL( generator->BackgroundColor());
       
  2185                     if ( generator->BackgroundImage())
       
  2186                         {
       
  2187                         generator2->SetBackgroundImageL( generator->BackgroundImage());
       
  2188                         }
       
  2189 
       
  2190                     generator2->SetDuration( generator->Duration());
       
  2191 
       
  2192                     TInt err = 0;
       
  2193                     index = ( iContainer->CurrentIndex() == iMovie->VideoClipCount()) ? iMovie->VideoClipCount(): iContainer->CurrentIndex() + 1;
       
  2194                     TRAP( err, iMovie->InsertVideoClipL( *generator2, ETrue, index ));
       
  2195 
       
  2196                     CleanupStack::Pop( generator2 );
       
  2197                     User::LeaveIfError( err );
       
  2198                     }
       
  2199                 break;
       
  2200                 }
       
  2201             /**
       
  2202              * Insert Image
       
  2203              */
       
  2204         case EVeiCmdEditVideoViewInsertImage:
       
  2205                 {
       
  2206                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertImage" );
       
  2207                 if ( IsEnoughFreeSpaceToSaveL())
       
  2208                     {
       
  2209                     TTimeIntervalMicroSeconds duration( 5000000 );
       
  2210 
       
  2211                     CDesCArrayFlat* selectedFiles = new( ELeave )CDesCArrayFlat( 1 );
       
  2212                     CleanupStack::PushL( selectedFiles );
       
  2213 
       
  2214                     CVeiMGFetchVerifier* mgFetchVerifier = CVeiMGFetchVerifier::NewLC();
       
  2215 
       
  2216                     if ( MGFetch::RunL( *selectedFiles, EImageFile, EFalse, mgFetchVerifier ) == EFalse )
       
  2217                         {
       
  2218                         /* User cancelled the dialog. */
       
  2219                         CleanupStack::PopAndDestroy( mgFetchVerifier );
       
  2220                         CleanupStack::PopAndDestroy( selectedFiles );
       
  2221                         break;
       
  2222                         }
       
  2223 
       
  2224                     CleanupStack::PopAndDestroy( mgFetchVerifier );
       
  2225 
       
  2226                     if ( !iWaitDialog )
       
  2227                         {
       
  2228                         iWaitDialog = new( ELeave )CAknWaitDialog( REINTERPRET_CAST( CEikDialog** , &iWaitDialog ), ETrue );
       
  2229                         iWaitDialog->ExecuteLD( R_VEI_WAIT_DIALOG_INSERTING_IMAGE );
       
  2230                         }
       
  2231 
       
  2232                     RFs& fs = iEikonEnv->FsSession();
       
  2233 
       
  2234                     TRAPD( err, iGenerator = CVeiImageClipGenerator::NewL(( *selectedFiles )[0], 
       
  2235                                                                             TSize( KMaxVideoFrameResolutionX, KMaxVideoFrameResolutionY ), 
       
  2236                                                                             duration, 
       
  2237                                                                             KRgbBlack, 
       
  2238                                                                             KVideoClipGenetatorDisplayMode, 
       
  2239                                                                             fs, 
       
  2240                                                                             *this ));
       
  2241                     if ( err )
       
  2242                         {
       
  2243                         if ( iWaitDialog )
       
  2244                             {
       
  2245                             CancelWaitDialog();
       
  2246                             }
       
  2247                         ShowErrorNote( R_VEI_ERRORNOTE_IMAGE_INSERTING_FAILED );
       
  2248                         }
       
  2249 
       
  2250                     CleanupStack::PopAndDestroy( selectedFiles );
       
  2251                     }
       
  2252                 break;
       
  2253                 }
       
  2254 
       
  2255             /**
       
  2256              * Edit Image * 
       
  2257              */
       
  2258         case EVeiCmdEditVideoViewEditImageMove:
       
  2259                 {
       
  2260                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditImageMove" );
       
  2261                 if ( IsEnoughFreeSpaceToSaveL())
       
  2262                     {
       
  2263                     Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL );
       
  2264                     Cba()->DrawDeferred();
       
  2265 
       
  2266                     index = iContainer->CurrentIndex();
       
  2267 
       
  2268                     if ( iContainer->CursorLocation() == VideoEditor::ECursorOnClip )
       
  2269                         {
       
  2270                         iOriginalVideoClipIndex = index;
       
  2271                         }
       
  2272                     else
       
  2273                         {
       
  2274                         User::Panic( _L( "VideoEditor" ), 34 );
       
  2275                         }
       
  2276                     iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeMove );
       
  2277                     UpdateEditNaviLabel();
       
  2278                     }
       
  2279                 break;
       
  2280                 }
       
  2281 
       
  2282         case EVeiCmdEditVideoViewEditImageChangeDuration:
       
  2283                 {
       
  2284                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditImageChangeDuration" );
       
  2285                 if ( IsEnoughFreeSpaceToSaveL())
       
  2286                     {
       
  2287                     Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL );
       
  2288                     Cba()->DrawDeferred();
       
  2289                     index = iContainer->CurrentIndex();
       
  2290 
       
  2291                     iOriginalVideoStartPoint = iMovie->VideoClipStartTime( index );
       
  2292                     iOriginalVideoCutInTime = iMovie->VideoClipCutInTime( index );
       
  2293                     iOriginalVideoCutOutTime = iMovie->VideoClipCutOutTime( index );
       
  2294 
       
  2295                     iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeDuration );
       
  2296                     UpdateEditNaviLabel();
       
  2297                     }
       
  2298                 break;
       
  2299                 }
       
  2300         case EVeiCmdEditVideoViewEditImageBackGround:
       
  2301                 {
       
  2302                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditImageBackGround" );
       
  2303                 if ( IsEnoughFreeSpaceToSaveL())
       
  2304                     {
       
  2305                     CVedVideoClipInfo* info = iMovie->VideoClipInfo( iContainer->CurrentIndex());
       
  2306                     CVeiImageClipGenerator* generator = STATIC_CAST( CVeiImageClipGenerator* , info->Generator());
       
  2307 
       
  2308                     // ask for color			
       
  2309                     TRgb color = generator->BackgroundColor();
       
  2310                     if ( !iPopup->ShowColorSelectorL( color ))
       
  2311                         {
       
  2312                         break;
       
  2313                         }
       
  2314 
       
  2315                     generator->SetBackgroundColor( color );
       
  2316                     }
       
  2317                 break;
       
  2318                 }
       
  2319         case EVeiCmdEditVideoViewEditImageAddColorEffect:
       
  2320                 {
       
  2321                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditImageAddColorEffect" );
       
  2322                 if ( IsEnoughFreeSpaceToSaveL())
       
  2323                     {
       
  2324                     iPopup->ShowEffectSelectionPopupListL();
       
  2325                     }
       
  2326                 break;
       
  2327                 }
       
  2328             // * DUPLICATE Image *
       
  2329         case EVeiCmdEditVideoViewEditImageDuplicate:
       
  2330                 {
       
  2331                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditImageDuplicate" );
       
  2332                 if ( IsEnoughFreeSpaceToSaveL())
       
  2333                     {
       
  2334                     CVedVideoClipInfo* previousInfo = iMovie->VideoClipInfo( iContainer->CurrentIndex());
       
  2335                     CVeiImageClipGenerator* generator = STATIC_CAST( CVeiImageClipGenerator* , previousInfo->Generator());
       
  2336 
       
  2337                     RFs& fs = iEikonEnv->FsSession();
       
  2338 
       
  2339                     iWaitMode = EDuplicating;
       
  2340 
       
  2341                     iGenerator = CVeiImageClipGenerator::NewL( generator->ImageFilename(), 
       
  2342                                                                TSize( KMaxVideoFrameResolutionX, KMaxVideoFrameResolutionY ), 
       
  2343                                                                previousInfo->Duration(), 
       
  2344                                                                generator->BackgroundColor(), 
       
  2345                                                                KVideoClipGenetatorDisplayMode, 
       
  2346                                                                fs, 
       
  2347                                                                *this );
       
  2348                     }
       
  2349                 break;
       
  2350                 }
       
  2351 
       
  2352             /**
       
  2353              * Insert -> Sound clip
       
  2354              */
       
  2355         case EVeiCmdEditVideoViewInsertAudio:
       
  2356                 {
       
  2357                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertAudio" );
       
  2358                 if ( IsEnoughFreeSpaceToSaveL())
       
  2359                     {
       
  2360                     if ( !iMediaQueue->ShowAudioClipDialogL())
       
  2361                         {
       
  2362                         break;
       
  2363                         }
       
  2364                     }
       
  2365                 HandleScreenDeviceChangedL();
       
  2366                 break;
       
  2367                 }
       
  2368             /**
       
  2369              * Insert -> New sound clip
       
  2370              */
       
  2371         case EVeiCmdEditVideoViewInsertNewAudio:
       
  2372                 {
       
  2373                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewInsertNewAudio" );
       
  2374                 if ( IsEnoughFreeSpaceToSaveL())
       
  2375                     {
       
  2376                     InsertNewAudio();
       
  2377                     }
       
  2378                 break;
       
  2379                 }
       
  2380 
       
  2381         case EVeiCmdEditVideoViewEditAudioSetDuration:
       
  2382                 {
       
  2383                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditAudioSetDuration" );
       
  2384                 if ( IsEnoughFreeSpaceToSaveL())
       
  2385                     {
       
  2386                     Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL );
       
  2387                     Cba()->DrawDeferred();
       
  2388                     index = iContainer->CurrentIndex();
       
  2389 
       
  2390                     iOriginalAudioStartPoint = iMovie->AudioClipStartTime( index );
       
  2391                     iOriginalAudioDuration = iMovie->AudioClipEditedDuration( index );
       
  2392                     iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeDuration );
       
  2393                     UpdateEditNaviLabel();
       
  2394                     }
       
  2395                 break;
       
  2396                 }
       
  2397         case EVeiCmdEditVideoViewSettings:
       
  2398                 {
       
  2399                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewSettings" );
       
  2400                 AppUi()->ActivateLocalViewL( TUid::Uid( EVeiSettingsView ));
       
  2401                 break;
       
  2402                 }
       
  2403         case EVeiCmdEditVideoViewRecord:
       
  2404                 {
       
  2405                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewRecord" );
       
  2406                 if ( IsEnoughFreeSpaceToSaveL())
       
  2407                     {
       
  2408                     /* Set the mode, CBAs and Navi label. */
       
  2409                     iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeRecording );
       
  2410 
       
  2411                     Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_EMPTY );
       
  2412                     Cba()->DrawDeferred();
       
  2413                     UpdateEditNaviLabel();
       
  2414 
       
  2415                     iRecordedAudioMaxDuration = TTimeIntervalMicroSeconds(  - 1 );
       
  2416                     for ( TInt i = 0; i < iMovie->AudioClipCount(); i++ )
       
  2417                         {
       
  2418 
       
  2419                         if ( iMovie->AudioClipStartTime( i ) > iContainer->RecordedAudioStartTime())
       
  2420                             {
       
  2421                             TInt64 startTimeInt = iContainer->RecordedAudioStartTime().Int64();
       
  2422                             TInt64 nextStartTimeInt = iMovie->AudioClipStartTime( i ).Int64();
       
  2423                             iRecordedAudioMaxDuration = TTimeIntervalMicroSeconds( nextStartTimeInt - startTimeInt );
       
  2424                             break;
       
  2425                             }
       
  2426                         }
       
  2427 
       
  2428                     iRecorder->RecordL();
       
  2429                     const TUint delay = 1000 * 1000 / 10;
       
  2430 
       
  2431                     iAudioRecordPeriodic->Start( delay, delay, TCallBack( CVeiEditVideoView::UpdateAudioRecording, this ));
       
  2432 
       
  2433                     iContainer->SetRecordedAudioDuration( TTimeIntervalMicroSeconds( 0 ));
       
  2434                     }
       
  2435                 break;
       
  2436                 }
       
  2437         case EVeiCmdEditVideoViewRecordCancel:
       
  2438                 {
       
  2439                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewRecordCancel" );
       
  2440                 // cancel recording
       
  2441                 iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
       
  2442                 Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
       
  2443                 iContainer->SetRecordedAudioStartTime( TTimeIntervalMicroSeconds( 0 ));
       
  2444                 iContainer->SetCursorLocation( VideoEditor::ECursorOnAudio );
       
  2445                 Cba()->DrawDeferred();
       
  2446 
       
  2447                 UpdateEditNaviLabel();
       
  2448                 break;
       
  2449                 }
       
  2450             /*
       
  2451              *   Stop previewing
       
  2452              */
       
  2453         case EVeiCmdPlayViewStop:
       
  2454         case EVeiCmdCutVideoViewStop:
       
  2455         case EVeiCmdEditVideoViewRecordStop:
       
  2456                 {
       
  2457                 LOG( KVideoEditorLogFile, "\tEVeiCmdPlayViewStop||EVeiCmdCutVideoViewStop||EVeiCmdEditVideoViewRecordStop" );
       
  2458                 if ( EditorState() == EQuickPreview )
       
  2459                     {
       
  2460                     iContainer->StopVideo( EFalse );
       
  2461                     iContainer->SetFinishedStatus( ETrue );
       
  2462                     StopNaviPaneUpdateL();
       
  2463                     LOG( KVideoEditorLogFile, "\tEVeiCmdPlayViewStop||EVeiCmdCutVideoViewStop||EVeiCmdEditVideoViewRecordStop, setting R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK" );
       
  2464                     Cba()->SetCommandSetL( R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK );
       
  2465                     Cba()->DrawDeferred();
       
  2466                     break;
       
  2467                     }
       
  2468 
       
  2469                 // stop recording
       
  2470                 iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
       
  2471                 Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
       
  2472                 Cba()->DrawDeferred();
       
  2473                 UpdateEditNaviLabel();
       
  2474 
       
  2475                 iRecorder->Stop();
       
  2476                 iAudioRecordPeriodic->Cancel();
       
  2477 
       
  2478                 if ( iAudioClipInfo )
       
  2479                     {
       
  2480                     delete iAudioClipInfo;
       
  2481                     iAudioClipInfo = NULL;
       
  2482                     }
       
  2483 
       
  2484                 iProgressNote = new( ELeave )CAknProgressDialog( REINTERPRET_CAST( CEikDialog** , &iProgressNote ), ETrue );
       
  2485 
       
  2486                 iProgressNote->SetCallback( this );
       
  2487                 iProgressNote->ExecuteDlgLD( R_VEI_PROGRESS_NOTE );
       
  2488                 HBufC* stringholder = StringLoader::LoadL( R_VEI_PROGRESS_NOTE_INSERTING_AUDIO, iEikonEnv );
       
  2489                 CleanupStack::PushL( stringholder );
       
  2490 
       
  2491                 iProgressNote->SetTextL( *stringholder );
       
  2492                 CleanupStack::PopAndDestroy( this ); // stringholder
       
  2493 
       
  2494                 iProgressNote->GetProgressInfoL()->SetFinalValue( 100 );
       
  2495                 iWaitMode = EOpeningAudioInfo;
       
  2496 
       
  2497                 iAudioClipInfo = CVedAudioClipInfo::NewL( *iTempRecordedAudio, *this );
       
  2498                 break;
       
  2499                 }
       
  2500         case EVeiCmdPlayViewPause:
       
  2501         case EVeiCmdEditVideoViewRecordPause:
       
  2502                 {
       
  2503                 LOG( KVideoEditorLogFile, "\tEVeiCmdPlayViewPause||EVeiCmdEditVideoViewRecordPause" );
       
  2504                 if ( EditorState() == EQuickPreview )
       
  2505                     {
       
  2506                     iContainer->PauseVideoL();
       
  2507                     StopNaviPaneUpdateL();
       
  2508 
       
  2509                     LOG( KVideoEditorLogFile, "\tEVeiCmdPlayViewPause||EVeiCmdEditVideoViewRecordPause, setting R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK" );
       
  2510                     Cba()->SetCommandSetL( R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK );
       
  2511                     Cba()->DrawDeferred();
       
  2512                     }
       
  2513                 else
       
  2514                     {
       
  2515                     Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_EMPTY );
       
  2516                     Cba()->DrawDeferred();
       
  2517 
       
  2518                     // Pause recording
       
  2519                     // Cba is set to CONTINUE_STOP in DoUpdateAudioRecording()
       
  2520                     iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeRecordingPaused );
       
  2521                     iRecorder->Stop();
       
  2522                     UpdateEditNaviLabel();
       
  2523                     }
       
  2524                 break;
       
  2525                 }
       
  2526             /*
       
  2527              *	Preview continue:
       
  2528              */
       
  2529         case EVeiCmdCutVideoViewPlay:
       
  2530                 {
       
  2531                 LOG( KVideoEditorLogFile, "\tEVeiCmdCutVideoViewPlay" );
       
  2532 
       
  2533                 if ( !iUpdateTemp && !iTempFile && 1 == iMovie->VideoClipCount() )
       
  2534                     {
       
  2535                     iContainer->SetSelectionMode( CVeiEditVideoContainer::EModePreview );
       
  2536                     iContainer->PlayVideo( iMovie->VideoClipInfo( 0 )->DescriptiveName(), iFullScreenSelected );
       
  2537                     }
       
  2538                 else
       
  2539                     {
       
  2540                     iContainer->SetSelectionMode( CVeiEditVideoContainer::EModePreview );
       
  2541                     iContainer->PlayVideo( *iTempFile, iFullScreenSelected );
       
  2542                     }
       
  2543 
       
  2544                 // @: think should this be put under condition play was started
       
  2545                 // (actually play starts when "loadingComplete" event comes to NotifyVideoDisplayEvent
       
  2546                 //StartNaviPaneUpdateL();            
       
  2547                 break;
       
  2548                 }
       
  2549 
       
  2550         case EVeiCmdCutVideoTakeSnapshot:
       
  2551                 {
       
  2552                 LOG( KVideoEditorLogFile, "\tEVeiCmdCutVideoTakeSnapshot" );
       
  2553                 if ( IsEnoughFreeSpaceToSaveL())
       
  2554                     {
       
  2555                     iContainer->TakeSnapshotL();
       
  2556                     }
       
  2557                 break;
       
  2558                 }
       
  2559 
       
  2560         case EVeiCmdCutVideoViewContinue:
       
  2561         case EVeiCmdEditVideoViewContinue:
       
  2562                 {
       
  2563                 LOG( KVideoEditorLogFile, "\tEVeiCmdCutVideoViewContinue||EVeiCmdEditVideoViewContinue" );
       
  2564                 if (( iRecorder->State() != CMdaAudioClipUtility::ERecording ) && 
       
  2565                     ( iRecorder->State() != CMdaAudioClipUtility::ENotReady ) )
       
  2566                     {
       
  2567                     Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_EMPTY );
       
  2568                     Cba()->DrawDeferred();
       
  2569 
       
  2570                     // Continue recording
       
  2571                     iRecorder->RecordL();
       
  2572                     iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeRecording );
       
  2573 
       
  2574                     UpdateEditNaviLabel();
       
  2575                     }
       
  2576                 break;
       
  2577                 }
       
  2578         case EVeiCmdEditVideoViewEditAudioMove:
       
  2579         case EVeiCmdEditVideoViewEditVideoMove:
       
  2580                 {
       
  2581                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditAudioMove||EVeiCmdEditVideoViewEditVideoMove" );
       
  2582                 Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL );
       
  2583                 Cba()->DrawDeferred();
       
  2584 
       
  2585                 index = iContainer->CurrentIndex();
       
  2586 
       
  2587                 if ( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio )
       
  2588                     {
       
  2589                     iOriginalAudioStartPoint = iMovie->AudioClipStartTime( index );
       
  2590                     iOriginalAudioDuration = iMovie->AudioClipEditedDuration( index );
       
  2591                     }
       
  2592                 else if ( iContainer->CursorLocation() == VideoEditor::ECursorOnClip )
       
  2593                     {
       
  2594                     iOriginalVideoClipIndex = index;
       
  2595                     }
       
  2596                 else
       
  2597                     {
       
  2598                     User::Panic( _L( "VideoEditor" ), 34 );
       
  2599                     }
       
  2600                 iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeMove );
       
  2601                 UpdateEditNaviLabel();
       
  2602                 break;
       
  2603                 }
       
  2604             /**
       
  2605              * Edit video clip -> Add colour effect
       
  2606              */
       
  2607         case EVeiCmdEditVideoViewEditVideoColorEffect:
       
  2608                 {
       
  2609                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditVideoColorEffect" );
       
  2610                 if ( IsEnoughFreeSpaceToSaveL())
       
  2611                     {
       
  2612                     iPopup->ShowEffectSelectionPopupListL();
       
  2613                     }
       
  2614                 break;
       
  2615                 }
       
  2616             /**
       
  2617              * Use slow motion
       
  2618              */
       
  2619         case EVeiCmdEditVideoViewEditVideoSlowMotion:
       
  2620                 {
       
  2621                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditVideoSlowMotion" );
       
  2622                 if ( IsEnoughFreeSpaceToSaveL())
       
  2623                     {
       
  2624                     Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL );
       
  2625                     Cba()->DrawDeferred();
       
  2626                     iOriginalVideoSpeed = iMovie->VideoClipSpeed( iContainer->CurrentIndex());
       
  2627                     iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeSlowMotion );
       
  2628                     iContainer->SetSlowMotionStartValueL( iOriginalVideoSpeed );
       
  2629                     iContainer->ArrowsControl();
       
  2630                     }
       
  2631                 break;
       
  2632                 }
       
  2633         case EVeiCmdEditVideoViewEditVideoMute:
       
  2634                 {
       
  2635                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditVideoMute" );
       
  2636                 SetNewTempFileNeeded( ETrue );
       
  2637                 iMovie->VideoClipSetMuted( iContainer->CurrentIndex(), ETrue );
       
  2638                 break;
       
  2639                 }
       
  2640         case EVeiCmdEditVideoViewEditVideoUnmute:
       
  2641                 {
       
  2642                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditVideoUnmute" );
       
  2643                 SetNewTempFileNeeded( ETrue );
       
  2644                 iMovie->VideoClipSetMuted( iContainer->CurrentIndex(), EFalse );
       
  2645                 break;
       
  2646                 }
       
  2647         case EVeiCmdEditVideoViewEditAudioRemove:
       
  2648         case EVeiCmdEditVideoViewEditVideoRemove:
       
  2649         case EVeiCmdEditVideoViewEditTextRemove:
       
  2650         case EVeiCmdEditVideoViewEditImageRemove:
       
  2651                 {
       
  2652                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewEditAudioRemove||EVeiCmdEditVideoViewEditVideoRemove||EVeiCmdEditVideoViewEditTextRemove||EVeiCmdEditVideoViewEditImageRemove" );
       
  2653                 RemoveCurrentClipL();
       
  2654                 break;
       
  2655                 }
       
  2656             /**
       
  2657              * Back
       
  2658              */
       
  2659         case EAknSoftkeyBack:
       
  2660                 {
       
  2661                 LOG( KVideoEditorLogFile, "CVeiEditVideoView::HandleCommandL: EAknSoftkeyBack" );
       
  2662                 LOGFMT( KVideoEditorLogFile, "\tiFullScreenSelected: %d", iFullScreenSelected );
       
  2663 
       
  2664                 if ( EditorState() != EEdit || iFullScreenSelected )
       
  2665                     {
       
  2666                     iFullScreenSelected = EFalse;
       
  2667                     iContainer->StopVideo( ETrue );
       
  2668                     StopNaviPaneUpdateL();
       
  2669                     UpdateEditNaviLabel();
       
  2670                     break;
       
  2671                     }
       
  2672                 else if ( !iMovieSavedFlag && ( iMovie->VideoClipCount() > 0 || iMovie->AudioClipCount() > 0 ))
       
  2673                     {
       
  2674                     HBufC* saveConfirmationString; // String holding the text shown in dialog.
       
  2675                     CAknQueryDialog* dlg; // Save confirmation dialog.
       
  2676                     TInt saveEditedVideo; // Query result.
       
  2677 
       
  2678                     saveConfirmationString = StringLoader::LoadLC( R_VEI_CONFIRM_EXIT_SAVE, iEikonEnv );
       
  2679                     dlg = new( ELeave )CAknQueryDialog( *saveConfirmationString, CAknQueryDialog::ENoTone );
       
  2680                     saveEditedVideo = dlg->ExecuteLD( R_VEI_CONFIRMATION_QUERY );
       
  2681 
       
  2682                     if ( !saveEditedVideo )
       
  2683                     // Do not save.
       
  2684                         {
       
  2685                         // Activate videos view.                    
       
  2686                         AppUi()->HandleCommandL( EAknCmdExit );
       
  2687 
       
  2688                         iMovie->Reset();
       
  2689 
       
  2690                         iMovieSavedFlag = ETrue; // Movie is saved.
       
  2691                         iMovieFirstAddFlag = ETrue; // True for the next edit process.
       
  2692 
       
  2693                         AppUi()->HandleCommandL( aCommand );
       
  2694                         }
       
  2695                     else
       
  2696                         {
       
  2697                         if ( SaveL( EProcessingMovieSaveThenQuit ))
       
  2698                         // Quit after saving?
       
  2699                             {
       
  2700                             //iMovieSavedFlag = ETrue;		// Movie is saved.
       
  2701                             iMovieFirstAddFlag = ETrue; // True for the next edit process.
       
  2702                             iWaitMode = EProcessingMovieSaveThenQuit;
       
  2703                             }
       
  2704                         }
       
  2705 
       
  2706                     CleanupStack::PopAndDestroy( saveConfirmationString ); 
       
  2707                     }
       
  2708                 // No changes to clip(s) or no clip(s) in time line.
       
  2709                 else
       
  2710                     {
       
  2711                     // Remove all clips from edit view (for future use).
       
  2712                     iMovie->Reset();
       
  2713 
       
  2714                     iMovieSavedFlag = ETrue; // Movie is saved.
       
  2715                     iMovieFirstAddFlag = ETrue; // True for the next edit process.
       
  2716                     AppUi()->HandleCommandL( aCommand );
       
  2717                     }
       
  2718 
       
  2719                 break;
       
  2720                 }
       
  2721             //
       
  2722             // Options->Help
       
  2723             //
       
  2724         case EVeiCmdEditVideoViewHelp:
       
  2725                 {
       
  2726                 LOG( KVideoEditorLogFile, "\tEVeiCmdEditVideoViewHelp" );
       
  2727                 // CS Help launching is handled in Video Editor's AppUi.
       
  2728                 AppUi()->HandleCommandL( EVeiCmdEditVideoViewHelp );
       
  2729                 break;
       
  2730                 }
       
  2731             /**
       
  2732              * Exit
       
  2733              */
       
  2734         case EEikCmdExit:
       
  2735                 {
       
  2736                 LOG( KVideoEditorLogFile, "\tEEikCmdExit" );
       
  2737                 // Edited movie is not saved yet and there are video or audio clip(s) at the time line.
       
  2738                 if ( !iMovieSavedFlag && ( iMovie->VideoClipCount() > 0 || iMovie->AudioClipCount() > 0 ))
       
  2739                     {
       
  2740                     HBufC* stringholder; // String holding the text shown in dialog.
       
  2741                     
       
  2742                     CAknQueryDialog* dlg; // Save confirmation dialog.
       
  2743                     TInt queryok; // Query result.
       
  2744 
       
  2745                     stringholder = StringLoader::LoadLC( R_VEI_CONFIRM_EXIT_SAVE, iEikonEnv );
       
  2746 
       
  2747                     dlg = new( ELeave )CAknQueryDialog( *stringholder, CAknQueryDialog::ENoTone );
       
  2748                     queryok = dlg->ExecuteLD( R_VEI_CONFIRMATION_QUERY );
       
  2749 
       
  2750                     if ( !queryok )
       
  2751                         {
       
  2752                         iMovie->Reset();
       
  2753                         AppUi()->HandleCommandL( aCommand );
       
  2754                         }
       
  2755                     else
       
  2756                         {
       
  2757                         SaveL( EProcessingMovieSaveThenQuit );
       
  2758                         iWaitMode = EProcessingMovieSaveThenQuit;
       
  2759                         }
       
  2760 
       
  2761                     CleanupStack::PopAndDestroy( stringholder );
       
  2762                     }
       
  2763                 else
       
  2764                 // No changes to clip(s) or no clip(s) in time line.
       
  2765                     {
       
  2766                     iMovie->Reset(); // Remove all clips from edit view.
       
  2767                     AppUi()->HandleCommandL( aCommand ); // Let appUi handle the exit.
       
  2768                     }
       
  2769                 break;
       
  2770                 }
       
  2771         default:
       
  2772                 {
       
  2773                 LOG( KVideoEditorLogFile, "\tdefault" );
       
  2774                 AppUi()->HandleCommandL( aCommand );
       
  2775                 break;
       
  2776                 }
       
  2777         }
       
  2778 
       
  2779     LOG( KVideoEditorLogFile, "CVeiEditVideoView::HandleCommandL: Out" );
       
  2780     }
       
  2781 
       
  2782 void CVeiEditVideoView::HandleResourceChange( TInt aType )
       
  2783     {
       
  2784     LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::HandleResourceChange() In, aType:%d", aType );
       
  2785 
       
  2786     if ( KAknsMessageSkinChange == aType )
       
  2787         {
       
  2788         // Handle skin change in the navi label controls - they do not receive 
       
  2789         // it automatically since they are not in the control stack
       
  2790         iPreviewLabel->DecoratedControl()->HandleResourceChange( aType );
       
  2791         iEditLabel->DecoratedControl()->HandleResourceChange( aType );
       
  2792         iVolumeNavi->DecoratedControl()->HandleResourceChange( aType );
       
  2793         iMoveLabel->DecoratedControl()->HandleResourceChange( aType );
       
  2794         }
       
  2795 
       
  2796     LOG( KVideoEditorLogFile, "CVeiEditVideoView::HandleResourceChange() Out" );
       
  2797     }
       
  2798 
       
  2799 void CVeiEditVideoView::SetEditorState( TEditorState aState )
       
  2800     {
       
  2801     LOGFMT3( KVideoEditorLogFile, "CVeiEditVideoView::SetEditorState: in, aState:%d, iEditorState:%d, iFullScreenSelected:%d", aState, iEditorState, iFullScreenSelected );
       
  2802 
       
  2803     CAknTitlePane* titlePane;
       
  2804     CEikStatusPane* statusPane;
       
  2805     TResourceReader reader1;
       
  2806 
       
  2807     iEditorState = aState;
       
  2808 
       
  2809     switch ( aState )
       
  2810         {
       
  2811         case EPreview:
       
  2812             /*
       
  2813             if ( iFullScreenSelected )
       
  2814             {
       
  2815             // @: this need more elaborating
       
  2816             // problem is: after large preview signal and battery pane are black in some phone models
       
  2817             //statusPane = ( ( CAknAppUi* )iEikonEnv->EikAppUi() )->StatusPane(); 
       
  2818             //statusPane ->MakeVisible( EFalse );
       
  2819             Cba()->MakeVisible( EFalse );
       
  2820             Cba()->DrawDeferred();
       
  2821             }
       
  2822             else
       
  2823             {
       
  2824             iEditorState = EQuickPreview;
       
  2825             statusPane = ( ( CAknAppUi* )iEikonEnv->EikAppUi() )->StatusPane(); 
       
  2826 
       
  2827             titlePane = (CAknTitlePane*) statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) );
       
  2828             iCoeEnv->CreateResourceReaderLC( reader1, R_VEI_PREVIEW_VIEW_TITLE_NAME );
       
  2829             titlePane->SetFromResourceL( reader1 );
       
  2830             CleanupStack::PopAndDestroy(); //reader1
       
  2831 
       
  2832             LOG(KVideoEditorLogFile, "CVeiEditVideoView::SetEditorState, 1, setting R_VEI_SOFTKEYS_PREVIEW_PAUSE_BACK");
       
  2833             Cba()->SetCommandSetL( R_VEI_SOFTKEYS_PREVIEW_PAUSE_BACK );
       
  2834             Cba()->DrawDeferred();
       
  2835             }
       
  2836              */
       
  2837             Cba()->MakeVisible( EFalse );
       
  2838             Cba()->DrawDeferred();
       
  2839             break;
       
  2840         case EQuickPreview:
       
  2841                 {
       
  2842                 LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::SetEditorState: 2, iContainer->PreviewState():%d", iContainer->PreviewState());
       
  2843                 statusPane = (( CAknAppUi* )iEikonEnv->EikAppUi())->StatusPane();
       
  2844 
       
  2845                 titlePane = ( CAknTitlePane* )statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ));
       
  2846                 iCoeEnv->CreateResourceReaderLC( reader1, R_VEI_PREVIEW_VIEW_TITLE_NAME );
       
  2847                 titlePane->SetFromResourceL( reader1 );
       
  2848                 CleanupStack::PopAndDestroy(); //reader1
       
  2849 
       
  2850                 if (( iContainer->PreviewState() == CVeiEditVideoContainer::EStatePaused ) || 
       
  2851                     ( iContainer->PreviewState() == CVeiEditVideoContainer::EStateStopped ))
       
  2852                     {
       
  2853                     LOG( KVideoEditorLogFile, "CVeiEditVideoView::SetEditorState, 3, setting R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK" );
       
  2854                     Cba()->SetCommandSetL( R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK );
       
  2855                     }
       
  2856                 else if (( iContainer->PreviewState() == CVeiEditVideoContainer::EStateOpening ) || 
       
  2857                          ( iContainer->PreviewState() == CVeiEditVideoContainer::EStateGettingFrame ) || 
       
  2858                          ( iContainer->PreviewState() == CVeiEditVideoContainer::EStateBuffering ))
       
  2859                     {
       
  2860                     LOG( KVideoEditorLogFile, "CVeiEditVideoView::SetEditorState, 4, setting R_AVKON_SOFTKEYS_EMPTY" );
       
  2861                     Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_EMPTY );
       
  2862                     }
       
  2863                 else
       
  2864                     {
       
  2865                     LOG( KVideoEditorLogFile, "CVeiEditVideoView::SetEditorState, 5, setting R_VEI_SOFTKEYS_PREVIEW_PAUSE_BACK" );
       
  2866                     Cba()->SetCommandSetL( R_VEI_SOFTKEYS_PREVIEW_PAUSE_BACK );
       
  2867                     }
       
  2868                 Cba()->DrawDeferred();
       
  2869                 break;
       
  2870                 }
       
  2871         case EEdit:
       
  2872             iContainer->SetRect( AppUi()->ClientRect());
       
  2873             statusPane = (( CAknAppUi* )iEikonEnv->EikAppUi())->StatusPane();
       
  2874             // @: this needs more elaborating
       
  2875             //statusPane ->MakeVisible( ETrue );
       
  2876 
       
  2877             titlePane = ( CAknTitlePane* )statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ));
       
  2878             iCoeEnv->CreateResourceReaderLC( reader1, R_VEI_EDIT_VIDEO_VIEW_TITLE_NAME );
       
  2879             titlePane->SetFromResourceL( reader1 );
       
  2880             CleanupStack::PopAndDestroy(); //reader1
       
  2881 
       
  2882             Cba()->MakeVisible( ETrue );
       
  2883             Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
       
  2884             Cba()->DrawDeferred();
       
  2885             break;
       
  2886 
       
  2887         case EMixAudio:
       
  2888             iContainer->SetRect( AppUi()->ClientRect());
       
  2889             statusPane = (( CAknAppUi* )iEikonEnv->EikAppUi())->StatusPane();
       
  2890 
       
  2891             titlePane = ( CAknTitlePane* )statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ));
       
  2892             iCoeEnv->CreateResourceReaderLC( reader1, R_VEI_AUDIO_MIX_VIEW_TITLE_NAME );
       
  2893             titlePane->SetFromResourceL( reader1 );
       
  2894             CleanupStack::PopAndDestroy(); //reader1
       
  2895 
       
  2896             Cba()->MakeVisible( ETrue );
       
  2897             Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_DONE );
       
  2898             Cba()->DrawDeferred();
       
  2899             iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeMixingAudio );
       
  2900 
       
  2901             break;
       
  2902 
       
  2903         case EAdjustVolume:
       
  2904             iContainer->SetRect( AppUi()->ClientRect());
       
  2905             statusPane = (( CAknAppUi* )iEikonEnv->EikAppUi())->StatusPane();
       
  2906 
       
  2907             titlePane = ( CAknTitlePane* )statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ));
       
  2908             iCoeEnv->CreateResourceReaderLC( reader1, R_VEI_ADJUST_VOLUME_VIEW_TITLE_NAME );
       
  2909             titlePane->SetFromResourceL( reader1 );
       
  2910             CleanupStack::PopAndDestroy(); //reader1
       
  2911 
       
  2912             Cba()->MakeVisible( ETrue );
       
  2913             //Cba()->SetCommandSetL(R_AVKON_SOFTKEYS_OPTIONS_DONE);			
       
  2914             Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL );
       
  2915             Cba()->DrawDeferred();
       
  2916             iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeAdjustVolume );
       
  2917 
       
  2918             break;
       
  2919 
       
  2920 
       
  2921         default:
       
  2922                 {
       
  2923                 break;
       
  2924                 }
       
  2925         }
       
  2926     LOG( KVideoEditorLogFile, "CVeiEditVideoView::SetEditorState: Out" );
       
  2927     }
       
  2928 
       
  2929 
       
  2930 void CVeiEditVideoView::SendMovieL()
       
  2931     {
       
  2932     LOG( KVideoEditorLogFile, "CVeiEditVideoView::SendMovieL() -- SENDING" );
       
  2933 
       
  2934     TEntry fileinfo;
       
  2935 
       
  2936     RFs& fs = iEikonEnv->FsSession();
       
  2937     // Rename movie from xxxx.$$$ to defaultfilename from settingsview.
       
  2938     // looks better in attachment list..
       
  2939 
       
  2940     // Get default movie name from settings view
       
  2941 
       
  2942     TPtr temppeet = iTempFile->Des();
       
  2943 
       
  2944     TParse parse;
       
  2945     parse.Set( iMovieSaveSettings.DefaultVideoName(), &temppeet, NULL );
       
  2946 
       
  2947     TFileName orgPathAndName = parse.FullName();
       
  2948 
       
  2949     TVedVideoFormat movieQuality = iMovie->Format();
       
  2950     if ( movieQuality == EVedVideoFormatMP4 )
       
  2951         {
       
  2952         orgPathAndName.Replace( orgPathAndName.Length() - 4, 4, KExtMp4 );
       
  2953         }
       
  2954     else
       
  2955         {
       
  2956         orgPathAndName.Replace( orgPathAndName.Length() - 4, 4, KExt3gp );
       
  2957         }
       
  2958 
       
  2959     fs.Replace( *iTempFile, orgPathAndName );
       
  2960     iTempFile->Des() = orgPathAndName;
       
  2961 
       
  2962     fs.Entry( *iTempFile, fileinfo );
       
  2963 
       
  2964     DEBUGLOG_ARG( TInt tempFileSize = fileinfo.iSize / 1024 );
       
  2965     LOGFMT3( KVideoEditorLogFile, "CVeiEditVideoView::SendMovieL() 1, iWaitMode:%d, tempFileSize:%d, ValidateServiceL:%d", iWaitMode, tempFileSize, iSendAppUi.ValidateServiceL( iGivenSendCommand, TSendingCapabilities( 0, tempFileSize, TSendingCapabilities::ESupportsAttachments )));
       
  2966 
       
  2967     if ( EProcessingMovieSend == iWaitMode 
       
  2968                 /*&& (iSendAppUi.ValidateServiceL(
       
  2969                                 iGivenSendCommand, 
       
  2970                                 TSendingCapabilities( 0, 
       
  2971                                                       tempFileSize, 
       
  2972                                                       TSendingCapabilities::ESupportsAttachments ) ) ) */ )
       
  2973         {
       
  2974         RFs shareFServer;
       
  2975         LOG( KVideoEditorLogFile, "CVeiEditVideoView::SendMovieL: shareFServer connect." );
       
  2976 
       
  2977         User::LeaveIfError( shareFServer.Connect());
       
  2978         shareFServer.ShareProtected();
       
  2979         CleanupClosePushL < RFs > ( shareFServer );
       
  2980 
       
  2981         RFile openFileHandle;
       
  2982 
       
  2983         TInt err = openFileHandle.Open( shareFServer, * iTempFile, EFileRead | EFileShareReadersOnly );
       
  2984         if ( KErrNone != err )
       
  2985             {
       
  2986             LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::SendMovieL 2: Could not open file %S with EFileShareReadersOnly. Trying EFileShareAny", iTempFile );
       
  2987             User::LeaveIfError( openFileHandle.Open( shareFServer, * iTempFile, EFileRead | EFileShareAny ));
       
  2988             }
       
  2989 
       
  2990         CMessageData* messageData = CMessageData::NewLC();
       
  2991         messageData->AppendAttachmentHandleL( openFileHandle );
       
  2992 
       
  2993         LOG( KVideoEditorLogFile, "CVeiEditVideoView::SendMovieL() 3" );
       
  2994 
       
  2995         iSendAppUi.CreateAndSendMessageL( iGivenSendCommand, messageData, KNullUid, EFalse );
       
  2996         LOG( KVideoEditorLogFile, "CVeiEditVideoView::SendMovieL() 4" );
       
  2997         CleanupStack::PopAndDestroy( messageData );
       
  2998 
       
  2999         CleanupStack::PopAndDestroy( &shareFServer ); // shareFServer.Close();
       
  3000         LOG( KVideoEditorLogFile, "CVeiEditVideoView::SendMovieL 5: shareFServer closed." );
       
  3001         }
       
  3002 
       
  3003     DoUpdateEditNaviLabelL();
       
  3004     LOG( KVideoEditorLogFile, "CVeiEditVideoView::SendMovieL() Out" );
       
  3005     }
       
  3006 
       
  3007 
       
  3008 void CVeiEditVideoView::StartTempFileProcessingL()
       
  3009     {
       
  3010     LOG( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL: In" );
       
  3011 
       
  3012     RFs& fs = iEikonEnv->FsSession();
       
  3013 
       
  3014     TBool fileExists( ETrue );
       
  3015     if ( iTempFile )
       
  3016         {
       
  3017         fileExists = BaflUtils::FileExists( fs, * iTempFile );
       
  3018         }
       
  3019 
       
  3020     /* to save from unnecessary processing before preview
       
  3021     prerequisites:
       
  3022     -user selected preview
       
  3023     -no movie modifying actions taken by user before preview (iUpdateTemp is EFalse)	 
       
  3024      */
       
  3025     if ( EProcessingMoviePreview == iWaitMode && !iUpdateTemp && !iTempFile && 1 == iMovie->VideoClipCount())
       
  3026         {
       
  3027         if ( iFullScreenSelected )
       
  3028             {
       
  3029             iContainer->SetBlackScreen( ETrue );
       
  3030             iContainer->SetRect( AppUi()->ApplicationRect());
       
  3031             }
       
  3032 
       
  3033         iContainer->SetSelectionMode( CVeiEditVideoContainer::EModePreview );
       
  3034         iContainer->PlayVideoFileL( iMovie->VideoClipInfo( 0 )->DescriptiveName(), iFullScreenSelected );
       
  3035         }
       
  3036     else if ( EProcessingMovieTrimMms == iWaitMode && !iUpdateTemp && !iTempFile && 1 == iMovie->VideoClipCount() && !FitsToMmsL())
       
  3037         {
       
  3038         /*
       
  3039         Read documentation of FitsToMmsL() in the header file
       
  3040          */
       
  3041         TBuf8 < KMaxFileName > conv8Filename;
       
  3042         CnvUtfConverter::ConvertFromUnicodeToUtf8( conv8Filename, iMovie->VideoClipInfo( 0 )->DescriptiveName());
       
  3043         iMovie->UnregisterMovieObserver( iContainer );
       
  3044         iMovie->UnregisterMovieObserver( this );
       
  3045         AppUi()->ActivateLocalViewL( TUid::Uid( EVeiTrimForMmsView ), TUid::Uid( 0 ), conv8Filename );
       
  3046         }
       
  3047     else if ( iUpdateTemp || !fileExists || ( !iTempFile ))
       
  3048         {
       
  3049         LOG( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL() 1, -- NEW TEMP" );
       
  3050 
       
  3051         Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_EMPTY );
       
  3052         Cba()->DrawDeferred();
       
  3053         if ( iTempFile && fileExists )
       
  3054             {
       
  3055             User::LeaveIfError( fs.Delete( *iTempFile ));
       
  3056             delete iTempFile;
       
  3057             iTempFile = NULL;
       
  3058             }
       
  3059 
       
  3060         if ( !IsEnoughFreeSpaceToSaveL()) // modifies iMemoryInUse
       
  3061             {
       
  3062             return ;
       
  3063             }
       
  3064 
       
  3065         iTempFile = HBufC::NewL( KMaxFileName );
       
  3066         iTempMaker->GenerateTempFileName( *iTempFile, iMemoryInUse, iMovie->Format());
       
  3067         LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL 2, iTempFile:%S", iTempFile );
       
  3068 
       
  3069         TVeiSettings movieSaveSettings;
       
  3070 
       
  3071         STATIC_CAST( CVeiAppUi* , AppUi())->ReadSettingsL( movieSaveSettings );
       
  3072 
       
  3073         TInt settingsSaveQuality = movieSaveSettings.SaveQuality();
       
  3074         CVedMovie::TVedMovieQuality saveQuality;
       
  3075 
       
  3076         switch ( settingsSaveQuality )
       
  3077             {
       
  3078             case TVeiSettings::EMmsCompatible: 
       
  3079                 {
       
  3080                 saveQuality = CVedMovie::EQualityMMSInteroperability;
       
  3081                 break;                    
       
  3082                 }
       
  3083             case TVeiSettings::EMedium: 
       
  3084                 {
       
  3085                 saveQuality = CVedMovie::EQualityResolutionMedium;
       
  3086                 break;                    
       
  3087                 }
       
  3088             case TVeiSettings::EBest: 
       
  3089                 {
       
  3090                 saveQuality = CVedMovie::EQualityResolutionHigh;
       
  3091                 break;                    
       
  3092                 }
       
  3093             case TVeiSettings::EAuto: default:
       
  3094                 {
       
  3095                 saveQuality = CVedMovie::EQualityAutomatic;
       
  3096                 break;                    
       
  3097                 }
       
  3098             }
       
  3099 
       
  3100         iMovie->SetQuality( saveQuality );
       
  3101         iBackupSaveQuality = saveQuality;
       
  3102 
       
  3103         if ( EProcessingMovieTrimMms == iWaitMode )
       
  3104             {
       
  3105             if ( saveQuality != CVedMovie::EQualityMMSInteroperability )
       
  3106                 {
       
  3107                 iMovie->SetQuality( CVedMovie::EQualityMMSInteroperability );
       
  3108                 SetNewTempFileNeeded( ETrue );
       
  3109                 }
       
  3110             else
       
  3111                 {
       
  3112                 SetNewTempFileNeeded( EFalse );
       
  3113                 }
       
  3114             }
       
  3115 
       
  3116         TInt err;
       
  3117         LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL 3, calling iMovie->Process(%S)", iTempFile );
       
  3118         TRAP( err, iMovie->ProcessL( *iTempFile, * this ));
       
  3119         LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL 4, err:%d", err );
       
  3120         if ( err )
       
  3121             {
       
  3122             Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
       
  3123             Cba()->DrawDeferred();
       
  3124             ShowGlobalErrorNote( err );
       
  3125             }
       
  3126         }
       
  3127     else
       
  3128     /* use old temp file*/
       
  3129         {
       
  3130         LOG( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL() 5, -- OLD TEMP" );
       
  3131         if ( EProcessingMovieSend == iWaitMode )
       
  3132             {
       
  3133             SendMovieL();
       
  3134             }
       
  3135         else if ( EProcessingMovieTrimMms == iWaitMode )
       
  3136             {
       
  3137             if ( iMovie->IsMovieMMSCompatible())
       
  3138                 {
       
  3139                 LOG( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL 6, MMS COMPATIBLE" );
       
  3140 
       
  3141                 TEntry entry;
       
  3142                 User::LeaveIfError( fs.Entry( *iTempFile, entry ));
       
  3143                 TInt tempFileSize = entry.iSize / 1024;
       
  3144                 TInt maxMmsSize = STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->GetMaxMmsSize();
       
  3145 
       
  3146                 if ( tempFileSize < maxMmsSize )
       
  3147                     {
       
  3148                     LOG( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL() 7, -- MMS SIZE OK" );
       
  3149                     iWaitMode = EProcessingMovieSend;
       
  3150                     SendMovieL();
       
  3151                     }
       
  3152                 else
       
  3153                     {
       
  3154                     SetNewTempFileNeeded( EFalse );
       
  3155 
       
  3156                     LOG( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL() 8, -- TRIM MMS" );
       
  3157 
       
  3158                     TBuf8 < KMaxFileName > conv8Filename;
       
  3159                     CnvUtfConverter::ConvertFromUnicodeToUtf8( conv8Filename, * iTempFile );
       
  3160                     iMovie->UnregisterMovieObserver( iContainer );
       
  3161                     iMovie->UnregisterMovieObserver( this );
       
  3162                     AppUi()->ActivateLocalViewL( TUid::Uid( EVeiTrimForMmsView ), TUid::Uid( 0 ), conv8Filename );
       
  3163                     }
       
  3164                 }
       
  3165             else
       
  3166                 {
       
  3167                 LOG( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL() 9, -- NO MMS COMPATIBLE" );
       
  3168 
       
  3169                 TInt err;
       
  3170                 if ( EProcessingMovieTrimMms == iWaitMode )
       
  3171                     {
       
  3172                     iMovie->SetQuality( CVedMovie::EQualityMMSInteroperability );
       
  3173                     }
       
  3174 
       
  3175                 TRAP( err, iMovie->ProcessL( *iTempFile, * this ));
       
  3176 
       
  3177                 if ( err )
       
  3178                     {
       
  3179                     ShowGlobalErrorNote( err );
       
  3180                     }
       
  3181                 }
       
  3182             }
       
  3183         else if ( EProcessingMoviePreview == iWaitMode )
       
  3184             {
       
  3185             if ( iFullScreenSelected )
       
  3186                 {
       
  3187                 iContainer->SetBlackScreen( ETrue );
       
  3188                 iContainer->SetRect( AppUi()->ApplicationRect());
       
  3189                 }
       
  3190             iContainer->SetSelectionMode( CVeiEditVideoContainer::EModePreview );
       
  3191             iContainer->PlayVideoFileL( *iTempFile, iFullScreenSelected );
       
  3192             }
       
  3193         else if (( EProcessingMovieSave == iWaitMode ) || ( EProcessingMovieSaveThenQuit == iWaitMode ))
       
  3194             {
       
  3195             CFileMan* fileman = CFileMan::NewL( fs );
       
  3196             CleanupStack::PushL( fileman );
       
  3197 
       
  3198             if ( iTempFile->Left( 1 ) == iSaveToFileName->Left( 1 ))
       
  3199                 {
       
  3200                 fileman->Rename( *iTempFile, * iSaveToFileName );
       
  3201                 }
       
  3202             else
       
  3203                 {
       
  3204                 fileman->Move( *iTempFile, * iSaveToFileName );
       
  3205                 }
       
  3206 
       
  3207             CleanupStack::PopAndDestroy( fileman );
       
  3208 
       
  3209             HBufC* stringholder = StringLoader::LoadL( R_VEI_NOTE_VIDEO_SAVED, iEikonEnv );
       
  3210             CleanupStack::PushL( stringholder );
       
  3211             iWaitMode = ENotWaiting;
       
  3212             ShowInformationNoteL( *stringholder );
       
  3213             iMovieSavedFlag = ETrue;
       
  3214             CleanupStack::PopAndDestroy( stringholder);
       
  3215 
       
  3216             UpdateMediaGalleryL();
       
  3217             }
       
  3218         }
       
  3219     LOG( KVideoEditorLogFile, "CVeiEditVideoView::StartTempFileProcessingL: Out" );
       
  3220     }
       
  3221 
       
  3222 void CVeiEditVideoView::InsertNewAudio()
       
  3223     {
       
  3224     Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_EMPTY );
       
  3225     Cba()->DrawDeferred();
       
  3226 
       
  3227     iContainer->SetRecordedAudio( ETrue );
       
  3228 
       
  3229     TInt64 startTimeInt = 0;
       
  3230     TInt64 durationInt = 1000000;
       
  3231     TInt currIndex( 0 );
       
  3232 
       
  3233     if ((( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio ) || 
       
  3234          ( iContainer->CursorLocation() == VideoEditor::ECursorOnEmptyAudioTrack )) && 
       
  3235          ( iMovie->AudioClipCount() > 0 ))
       
  3236         {
       
  3237         currIndex = iContainer->CurrentIndex() + 1;
       
  3238         startTimeInt = iMovie->AudioClipEndTime( iContainer->CurrentIndex()).Int64();
       
  3239         }
       
  3240     else
       
  3241         {
       
  3242         currIndex = iMovie->AudioClipCount() - 1;
       
  3243         if ( currIndex >= 0 )
       
  3244             {
       
  3245             startTimeInt = iMovie->AudioClipEndTime( currIndex ).Int64();
       
  3246             }
       
  3247         else
       
  3248             {
       
  3249             currIndex = 0;
       
  3250             }
       
  3251         }
       
  3252 
       
  3253     while ( currIndex < iMovie->AudioClipCount())
       
  3254         {
       
  3255         // safety margin: it is not possible to insert new audio if there is less than 1s between clips
       
  3256         TInt64 adjustedClipStartTimeInt = iMovie->AudioClipStartTime( currIndex ).Int64() - 1000000;
       
  3257 
       
  3258         if ( startTimeInt > adjustedClipStartTimeInt )
       
  3259             {
       
  3260             startTimeInt = iMovie->AudioClipEndTime( currIndex ).Int64();
       
  3261             currIndex++;
       
  3262             }
       
  3263         else
       
  3264             {
       
  3265             break;
       
  3266             }
       
  3267         }
       
  3268 
       
  3269     if ( currIndex < iMovie->AudioClipCount())
       
  3270         {
       
  3271         TInt64 endTimeInt = startTimeInt + durationInt;
       
  3272         TInt64 nextStartTimeInt = iMovie->AudioClipStartTime( currIndex ).Int64();
       
  3273 
       
  3274         if ( endTimeInt > nextStartTimeInt )
       
  3275             {
       
  3276             durationInt = nextStartTimeInt - startTimeInt;
       
  3277             }
       
  3278         }
       
  3279 
       
  3280     iContainer->SetRecordedAudioStartTime( TTimeIntervalMicroSeconds( startTimeInt ));
       
  3281     iContainer->SetRecordedAudioDuration( TTimeIntervalMicroSeconds( durationInt ));
       
  3282     iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeRecordingSetStart );
       
  3283     iContainer->SetCursorLocation( VideoEditor::ECursorOnAudio );
       
  3284 
       
  3285     UpdateEditNaviLabel();
       
  3286 
       
  3287     /* Create temp file. */
       
  3288     if ( iTempRecordedAudio )
       
  3289         {
       
  3290         delete iTempRecordedAudio;
       
  3291         iTempRecordedAudio = NULL;
       
  3292         }
       
  3293 
       
  3294     iTempRecordedAudio = HBufC::NewL( KMaxFileName );
       
  3295     iTempMaker->GenerateTempFileName( *iTempRecordedAudio, iMemoryInUse, iMovie->Format(), ETrue );
       
  3296 
       
  3297     /* Open the file, this is asynchronous so we'll come to our callback. */
       
  3298     iRecorder->OpenFileL( *iTempRecordedAudio );
       
  3299     }
       
  3300 
       
  3301 TBool CVeiEditVideoView::IsEnoughFreeSpaceToSaveL( TInt aBytesToAdd )const
       
  3302     {
       
  3303     LOG( KVideoEditorLogFile, "CVeiEditVideoView::IsEnoughFreeSpaceToSaveL: in" );
       
  3304     RFs& fs = iEikonEnv->FsSession();
       
  3305 
       
  3306     TBool spaceBelowCriticalLevel( EFalse );
       
  3307 
       
  3308     TInt sizeEstimate = iMovie->GetSizeEstimateL();
       
  3309     sizeEstimate += aBytesToAdd;
       
  3310 
       
  3311     if ( iEditorState == EQuickPreview )
       
  3312         {
       
  3313         TInt snapShotSize = iContainer->SnapshotSize();
       
  3314         if ( snapShotSize != 0 )
       
  3315             {
       
  3316             sizeEstimate = snapShotSize;
       
  3317             }
       
  3318         }
       
  3319 
       
  3320     LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::IsEnoughFreeSpaceToSaveL: 2, needed space: %d", sizeEstimate );
       
  3321 
       
  3322     if ( iMemoryInUse == CAknMemorySelectionDialog::EPhoneMemory )
       
  3323         {
       
  3324         LOG( KVideoEditorLogFile, "CVeiEditVideoView::IsEnoughFreeSpaceToSaveL: " );
       
  3325         spaceBelowCriticalLevel = SysUtil::DiskSpaceBelowCriticalLevelL( &fs, sizeEstimate, EDriveC );
       
  3326         }
       
  3327     else
       
  3328         {
       
  3329         LOG( KVideoEditorLogFile, "\tMmc selected" );
       
  3330 
       
  3331         spaceBelowCriticalLevel = SysUtil::MMCSpaceBelowCriticalLevelL( &fs, sizeEstimate );
       
  3332         }
       
  3333 
       
  3334     if ( spaceBelowCriticalLevel )
       
  3335         {
       
  3336         LOG( KVideoEditorLogFile, "CVeiEditVideoView::IsEnoughFreeSpaceToSaveL: 3, space is below critical level" );
       
  3337         ShowErrorNote( R_VEI_MEMORY_RUNNING_OUT );
       
  3338         }
       
  3339 
       
  3340     LOG( KVideoEditorLogFile, "CVeiEditVideoView::IsEnoughFreeSpaceToSaveL out" );
       
  3341 
       
  3342     return !spaceBelowCriticalLevel;
       
  3343     }
       
  3344 
       
  3345 
       
  3346 TBool CVeiEditVideoView::IsEnoughFreeSpaceToSave2L( TInt aBytesToAdd )const
       
  3347     {
       
  3348     RFs& fs = iEikonEnv->FsSession();
       
  3349     TBool spaceBelowCriticalLevel( EFalse );
       
  3350     TInt sizeEstimate = iMovie->GetSizeEstimateL();
       
  3351     sizeEstimate += aBytesToAdd;
       
  3352 
       
  3353     if ( iMemoryInUse == CAknMemorySelectionDialog::EPhoneMemory )
       
  3354         {
       
  3355         spaceBelowCriticalLevel = SysUtil::DiskSpaceBelowCriticalLevelL( &fs, sizeEstimate, EDriveC );
       
  3356         }
       
  3357     else
       
  3358         {
       
  3359         spaceBelowCriticalLevel = SysUtil::MMCSpaceBelowCriticalLevelL( &fs, sizeEstimate );
       
  3360         }
       
  3361 
       
  3362     if ( !spaceBelowCriticalLevel )
       
  3363         {
       
  3364         return ETrue;
       
  3365         }
       
  3366     else
       
  3367         {
       
  3368         return EFalse;
       
  3369         }
       
  3370     }
       
  3371 
       
  3372 TBool CVeiEditVideoView::FitsToMmsL()
       
  3373     {
       
  3374     /*
       
  3375     Read documentation of FitsToMmsL() in the header file
       
  3376      */
       
  3377     LOG( KVideoEditorLogFile, "CVeiEditVideoView::FitsToMmsL() in" );
       
  3378     TInt maxMmsSize = STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->GetMaxMmsSize();
       
  3379 
       
  3380     CVedMovie::TVedMovieQuality origQuality = iMovie->Quality();
       
  3381     iMovie->SetQuality( CVedMovie::EQualityMMSInteroperability );
       
  3382     TInt videoTimeLineSize = iMovie->GetSizeEstimateL() / 1024;
       
  3383     iMovie->SetQuality( origQuality );
       
  3384     LOG( KVideoEditorLogFile, "CVeiEditVideoView::FitsToMmsL() out" );
       
  3385     videoTimeLineSize = videoTimeLineSize * 1.1;
       
  3386     return videoTimeLineSize < maxMmsSize;
       
  3387     }
       
  3388 
       
  3389 void CVeiEditVideoView::BrowseStartTransition( TBool aUpOrDown )
       
  3390     {
       
  3391     TInt currentEffect;
       
  3392     TInt currentIndex = iContainer->CurrentIndex();
       
  3393 
       
  3394     if ( currentIndex == 0 )
       
  3395         {
       
  3396         currentEffect = iMovie->StartTransitionEffect();
       
  3397         if ( aUpOrDown )
       
  3398             {
       
  3399             if ( !( TVedStartTransitionEffect( currentEffect - 1 ) < EVedStartTransitionEffectNone ))
       
  3400                 {
       
  3401                 iMovie->SetStartTransitionEffect( TVedStartTransitionEffect( currentEffect - 1 ));
       
  3402                 }
       
  3403             else
       
  3404                 {
       
  3405                 iMovie->SetStartTransitionEffect( TVedStartTransitionEffect( EVedStartTransitionEffectLast - 1 ));
       
  3406                 }
       
  3407             }
       
  3408         else
       
  3409             {
       
  3410             if ( !( TVedStartTransitionEffect( currentEffect + 1 ) >= EVedStartTransitionEffectLast ))
       
  3411                 {
       
  3412                 iMovie->SetStartTransitionEffect( TVedStartTransitionEffect( currentEffect + 1 ));
       
  3413                 }
       
  3414             else
       
  3415                 {
       
  3416                 iMovie->SetStartTransitionEffect( TVedStartTransitionEffect( EVedStartTransitionEffectNone ));
       
  3417                 }
       
  3418             }
       
  3419         }
       
  3420     else if ( currentIndex < iMovie->VideoClipCount())
       
  3421         {
       
  3422         currentEffect = iMovie->MiddleTransitionEffect( currentIndex - 1 );
       
  3423 
       
  3424         if ( aUpOrDown )
       
  3425             {
       
  3426             if ( !( TVedMiddleTransitionEffect( currentEffect - 1 ) < EVedMiddleTransitionEffectNone ))
       
  3427                 {
       
  3428                 iMovie->SetMiddleTransitionEffect( TVedMiddleTransitionEffect( currentEffect - 1 ), currentIndex - 1 );
       
  3429                 }
       
  3430             else
       
  3431                 {
       
  3432                 iMovie->SetMiddleTransitionEffect( TVedMiddleTransitionEffect( EVedMiddleTransitionEffectLast - 1 ), currentIndex - 1 );
       
  3433                 }
       
  3434             }
       
  3435         else
       
  3436             {
       
  3437             if ( !( TVedMiddleTransitionEffect( currentEffect + 1 ) >= EVedMiddleTransitionEffectLast ))
       
  3438                 {
       
  3439                 iMovie->SetMiddleTransitionEffect( TVedMiddleTransitionEffect( currentEffect + 1 ), currentIndex - 1 );
       
  3440                 }
       
  3441             else
       
  3442                 {
       
  3443                 iMovie->SetMiddleTransitionEffect( TVedMiddleTransitionEffect( EVedMiddleTransitionEffectNone ), currentIndex - 1 );
       
  3444                 }
       
  3445             }
       
  3446         }
       
  3447     else
       
  3448         {
       
  3449         currentEffect = iMovie->EndTransitionEffect();
       
  3450 
       
  3451         if ( aUpOrDown )
       
  3452             {
       
  3453             if ( !( TVedEndTransitionEffect( currentEffect - 1 ) < EVedEndTransitionEffectNone ))
       
  3454                 {
       
  3455                 iMovie->SetEndTransitionEffect( TVedEndTransitionEffect( currentEffect - 1 ));
       
  3456                 }
       
  3457             else
       
  3458                 {
       
  3459                 iMovie->SetEndTransitionEffect( TVedEndTransitionEffect( EVedEndTransitionEffectLast - 1 ));
       
  3460                 }
       
  3461             }
       
  3462         else
       
  3463             {
       
  3464             if ( !( TVedEndTransitionEffect( currentEffect + 1 ) >= EVedEndTransitionEffectLast ))
       
  3465                 {
       
  3466                 iMovie->SetEndTransitionEffect( TVedEndTransitionEffect( currentEffect + 1 ));
       
  3467                 }
       
  3468             else
       
  3469                 {
       
  3470                 iMovie->SetEndTransitionEffect( TVedEndTransitionEffect( EVedEndTransitionEffectNone ));
       
  3471                 }
       
  3472             }
       
  3473         }
       
  3474 
       
  3475     }
       
  3476 
       
  3477 void CVeiEditVideoView::ShowErrorNote( const TInt aResourceId, TInt /*aError*/ )const
       
  3478     {
       
  3479     CVeiErrorUI::ShowErrorNote( *iEikonEnv, aResourceId );
       
  3480     }
       
  3481 
       
  3482 void CVeiEditVideoView::ShowGlobalErrorNote( const TInt aError )const
       
  3483     {
       
  3484     iErrorUI->ShowGlobalErrorNote( aError );
       
  3485     }
       
  3486 
       
  3487 void CVeiEditVideoView::ShowInformationNoteL( const TDesC& aMessage )const
       
  3488     {
       
  3489     CAknInformationNote* note = new( ELeave )CAknInformationNote( ETrue );
       
  3490     note->ExecuteLD( aMessage );
       
  3491     }
       
  3492 
       
  3493 void CVeiEditVideoView::ShowVolumeLabelL( TInt aVolume )
       
  3494     {
       
  3495     STATIC_CAST( CVeiTimeLabelNavi* , iPreviewLabel->DecoratedControl())->SetVolumeIconVisibilityL( ETrue );
       
  3496 
       
  3497     if ( iVolumeHider && iVolumeHider->IsActive())
       
  3498         {
       
  3499         iVolumeHider->Cancel();
       
  3500         }
       
  3501     if ( aVolume == 0 )
       
  3502         {
       
  3503         STATIC_CAST( CVeiTimeLabelNavi* , iPreviewLabel->DecoratedControl())->SetVolumeIconVisibilityL( EFalse );
       
  3504         HideVolume();
       
  3505         return ;
       
  3506         }
       
  3507 
       
  3508     iNaviPane->PushL( *iVolumeNavi );
       
  3509     if ( !iVolumeHider )
       
  3510         {
       
  3511         iVolumeHider = CPeriodic::NewL( CActive::EPriorityLow );
       
  3512         }
       
  3513     iVolumeHider->Start( 1000000, 1000000, TCallBack( CVeiEditVideoView::HideVolumeCallbackL, this ));
       
  3514 
       
  3515     STATIC_CAST( CAknVolumeControl* , iVolumeNavi->DecoratedControl())->SetValue( aVolume );
       
  3516 
       
  3517     if ( aVolume > KMinVolume + 1 )
       
  3518         {
       
  3519         STATIC_CAST( CVeiTimeLabelNavi* , iPreviewLabel->DecoratedControl())->SetLeftArrowVisibilityL( ETrue );
       
  3520         }
       
  3521     else
       
  3522         {
       
  3523         STATIC_CAST( CVeiTimeLabelNavi* , iPreviewLabel->DecoratedControl())->SetLeftArrowVisibilityL( EFalse );
       
  3524         }
       
  3525 
       
  3526     if ( aVolume < KMaxVolume )
       
  3527         {
       
  3528         STATIC_CAST( CVeiTimeLabelNavi* , iPreviewLabel->DecoratedControl())->SetRightArrowVisibilityL( ETrue );
       
  3529         }
       
  3530     else
       
  3531         {
       
  3532         STATIC_CAST( CVeiTimeLabelNavi* , iPreviewLabel->DecoratedControl())->SetRightArrowVisibilityL( EFalse );
       
  3533         }
       
  3534 
       
  3535     }
       
  3536 
       
  3537 void CVeiEditVideoView::RemoveCurrentClipL()
       
  3538     {
       
  3539     if ( !iContainer )
       
  3540         {
       
  3541         return ;
       
  3542         }
       
  3543     TParse fp;
       
  3544 
       
  3545     if ( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio )
       
  3546         {
       
  3547         if ( iMovie->AudioClipCount() == 0 )
       
  3548             {
       
  3549             return ;
       
  3550             }
       
  3551         CVedAudioClipInfo* audioclipinfo = iMovie->AudioClipInfo( iContainer->CurrentIndex());
       
  3552         fp.Set( audioclipinfo->FileName(), NULL, NULL );
       
  3553         }
       
  3554     else
       
  3555         {
       
  3556         if ( iMovie->VideoClipCount() == 0 )
       
  3557             {
       
  3558             return ;
       
  3559             }
       
  3560 
       
  3561         /* Get filename to remove query. */
       
  3562         TBool isFile( iMovie->VideoClipInfo( iContainer->CurrentIndex())->Class() == EVedVideoClipClassFile );
       
  3563         CVedVideoClipInfo* videoclipinfo = iMovie->VideoClipInfo( iContainer->CurrentIndex());
       
  3564 
       
  3565         if ( isFile )
       
  3566             {
       
  3567             fp.Set( videoclipinfo->FileName(), NULL, NULL );
       
  3568             }
       
  3569         else
       
  3570             {
       
  3571             fp.Set( videoclipinfo->DescriptiveName(), NULL, NULL );
       
  3572             }
       
  3573         }
       
  3574 
       
  3575     HBufC* stringholder = StringLoader::LoadL( R_VEI_REMOVE_CLIP_QUERY, fp.Name(), iEikonEnv );
       
  3576     CleanupStack::PushL( stringholder );
       
  3577     CAknQueryDialog* dlg = new( ELeave )CAknQueryDialog( *stringholder, CAknQueryDialog::ENoTone );
       
  3578     TInt queryok = dlg->ExecuteLD( R_VEI_CONFIRMATION_QUERY );
       
  3579     CleanupStack::PopAndDestroy( stringholder );
       
  3580 
       
  3581     if ( queryok )
       
  3582         {
       
  3583         TUint currentIndex = iContainer->GetAndDecrementCurrentIndex();
       
  3584 
       
  3585         if ( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio )
       
  3586             {
       
  3587             iMovie->RemoveAudioClip( currentIndex );
       
  3588             }
       
  3589         else if ( iContainer->CursorLocation() == VideoEditor::ECursorOnClip )
       
  3590             {
       
  3591             iMovie->RemoveVideoClip( currentIndex );
       
  3592             }
       
  3593         else
       
  3594             {
       
  3595             ShowErrorNote( R_VEI_ERROR_NOTE );
       
  3596             }
       
  3597         }
       
  3598     }
       
  3599 
       
  3600 
       
  3601 TInt CVeiEditVideoView::AddClipL( const TDesC& aFilename, TBool aStartNow )
       
  3602     {
       
  3603     LOG( KVideoEditorLogFile, "CVeiEditVideoView::AddClipL: In" );
       
  3604 
       
  3605     if ( !iContainer )
       
  3606         {
       
  3607         iContainer = new( ELeave )CVeiEditVideoContainer( *iMovie, * this );
       
  3608         iContainer->SetMopParent( this );
       
  3609         iContainer->ConstructL( AppUi()->ClientRect());
       
  3610         AppUi()->AddToStackL( *this, iContainer );
       
  3611         }
       
  3612 
       
  3613     iMediaQueue->InsertMediaL( aFilename );
       
  3614 
       
  3615     if ( aStartNow )
       
  3616         {
       
  3617         iMediaQueue->StartProcessingL();
       
  3618         }
       
  3619 
       
  3620     LOG( KVideoEditorLogFile, "CVeiEditVideoView::AddClipL: Out" );
       
  3621     return KErrNone;
       
  3622     }
       
  3623 
       
  3624 
       
  3625 void CVeiEditVideoView::AddNext()
       
  3626     {
       
  3627     iMediaQueue->GetNext();
       
  3628     }
       
  3629 
       
  3630 TBool CVeiEditVideoView::SaveL( TWaitMode aQuitAfterSaving )
       
  3631     {
       
  3632     LOG( KVideoEditorLogFile, "CVeiEditVideoView::SaveL: In" );
       
  3633     RFs& fs = iEikonEnv->FsSession();
       
  3634 
       
  3635     TParse file;
       
  3636     TFileName newname;
       
  3637 
       
  3638     // Get default movie name from settings view	
       
  3639     CAknMemorySelectionDialog::TMemory memory( iMovieSaveSettings.MemoryInUse());
       
  3640 
       
  3641     if ( memory == CAknMemorySelectionDialog::EPhoneMemory )
       
  3642         {
       
  3643         newname = PathInfo::PhoneMemoryRootPath();
       
  3644         }
       
  3645     else
       
  3646         {
       
  3647         newname = PathInfo::MemoryCardRootPath();
       
  3648         }
       
  3649 
       
  3650     newname.Append( PathInfo::VideosPath());
       
  3651 
       
  3652     TVedVideoFormat movieQuality = iMovie->Format();
       
  3653     if ( movieQuality == EVedVideoFormatMP4 )
       
  3654         {
       
  3655         newname.Append( KExtMp4 );
       
  3656         }
       
  3657     else
       
  3658         {
       
  3659         newname.Append( KExt3gp );
       
  3660         }
       
  3661 
       
  3662     file.Set( iMovieSaveSettings.DefaultVideoName(), &newname, NULL );
       
  3663 
       
  3664     TInt error( KErrNone );
       
  3665     error = fs.MkDirAll( file.DriveAndPath());
       
  3666 
       
  3667     if (( error != KErrAlreadyExists ) && ( error != KErrNone ))
       
  3668         {
       
  3669         return EFalse;
       
  3670         }
       
  3671 
       
  3672     LOG( KVideoEditorLogFile, "CVeiEditVideoView::SaveL: 2" );
       
  3673     if ( IsEnoughFreeSpaceToSaveL())
       
  3674         {
       
  3675         LOG( KVideoEditorLogFile, "CVeiEditVideoView::SaveL: 3" );
       
  3676         //FileNameQuery
       
  3677         newname.Zero();
       
  3678         newname.Append( file.FullName());
       
  3679 
       
  3680         CApaApplication::GenerateFileName( fs, newname );
       
  3681         CAknFileNamePromptDialog* dlg = CAknFileNamePromptDialog::NewL();
       
  3682         CleanupStack::PushL( dlg );
       
  3683 
       
  3684         HBufC* filenametitle = StringLoader::LoadLC( R_VEI_QUERY_FILE_NAME, iEikonEnv );
       
  3685 
       
  3686         dlg->SetTitleL( *filenametitle );
       
  3687         CleanupStack::PopAndDestroy( filenametitle );
       
  3688 
       
  3689         TBool namegiven = dlg->ExecuteL( newname );
       
  3690         CleanupStack::PopAndDestroy( dlg );
       
  3691 
       
  3692         if ( namegiven )
       
  3693             {
       
  3694             newname.Insert( 0, file.DriveAndPath());
       
  3695 
       
  3696             file.Set( newname, NULL, NULL );
       
  3697 
       
  3698             if ( BaflUtils::FileExists( fs, newname ))
       
  3699                 {
       
  3700                 TBool overWrite;
       
  3701                 CAknQueryDialog* queryDlg;
       
  3702 
       
  3703                 HBufC* overWriteConfirmationString;
       
  3704                 overWriteConfirmationString = StringLoader::LoadLC( R_VEI_CONFIRM_OVERWRITE, file.Name(), iEikonEnv );
       
  3705                 queryDlg = new( ELeave )CAknQueryDialog( *overWriteConfirmationString, CAknQueryDialog::ENoTone );
       
  3706                 overWrite = queryDlg->ExecuteLD( R_VEI_CONFIRMATION_QUERY );
       
  3707 
       
  3708                 CleanupStack::PopAndDestroy( overWriteConfirmationString );
       
  3709                 if ( !overWrite )
       
  3710                     {
       
  3711                     return EFalse;
       
  3712                     }
       
  3713                 }
       
  3714 
       
  3715             iWaitMode = aQuitAfterSaving;
       
  3716 
       
  3717             if ( iSaveToFileName )
       
  3718                 {
       
  3719                 delete iSaveToFileName;
       
  3720                 iSaveToFileName = NULL;
       
  3721                 }
       
  3722 
       
  3723             iSaveToFileName = HBufC::NewL( newname.Length());
       
  3724             *iSaveToFileName = newname;
       
  3725             LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::SaveL: 4, iSaveToFileName:%S", iSaveToFileName );
       
  3726             StartTempFileProcessingL();
       
  3727 
       
  3728             return ETrue;
       
  3729             }
       
  3730         else
       
  3731             {
       
  3732             return EFalse;
       
  3733             }
       
  3734         }
       
  3735 
       
  3736     else
       
  3737         {
       
  3738         return EFalse;
       
  3739         }
       
  3740     }
       
  3741 
       
  3742 
       
  3743 // ----------------------------------------------------------------------------
       
  3744 // CVeiEditVideoView::CheckMemoryCardAvailability()
       
  3745 //
       
  3746 //  Checks the memory card availability if MMC is selected as save store in
       
  3747 //  application settings. An information note is shown in following
       
  3748 //  situations:
       
  3749 //  - MMC not inserted
       
  3750 //  - MMC corrupted (unformatted)
       
  3751 //  [- MMC is read-only (not implemented)]
       
  3752 //  
       
  3753 //  If note is popped up, this function waits until it's dismissed.
       
  3754 // ----------------------------------------------------------------------------
       
  3755 //
       
  3756 void CVeiEditVideoView::CheckMemoryCardAvailabilityL()
       
  3757     {
       
  3758     LOG( KVideoEditorLogFile, "CVeiEditVideoView::CheckMemoryCardAvailability(): in" );
       
  3759 
       
  3760     // Read the video editor settings from ini file.
       
  3761 
       
  3762     iChangedFromMMCToPhoneMemory = EFalse;
       
  3763 
       
  3764     TVeiSettings settings;
       
  3765     STATIC_CAST( CVeiAppUi* , AppUi())->ReadSettingsL( settings );
       
  3766 
       
  3767     CAknMemorySelectionDialog::TMemory memoryInUse( settings.MemoryInUse());
       
  3768 
       
  3769     // Check the MMC accessibility only if MMC is used as saving store.
       
  3770     if ( memoryInUse == CAknMemorySelectionDialog::EMemoryCard )
       
  3771         {
       
  3772         RFs& fs = iEikonEnv->FsSession();
       
  3773         TDriveInfo driveInfo;
       
  3774 
       
  3775         User::LeaveIfError( fs.Drive( driveInfo, KMmcDrive ));
       
  3776 
       
  3777         // Media is not present (MMC card not inserted).
       
  3778         if ( driveInfo.iType == EMediaNotPresent )
       
  3779             {
       
  3780             LOG( KVideoEditorLogFile, "CVeiEditVideoView::CheckMemoryCardAvailability(): no media" );
       
  3781             iChangedFromMMCToPhoneMemory = ETrue;
       
  3782 
       
  3783             settings.MemoryInUse() = CAknMemorySelectionDialog::EPhoneMemory;
       
  3784             STATIC_CAST( CVeiAppUi* , AppUi())->WriteSettingsL( settings );
       
  3785             }
       
  3786         // Media is present
       
  3787         else
       
  3788             {
       
  3789             LOG( KVideoEditorLogFile, "CVeiEditVideoView::CheckMemoryCardAvailability(): media present" );
       
  3790 
       
  3791             TVolumeInfo volumeInfo;
       
  3792             TInt volumeErr = fs.Volume( volumeInfo, KMmcDrive );
       
  3793             LOGFMT( KVideoEditorLogFile, "CEditVideoView::CheckMemoryCardAvailability() Volume(): %d", volumeErr );
       
  3794 
       
  3795             // Show note if media is corrupted/unformatted.
       
  3796             if ( volumeErr == KErrCorrupt )
       
  3797                 {
       
  3798                 HBufC* noteText = StringLoader::LoadLC( R_VED_MMC_NOT_INSERTED, iEikonEnv );
       
  3799                 CAknInformationNote* informationNote = new( ELeave )CAknInformationNote( ETrue );
       
  3800                 informationNote->ExecuteLD( *noteText );
       
  3801 
       
  3802                 CleanupStack::PopAndDestroy( noteText );
       
  3803 
       
  3804                 settings.MemoryInUse() = CAknMemorySelectionDialog::EPhoneMemory;
       
  3805                 STATIC_CAST( CVeiAppUi* , AppUi())->WriteSettingsL( settings );
       
  3806                 }
       
  3807             }
       
  3808         }
       
  3809 
       
  3810     LOG( KVideoEditorLogFile, "CVeiEditVideoView::CheckMemoryCardAvailability(): out" );
       
  3811     }
       
  3812 
       
  3813 void CVeiEditVideoView::UpdateEditNaviLabel()const
       
  3814     {
       
  3815     LOG( KVideoEditorLogFile, "CVeiEditVideoView::UpdateEditNaviLabel(): In" );
       
  3816     if ( !iContainer )
       
  3817         {
       
  3818         return ;
       
  3819         }
       
  3820 
       
  3821     TRAPD( err, DoUpdateEditNaviLabelL());
       
  3822 
       
  3823     if ( err != KErrNone )
       
  3824         {
       
  3825         ShowGlobalErrorNote( err );
       
  3826         }
       
  3827     LOG( KVideoEditorLogFile, "CVeiEditVideoView::UpdateEditNaviLabel(): In" );
       
  3828     }
       
  3829 
       
  3830 void CVeiEditVideoView::DoUpdateEditNaviLabelL()const
       
  3831     {
       
  3832     LOG( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL(): In" );
       
  3833 
       
  3834     HBufC* buf;
       
  3835 
       
  3836     CAknNavigationDecorator* currentDecorator = iNaviPane->Top();
       
  3837 
       
  3838     iNaviPane->Pop( iMoveLabel );
       
  3839     iNaviPane->Pop( iPreviewLabel );
       
  3840     LOG( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL(): navi labels popped" );
       
  3841 
       
  3842     TBool leftArrowVisible = EFalse;
       
  3843     TBool rightArrowVisible = EFalse;
       
  3844 
       
  3845     TInt currentIndex = iContainer->CurrentIndex();
       
  3846 
       
  3847     TInt test = iContainer->SelectionMode();
       
  3848 
       
  3849     // Draw the time indicators to the navi pane in Small preview state.
       
  3850     // However, if the volume indicator is being show, do not draw the time label
       
  3851     if ( iContainer->SelectionMode() == CVeiEditVideoContainer::EModePreview && !iFullScreenSelected && !iVolumeHider )
       
  3852         {
       
  3853         LOG( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL(): iContainer->SelectionMode() == CVeiEditVideoContainer::EModePreview && !iFullScreenSelected && !iVolumeHider" );
       
  3854 
       
  3855         TTime elapsed( iContainer->PlaybackPositionL().Int64());
       
  3856         TTime total( iContainer->TotalLength().Int64());
       
  3857 
       
  3858         TBuf < 16 > elapsedBuf;
       
  3859         TBuf < 16 > totalBuf;
       
  3860 
       
  3861         HBufC* dateFormatString;
       
  3862 
       
  3863         // check if time is over 99:59
       
  3864         if (( total.Int64() / 1000 ) < 3600000 ) 
       
  3865             {
       
  3866             dateFormatString = iEikonEnv->AllocReadResourceLC( R_QTN_TIME_DURAT_MIN_SEC );
       
  3867             }
       
  3868         else
       
  3869             {
       
  3870             dateFormatString = iEikonEnv->AllocReadResourceLC( R_QTN_TIME_DURAT_LONG );
       
  3871             }
       
  3872 
       
  3873         elapsed.FormatL( elapsedBuf, * dateFormatString );
       
  3874         total.FormatL( totalBuf, * dateFormatString );
       
  3875         CleanupStack::PopAndDestroy( dateFormatString );
       
  3876 
       
  3877         CDesCArrayFlat* strings = new CDesCArrayFlat( 2 );
       
  3878         CleanupStack::PushL( strings );
       
  3879         strings->AppendL( elapsedBuf );
       
  3880         strings->AppendL( totalBuf );
       
  3881         HBufC* stringholder = StringLoader::LoadL( R_VEI_NAVI_TIME, * strings, iEikonEnv );
       
  3882         CleanupStack::PopAndDestroy( strings );
       
  3883         CleanupStack::PushL( stringholder );
       
  3884 
       
  3885         STATIC_CAST( CVeiTimeLabelNavi* , iPreviewLabel->DecoratedControl())->SetLabelL( stringholder->Des());
       
  3886 
       
  3887         CleanupStack::PopAndDestroy( stringholder );
       
  3888 
       
  3889         iNaviPane->PushL( *iPreviewLabel );
       
  3890         }
       
  3891 
       
  3892 
       
  3893     else if ( iContainer->SelectionMode() == CVeiEditVideoContainer::EModeMove )
       
  3894         {
       
  3895         LOG( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL(): iContainer->SelectionMode() == CVeiEditVideoContainer::EModeMove" );
       
  3896 
       
  3897         if ( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio )
       
  3898             {
       
  3899             buf = StringLoader::LoadLC( R_VEI_MOVE_AUDIO_NAVILABEL, iEikonEnv );
       
  3900 
       
  3901             TTimeIntervalMicroSeconds startTime = iMovie->AudioClipStartTime( currentIndex );
       
  3902 
       
  3903             if (( currentIndex == 0 ) && ( startTime > TTimeIntervalMicroSeconds( 0 )))
       
  3904                 {
       
  3905                 leftArrowVisible = ETrue;
       
  3906                 }
       
  3907             else
       
  3908                 {
       
  3909                 if ( currentIndex >= 1 )
       
  3910                     {
       
  3911                     TTimeIntervalMicroSeconds prevEndTime = iMovie->AudioClipEndTime( currentIndex - 1 );
       
  3912                     TTimeIntervalMicroSeconds modifiedStartTime = TTimeIntervalMicroSeconds( startTime.Int64() - 100000 );
       
  3913 
       
  3914                     if ( modifiedStartTime > prevEndTime )
       
  3915                         {
       
  3916                         leftArrowVisible = ETrue;
       
  3917                         }
       
  3918                     }
       
  3919                 }
       
  3920 
       
  3921             if ( currentIndex < ( iMovie->AudioClipCount() - 1 ))
       
  3922                 {
       
  3923                 TTimeIntervalMicroSeconds modifiedEndTime = TTimeIntervalMicroSeconds( iMovie->AudioClipEndTime( currentIndex ).Int64() + 100000 );
       
  3924                 TTimeIntervalMicroSeconds nextStartTime = iMovie->AudioClipStartTime( currentIndex + 1 );
       
  3925                 if ( modifiedEndTime < nextStartTime )
       
  3926                     {
       
  3927                     rightArrowVisible = ETrue;
       
  3928                     }
       
  3929                 }
       
  3930 
       
  3931             if ( currentIndex == iMovie->AudioClipCount() - 1 )
       
  3932                 {
       
  3933                 rightArrowVisible = ETrue;
       
  3934                 }
       
  3935             }
       
  3936         else
       
  3937             {
       
  3938             buf = StringLoader::LoadLC( R_VEI_MOVE_VIDEO_NAVILABEL, iEikonEnv );
       
  3939 
       
  3940             if ( currentIndex > 0 )
       
  3941                 {
       
  3942                 leftArrowVisible = ETrue;
       
  3943                 }
       
  3944             if ( currentIndex < iMovie->VideoClipCount() - 1 )
       
  3945                 {
       
  3946                 rightArrowVisible = ETrue;
       
  3947                 }
       
  3948             }
       
  3949 
       
  3950         STATIC_CAST( CAknNaviLabel* , iMoveLabel->DecoratedControl())->SetTextL( *buf );
       
  3951 
       
  3952         CleanupStack::PopAndDestroy( buf );
       
  3953 
       
  3954         iMoveLabel->DrawNow();
       
  3955 
       
  3956         iMoveLabel->MakeScrollButtonVisible( ETrue );
       
  3957         iMoveLabel->SetScrollButtonDimmed( CAknNavigationDecorator::ELeftButton, !leftArrowVisible );
       
  3958         iMoveLabel->SetScrollButtonDimmed( CAknNavigationDecorator::ERightButton, !rightArrowVisible );
       
  3959 
       
  3960         iNaviPane->PushL( *iMoveLabel );
       
  3961         }
       
  3962     else if ( iContainer->SelectionMode() == CVeiEditVideoContainer::EModeDuration )
       
  3963         {
       
  3964         LOG( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL(): iContainer->SelectionMode() == CVeiEditVideoContainer::EModeDuration" );
       
  3965 
       
  3966         buf = StringLoader::LoadLC( R_VEI_NAVI_PANE_DURATION, iEikonEnv );
       
  3967 
       
  3968         STATIC_CAST( CAknNaviLabel* , iMoveLabel->DecoratedControl())->SetTextL( *buf );
       
  3969 
       
  3970         CleanupStack::PopAndDestroy( buf );
       
  3971 
       
  3972         iMoveLabel->DrawNow();
       
  3973 
       
  3974         if ( currentDecorator )
       
  3975             {
       
  3976             iMoveLabel->MakeScrollButtonVisible( ETrue );
       
  3977 
       
  3978             if ( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio )
       
  3979                 {
       
  3980                 TTimeIntervalMicroSeconds editedDuration = iMovie->AudioClipEditedDuration( currentIndex );
       
  3981                 TTimeIntervalMicroSeconds duration = iMovie->AudioClipInfo( currentIndex )->Duration();
       
  3982 
       
  3983                 if ( editedDuration > TTimeIntervalMicroSeconds( 100000 ))
       
  3984                     {
       
  3985                     leftArrowVisible = ETrue;
       
  3986                     }
       
  3987 
       
  3988                 if ( editedDuration < duration )
       
  3989                     {
       
  3990                     rightArrowVisible = ETrue;
       
  3991                     }
       
  3992                 }
       
  3993             else
       
  3994             // Cursor on generated video clip
       
  3995                 {
       
  3996                 TTimeIntervalMicroSeconds duration = iMovie->VideoClipInfo( currentIndex )->Duration();
       
  3997                 if ( duration > TTimeIntervalMicroSeconds( 100000 ))
       
  3998                     {
       
  3999                     leftArrowVisible = ETrue;
       
  4000                     }
       
  4001                 rightArrowVisible = ETrue;
       
  4002                 }
       
  4003 
       
  4004             iMoveLabel->SetScrollButtonDimmed( CAknNavigationDecorator::ELeftButton, !leftArrowVisible );
       
  4005             iMoveLabel->SetScrollButtonDimmed( CAknNavigationDecorator::ERightButton, !rightArrowVisible );
       
  4006             iNaviPane->PushL( *iMoveLabel );
       
  4007             }
       
  4008         }
       
  4009     else
       
  4010         {
       
  4011         LOG( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL(): else-branch" );
       
  4012 
       
  4013         TInt maxMmsSize = STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->GetMaxMmsSize();
       
  4014 
       
  4015         CVedMovie::TVedMovieQuality origQuality = iMovie->Quality();
       
  4016         iMovie->SetQuality( CVedMovie::EQualityMMSInteroperability );
       
  4017 
       
  4018         TInt videoTimeLineSize = iMovie->GetSizeEstimateL() / 1024;
       
  4019 
       
  4020         iMovie->SetQuality( origQuality );
       
  4021 
       
  4022         // Navipanes MMS icon control. 
       
  4023         if ( videoTimeLineSize < maxMmsSize )
       
  4024             {
       
  4025             STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetMmsAvailableL( ETrue );
       
  4026             }
       
  4027         else
       
  4028             {
       
  4029             STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetMmsAvailableL( EFalse );
       
  4030             }
       
  4031 
       
  4032         TInt size = iMovie->GetSizeEstimateL() / 1024;
       
  4033         /* If in recording state, show last audio clip end time+ recorded audio clip duration in navipane*/
       
  4034         LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL: iMovie->GetSizeEstimateL() OK : %d", size );
       
  4035         TTimeIntervalMicroSeconds audioEndTime( 0 );
       
  4036         if ((( iContainer->SelectionMode() == CVeiEditVideoContainer::EModeRecording ) || 
       
  4037              ( iContainer->SelectionMode() == CVeiEditVideoContainer::EModeRecordingPaused )))
       
  4038             {
       
  4039             TInt audioCount = iMovie->AudioClipCount();
       
  4040             /* check that cursor is on last audio clip */
       
  4041             if (( audioCount > 0 ) && ( iContainer->CurrentIndex() == audioCount - 1 ))
       
  4042                 {
       
  4043                 audioEndTime = iMovie->AudioClipEndTime( audioCount - 1 );
       
  4044                 }
       
  4045             audioEndTime = audioEndTime.Int64() + iContainer->RecordedAudioDuration().Int64();
       
  4046             /*
       
  4047              * Get recorded audio clip size and add it to engine size estimate
       
  4048              * The size won't match with size estimate that engine gives when recorded audio clip is added,
       
  4049              * 
       
  4050              */
       
  4051             RFs& fs = iEikonEnv->FsSession();
       
  4052             TEntry entry;
       
  4053 
       
  4054             User::LeaveIfError( fs.Entry( *iTempRecordedAudio, entry ));
       
  4055             TInt recordedClipSize = entry.iSize / 1024;
       
  4056             size += recordedClipSize;
       
  4057             }
       
  4058 
       
  4059         if ( audioEndTime > iMovie->Duration())
       
  4060             {
       
  4061             STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetDurationLabelL( audioEndTime.Int64());
       
  4062             }
       
  4063         else
       
  4064             {
       
  4065             STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetDurationLabelL( iMovie->Duration().Int64());
       
  4066             LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL: iMovie->Duration() OK : %Ld", iMovie->Duration().Int64());
       
  4067             }
       
  4068 
       
  4069         // Video line size to navipane.
       
  4070         STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetSizeLabelL( size );
       
  4071 
       
  4072         LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL: SetSizeLabelL(%d) OK", size );
       
  4073 
       
  4074         // Get default memory from settings view
       
  4075 
       
  4076         if ( iMemoryInUse == CAknMemorySelectionDialog::EPhoneMemory )
       
  4077             {
       
  4078             STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetMemoryInUseL( ETrue );
       
  4079             }
       
  4080         else
       
  4081             {
       
  4082             STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetMemoryInUseL( EFalse );
       
  4083             }
       
  4084 
       
  4085         if ( IsEnoughFreeSpaceToSave2L())
       
  4086             {
       
  4087             STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetMemoryAvailableL( ETrue );
       
  4088             }
       
  4089         else
       
  4090             {
       
  4091             STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetMemoryAvailableL( EFalse );
       
  4092             }
       
  4093         if ( !currentDecorator )
       
  4094             {
       
  4095             iNaviPane->PushL( *iEditLabel );
       
  4096             }
       
  4097         }
       
  4098     LOG( KVideoEditorLogFile, "CVeiEditVideoView::DoUpdateEditNaviLabelL(): Out" );
       
  4099     }
       
  4100 
       
  4101 void CVeiEditVideoView::NotifyQueueProcessingStarted( MVeiQueueObserver::TProcessing aMode )
       
  4102     {
       
  4103     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyQueueProcessingStarted: in" );
       
  4104 
       
  4105     if ( iProgressNote )
       
  4106         {
       
  4107         delete iProgressNote;
       
  4108         iProgressNote = NULL;
       
  4109         }
       
  4110 
       
  4111     if ( iWaitDialog )
       
  4112         {
       
  4113         CancelWaitDialog();
       
  4114         }
       
  4115 
       
  4116     HBufC* stringholder;
       
  4117 
       
  4118     switch ( aMode )
       
  4119         {
       
  4120         case MVeiQueueObserver::EProcessingAudio: 
       
  4121 
       
  4122         iProgressNote = new( ELeave )CAknProgressDialog( REINTERPRET_CAST( CEikDialog** , &iProgressNote ), ETrue );
       
  4123 
       
  4124         iProgressNote->SetCallback( this );
       
  4125 
       
  4126         iProgressNote->ExecuteDlgLD( R_VEI_PROGRESS_NOTE_WITH_CANCEL );
       
  4127 
       
  4128 
       
  4129         stringholder = StringLoader::LoadLC( R_VEI_PROGRESS_NOTE_INSERTING_AUDIO, iEikonEnv );
       
  4130         iProgressNote->SetTextL( *stringholder );
       
  4131         CleanupStack::PopAndDestroy( stringholder );
       
  4132 
       
  4133         iWaitMode = EOpeningAudioInfo;
       
  4134         iProgressNote->GetProgressInfoL()->SetFinalValue( 100 );
       
  4135         break;
       
  4136         case MVeiQueueObserver::EProcessingVideo: 
       
  4137 
       
  4138         iWaitDialog = new( ELeave )CAknWaitDialog( REINTERPRET_CAST( CEikDialog** , &iWaitDialog ), ETrue );
       
  4139         iWaitDialog->ExecuteLD( R_VEI_WAIT_DIALOG_INSERTING_VIDEO );
       
  4140         break;
       
  4141         default:
       
  4142             iProgressNote = new( ELeave )CAknProgressDialog( REINTERPRET_CAST( CEikDialog** , &iProgressNote ), ETrue );
       
  4143 
       
  4144             iProgressNote->SetCallback( this );
       
  4145 
       
  4146             iProgressNote->ExecuteDlgLD( R_VEI_PROGRESS_NOTE );
       
  4147             UpdateInsertingProgressNoteL( 1 );
       
  4148             iProgressNote->GetProgressInfoL()->SetFinalValue( 100 );
       
  4149             break;
       
  4150         }
       
  4151 
       
  4152     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyQueueProcessingStarted: out" );
       
  4153     }
       
  4154 
       
  4155 void CVeiEditVideoView::NotifyQueueProcessingProgressed( TInt aProcessedCount, TInt aPercentage )
       
  4156     {
       
  4157     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyQueueProcessingProgressed: in" );
       
  4158     if ( iProgressNote )
       
  4159         {
       
  4160         UpdateInsertingProgressNoteL( aProcessedCount );
       
  4161         iProgressNote->GetProgressInfoL()->SetAndDraw( aPercentage );
       
  4162         }
       
  4163     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyQueueProcessingProgressed: out" );
       
  4164     }
       
  4165 
       
  4166 TBool CVeiEditVideoView::NotifyQueueClipFailed( const TDesC& aFilename, TInt aError )
       
  4167     {
       
  4168     LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::NotifyQueueClipFailed: in, aError:%d", aError );
       
  4169 
       
  4170     TBool result;
       
  4171     if ( aError == CVeiAddQueue::EInsertingSingleClip )
       
  4172         {
       
  4173         LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyQueueClipFailed: 1" );
       
  4174         ShowErrorNote( R_VEI_VIDEO_FAILED );
       
  4175         result = ETrue;
       
  4176         }
       
  4177     else
       
  4178         {
       
  4179         TBool continueProcessing;
       
  4180         CAknQueryDialog* dlg;
       
  4181         HBufC* failedContinueString;
       
  4182 
       
  4183         failedContinueString = StringLoader::LoadLC( R_VEI_WARNING_NOTE_INSERTING_FAILED, aFilename, iEikonEnv );
       
  4184         dlg = new( ELeave )CAknQueryDialog( *failedContinueString, CAknQueryDialog::ENoTone );
       
  4185         continueProcessing = dlg->ExecuteLD( R_VEI_CONFIRMATION_QUERY );
       
  4186 
       
  4187         CleanupStack::PopAndDestroy( failedContinueString );
       
  4188 
       
  4189         result = continueProcessing;
       
  4190         }
       
  4191     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyQueueClipFailed: out" );
       
  4192 
       
  4193     return result;
       
  4194     }
       
  4195 
       
  4196 void CVeiEditVideoView::NotifyQueueEmpty( TInt /*aInserted*/, TInt DEBUGLOG_ARG( aFailed ))
       
  4197     {
       
  4198     LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::NotifyQueueEmpty: in, aFailed:%d", aFailed );
       
  4199     if ( iProgressNote )
       
  4200         {
       
  4201         iProgressNote->GetProgressInfoL()->SetAndDraw( 100 );
       
  4202         TRAP_IGNORE( iProgressNote->ProcessFinishedL());
       
  4203         }
       
  4204     if ( iWaitDialog )
       
  4205         {
       
  4206         CancelWaitDialog();
       
  4207         }
       
  4208     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyQueueEmpty: out" );
       
  4209     }
       
  4210 
       
  4211 
       
  4212 void CVeiEditVideoView::NotifyMovieProcessingStartedL( CVedMovie&  /*aMovie*/ )
       
  4213     {
       
  4214     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieProcessingStartedL: in" );
       
  4215 
       
  4216     iPercentProcessed = 0;
       
  4217 
       
  4218     iProgressNote = new( ELeave )CAknProgressDialog( REINTERPRET_CAST( CEikDialog** , &iProgressNote ), ETrue );
       
  4219     iProgressNote->SetCallback( this );
       
  4220     iProgressNote->ExecuteDlgLD( R_VEI_PROGRESS_NOTE_WITH_CANCEL );
       
  4221 
       
  4222     HBufC* stringholder;
       
  4223 
       
  4224     if (( EProcessingMovieSend == iWaitMode ) && ( KSenduiMtmBtUid == iGivenSendCommand ))
       
  4225         {
       
  4226         stringholder = StringLoader::LoadL( R_VEI_PROGRESS_NOTE_PROCESSING, iEikonEnv );
       
  4227         }
       
  4228     else if ( EProcessingMovieSend == iWaitMode )
       
  4229         {
       
  4230         stringholder = StringLoader::LoadL( R_VEI_PROGRESS_NOTE_SEND, iEikonEnv );
       
  4231         }
       
  4232     else if ( EProcessingMoviePreview == iWaitMode )
       
  4233         {
       
  4234         stringholder = StringLoader::LoadL( R_VEI_PROGRESS_NOTE_PROCESSING, iEikonEnv );
       
  4235         }
       
  4236     else if ( EProcessingMovieTrimMms == iWaitMode )
       
  4237         {
       
  4238         stringholder = StringLoader::LoadL( R_VEI_PROGRESS_NOTE_PROCESSING, iEikonEnv );
       
  4239         }
       
  4240     else
       
  4241         {
       
  4242         stringholder = StringLoader::LoadL( R_VEI_PROGRESS_NOTE_SAVING, iEikonEnv );
       
  4243         }
       
  4244 
       
  4245     CleanupStack::PushL( stringholder );
       
  4246 
       
  4247     iProgressNote->SetTextL( *stringholder );
       
  4248     CleanupStack::PopAndDestroy( stringholder );
       
  4249 
       
  4250     iProgressNote->GetProgressInfoL()->SetFinalValue( 100 );
       
  4251 
       
  4252     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieProcessingStartedL: out" );
       
  4253     }
       
  4254 
       
  4255 void CVeiEditVideoView::NotifyMovieProcessingProgressed( CVedMovie&  /*aMovie*/, TInt aPercentage )
       
  4256     {
       
  4257     iPercentProcessed = aPercentage;
       
  4258     User::ResetInactivityTime();
       
  4259     iProgressNote->GetProgressInfoL()->SetAndDraw( aPercentage );
       
  4260     }
       
  4261 
       
  4262 void CVeiEditVideoView::NotifyMovieProcessingCompleted( CVedMovie& aMovie, TInt aError )
       
  4263     {
       
  4264     LOGFMT2( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieProcessingCompleted: in, aError:%d, iPercentProcessed:%d", aError, iPercentProcessed );
       
  4265 
       
  4266     aMovie.SetMovieSizeLimit( 0 ); // Movie size limit not in use
       
  4267 
       
  4268     if ( aError == KErrNone )
       
  4269         {
       
  4270         LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieProcessingCompleted: 2" );
       
  4271         Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
       
  4272         Cba()->DrawDeferred();
       
  4273         SetNewTempFileNeeded( EFalse );
       
  4274         iProgressNote->GetProgressInfoL()->SetAndDraw( 100 );
       
  4275         TRAP_IGNORE( iProgressNote->ProcessFinishedL());
       
  4276         }
       
  4277     else
       
  4278         {
       
  4279         LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieProcessingCompleted: 3" );
       
  4280         if ( iProgressNote )
       
  4281             {
       
  4282             LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieProcessingCompleted: 4" );
       
  4283             iWaitMode = EProcessingError;
       
  4284             TRAP_IGNORE( iProgressNote->GetProgressInfoL()->SetAndDraw( 100 ));
       
  4285             iErrorNmb = aError;
       
  4286             TRAP_IGNORE( iProgressNote->ProcessFinishedL());
       
  4287             }
       
  4288         else
       
  4289             {
       
  4290             LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieProcessingCompleted: 5" );
       
  4291             if ( iTempFile )
       
  4292                 {
       
  4293                 LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieProcessingCompleted: 6" );
       
  4294                 RFs& fs = iEikonEnv->FsSession();
       
  4295 
       
  4296                 fs.Delete( *iTempFile );
       
  4297                 delete iTempFile;
       
  4298                 iTempFile = NULL;
       
  4299                 SetNewTempFileNeeded( ETrue );
       
  4300                 }
       
  4301             }
       
  4302 
       
  4303         // SetEditorState() must be called because of its side effects eventhough state has not changed,
       
  4304         // it sets CBAs. CBAs are set to empty before calling ProcessL()	
       
  4305         if ( EMixAudio != iEditorState )
       
  4306             {
       
  4307             SetEditorState( EEdit );
       
  4308             }
       
  4309         else
       
  4310             {
       
  4311             SetEditorState( EMixAudio );
       
  4312             }
       
  4313 
       
  4314         iContainer->SetBlackScreen( EFalse );
       
  4315         iContainer->SetRect( AppUi()->ClientRect());
       
  4316         }
       
  4317     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieProcessingCompleted: out" );
       
  4318     }
       
  4319 
       
  4320 void CVeiEditVideoView::NotifyVideoClipAdded( CVedMovie&  /*aMovie*/, TInt aIndex )
       
  4321     {
       
  4322     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipAdded: in" );
       
  4323     SetNewTempFileNeeded( ETrue );
       
  4324     iMovieSavedFlag = EFalse;
       
  4325 
       
  4326     if ( iMovieFirstAddFlag )
       
  4327         {
       
  4328         CVedVideoClipInfo* info = iMovie->VideoClipInfo( aIndex );
       
  4329 
       
  4330         if ( EVedVideoClipClassGenerated != info->Class())
       
  4331             {
       
  4332             SetNewTempFileNeeded( EFalse );
       
  4333             iMovieSavedFlag = ETrue;
       
  4334             }
       
  4335         iMovieFirstAddFlag = EFalse;
       
  4336         }
       
  4337 
       
  4338     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipAdded: Completed" );
       
  4339 
       
  4340     STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->SetState( CVeiEditVideoLabelNavi::EStateEditView );
       
  4341     UpdateEditNaviLabel();
       
  4342     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipAdded: out" );
       
  4343     }
       
  4344 
       
  4345 void CVeiEditVideoView::NotifyVideoClipAddingFailed( CVedMovie&  /*aMovie*/, TInt DEBUGLOG_ARG( aError ))
       
  4346     {
       
  4347     LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipAddingFailed: in, aError:%d", aError );
       
  4348     if ( iProgressNote )
       
  4349         {
       
  4350         iProgressNote->GetProgressInfoL()->SetAndDraw( 100 );
       
  4351         TRAP_IGNORE( iProgressNote->ProcessFinishedL());
       
  4352         }
       
  4353 
       
  4354     if ( iWaitDialog )
       
  4355         {
       
  4356         CancelWaitDialog();
       
  4357         }
       
  4358     UpdateEditNaviLabel();
       
  4359     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipAddingFailed: out" );
       
  4360     }
       
  4361 
       
  4362 void CVeiEditVideoView::NotifyVideoClipRemoved( CVedMovie&  /*aMovie*/, TInt  /*aIndex*/ )
       
  4363     {
       
  4364     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipRemoved: in" );
       
  4365     SetNewTempFileNeeded( ETrue );
       
  4366     iMovieSavedFlag = EFalse;
       
  4367     UpdateEditNaviLabel();
       
  4368     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipRemoved: out" );
       
  4369     }
       
  4370 
       
  4371 void CVeiEditVideoView::NotifyVideoClipIndicesChanged( CVedMovie&  /*aMovie*/, TInt /*aOldIndex*/, TInt /*aNewIndex*/ )
       
  4372     {
       
  4373     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipIndicesChanged: in" );
       
  4374     iMovieSavedFlag = EFalse;
       
  4375     SetNewTempFileNeeded( ETrue );
       
  4376     UpdateEditNaviLabel();
       
  4377     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipIndicesChanged: out" );
       
  4378     }
       
  4379 
       
  4380 void CVeiEditVideoView::NotifyVideoClipTimingsChanged( CVedMovie&  /*aMovie*/, TInt /*aIndex*/ )
       
  4381     {
       
  4382     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipTimingsChanged: in" );
       
  4383     SetNewTempFileNeeded( ETrue );
       
  4384     iMovieSavedFlag = EFalse;
       
  4385     UpdateEditNaviLabel();
       
  4386     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipTimingsChanged: out" );
       
  4387     }
       
  4388 
       
  4389 void CVeiEditVideoView::NotifyVideoClipColorEffectChanged( CVedMovie&  /*aMovie*/, TInt /*aIndex*/ )
       
  4390     {
       
  4391     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipColorEffectChanged: in" );
       
  4392     SetNewTempFileNeeded( ETrue );
       
  4393     iMovieSavedFlag = EFalse;
       
  4394     UpdateEditNaviLabel();
       
  4395     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipColorEffectChanged: out" );
       
  4396     }
       
  4397 
       
  4398 void CVeiEditVideoView::NotifyVideoClipAudioSettingsChanged( CVedMovie&  /*aMovie*/, TInt /*aIndex*/ )
       
  4399     {
       
  4400     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipAudioSettingsChanged: in" );
       
  4401     SetNewTempFileNeeded( ETrue );
       
  4402     iMovieSavedFlag = EFalse;
       
  4403     UpdateEditNaviLabel();
       
  4404     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipAudioSettingsChanged: out" );
       
  4405     }
       
  4406 
       
  4407 void CVeiEditVideoView::NotifyStartTransitionEffectChanged( CVedMovie&  /*aMovie*/ )
       
  4408     {
       
  4409     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyStartTransitionEffectChanged: in" );
       
  4410     iMovieSavedFlag = EFalse;
       
  4411     SetNewTempFileNeeded( ETrue );
       
  4412     UpdateEditNaviLabel();
       
  4413     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyStartTransitionEffectChanged: out" );
       
  4414     }
       
  4415 
       
  4416 void CVeiEditVideoView::NotifyMiddleTransitionEffectChanged( CVedMovie&  /*aMovie*/, TInt /*aIndex*/ )
       
  4417     {
       
  4418     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMiddleTransitionEffectChanged: in" );
       
  4419     iMovieSavedFlag = EFalse;
       
  4420     SetNewTempFileNeeded( ETrue );
       
  4421     UpdateEditNaviLabel();
       
  4422     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMiddleTransitionEffectChanged: out" );
       
  4423     }
       
  4424 
       
  4425 void CVeiEditVideoView::NotifyEndTransitionEffectChanged( CVedMovie&  /*aMovie*/ )
       
  4426     {
       
  4427     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyEndTransitionEffectChanged: in" );
       
  4428     iMovieSavedFlag = EFalse;
       
  4429     SetNewTempFileNeeded( ETrue );
       
  4430     UpdateEditNaviLabel();
       
  4431     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyEndTransitionEffectChanged: out" );
       
  4432     }
       
  4433 
       
  4434 void CVeiEditVideoView::NotifyAudioClipAdded( CVedMovie& aMovie, TInt aIndex )
       
  4435     {
       
  4436     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipAdded: in" );
       
  4437     iMovieSavedFlag = EFalse;
       
  4438     SetNewTempFileNeeded( ETrue );
       
  4439 
       
  4440     if ( iProgressNote )
       
  4441         {
       
  4442         iProgressNote->GetProgressInfoL()->SetAndDraw( 100 );
       
  4443         TRAP_IGNORE( iProgressNote->ProcessFinishedL());
       
  4444         }
       
  4445 
       
  4446     iOriginalAudioClipIndex = iContainer->CurrentIndex();
       
  4447 
       
  4448     if ( iOriginalAudioClipIndex > aIndex )
       
  4449         {
       
  4450         iOriginalAudioClipIndex--;
       
  4451         }
       
  4452     iContainer->SetCurrentIndex( aIndex );
       
  4453 
       
  4454     iOriginalAudioStartPoint = TTimeIntervalMicroSeconds(  - 1 );
       
  4455     CVedAudioClipInfo* audioclipinfo = aMovie.AudioClipInfo( aIndex );
       
  4456     iOriginalAudioDuration = audioclipinfo->Duration();
       
  4457 
       
  4458     UpdateEditNaviLabel();
       
  4459     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipAdded: out" );
       
  4460     }
       
  4461 
       
  4462 void CVeiEditVideoView::NotifyAudioClipAddingFailed( CVedMovie&  /*aMovie*/, TInt DEBUGLOG_ARG( aError ))
       
  4463     {
       
  4464     LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipAddingFailed: in, aError:%d", aError );
       
  4465     if ( iProgressNote )
       
  4466         {
       
  4467         iProgressNote->GetProgressInfoL()->SetAndDraw( 100 );
       
  4468         TRAP_IGNORE( iProgressNote->ProcessFinishedL());
       
  4469         }
       
  4470 
       
  4471     if ( iWaitDialog )
       
  4472         {
       
  4473         CancelWaitDialog();
       
  4474         }
       
  4475     ShowErrorNote( R_VEI_ERRORNOTE_AUDIO_INSERTING_FAILED );
       
  4476 
       
  4477     UpdateEditNaviLabel();
       
  4478     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipAddingFailed: out" );
       
  4479     }
       
  4480 
       
  4481 void CVeiEditVideoView::NotifyAudioClipRemoved( CVedMovie&  /*aMovie*/, TInt  /*aIndex*/ )
       
  4482     {
       
  4483     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipRemoved: in" );
       
  4484     if ( iTempRecordedAudio )
       
  4485         {
       
  4486         delete iTempRecordedAudio;
       
  4487         iTempRecordedAudio = NULL;
       
  4488         }
       
  4489     iMovieSavedFlag = EFalse;
       
  4490     SetNewTempFileNeeded( ETrue );
       
  4491     UpdateEditNaviLabel();
       
  4492     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipRemoved: out" );
       
  4493     }
       
  4494 
       
  4495 void CVeiEditVideoView::NotifyAudioClipIndicesChanged( CVedMovie&  /*aMovie*/, TInt /*aOldIndex*/, TInt /*aNewIndex*/ )
       
  4496     {
       
  4497     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipIndicesChanged: in" );
       
  4498     iMovieSavedFlag = EFalse;
       
  4499     SetNewTempFileNeeded( ETrue );
       
  4500     UpdateEditNaviLabel();
       
  4501     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipIndicesChanged: out" );
       
  4502     }
       
  4503 
       
  4504 void CVeiEditVideoView::NotifyAudioClipTimingsChanged( CVedMovie&  /*aMovie*/, TInt /*aIndex*/ )
       
  4505     {
       
  4506     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipTimingsChanged: in" );
       
  4507     iMovieSavedFlag = EFalse;
       
  4508     SetNewTempFileNeeded( ETrue );
       
  4509     UpdateEditNaviLabel();
       
  4510     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipTimingsChanged: out" );
       
  4511     }
       
  4512 
       
  4513 void CVeiEditVideoView::NotifyMovieReseted( CVedMovie&  /*aMovie*/ )
       
  4514     {
       
  4515     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieReseted: in" );
       
  4516     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieReseted: out" );
       
  4517     }
       
  4518 
       
  4519 void CVeiEditVideoView::NotifyAudioClipInfoReady( CVedAudioClipInfo& aInfo, TInt aError )
       
  4520     {
       
  4521     LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipInfoReady: in, aError:%d", aError );
       
  4522     TInt err( KErrNone );
       
  4523 
       
  4524     if ( aError == KErrNone )
       
  4525         {
       
  4526         if ( aInfo.Type() == EVedAudioTypeUnrecognized )
       
  4527             {
       
  4528             LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipInfoReady: 2: EVedAudioTypeUnrecognized" );
       
  4529 
       
  4530             aError = KErrNotSupported;
       
  4531 
       
  4532             /*TPtrC filename = aInfo.FileName();
       
  4533 
       
  4534             iTempRecordedAudio = HBufC::NewL(KMaxFileName);
       
  4535             iTempMaker->GenerateTempFileName( *iTempRecordedAudio, iMovie );
       
  4536 
       
  4537             TRAP_IGNORE( iConverter->StartConversionL( filename, *iTempRecordedAudio) );	
       
  4538 
       
  4539             delete iTempRecordedAudio;
       
  4540             iTempRecordedAudio = NULL;
       
  4541              */
       
  4542             }
       
  4543         else if (( aInfo.Type() == EVedAudioTypeAMR ) || 
       
  4544                  ( aInfo.Type() == EVedAudioTypeAMRWB ) || 
       
  4545                  ( aInfo.Type() == EVedAudioTypeMP3 ) || 
       
  4546                  ( aInfo.Type() == EVedAudioTypeAAC_LC ) || 
       
  4547                  ( aInfo.Type() == EVedAudioTypeAAC_LTP ) || 
       
  4548                  ( aInfo.Type() == EVedAudioTypeWAV ))
       
  4549             {
       
  4550 
       
  4551             LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipInfoReady: 3" );
       
  4552             TInt index = 0;
       
  4553             TInt64 startTimeInt = 0;
       
  4554             TInt64 durationInt = aInfo.Duration().Int64();
       
  4555 
       
  4556             if ((( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio ) || 
       
  4557                  ( iContainer->CursorLocation() == VideoEditor::ECursorOnEmptyAudioTrack )) && 
       
  4558                  ( iMovie->AudioClipCount() > 0 ))
       
  4559                 {
       
  4560                 index = iContainer->CurrentIndex() + 1;
       
  4561                 startTimeInt = iMovie->AudioClipEndTime( iContainer->CurrentIndex()).Int64();
       
  4562                 }
       
  4563 
       
  4564             while ( index < iMovie->AudioClipCount())
       
  4565                 {
       
  4566                 if ( TTimeIntervalMicroSeconds( startTimeInt ) == iMovie->AudioClipStartTime( index ))
       
  4567                     {
       
  4568                     startTimeInt = iMovie->AudioClipEndTime( index ).Int64();
       
  4569                     index++;
       
  4570                     }
       
  4571                 else
       
  4572                     {
       
  4573                     break;
       
  4574                     }
       
  4575                 }
       
  4576 
       
  4577             if ( index < iMovie->AudioClipCount())
       
  4578                 {
       
  4579                 TInt64 endTimeInt = startTimeInt + durationInt;
       
  4580                 TInt64 nextStartTimeInt = iMovie->AudioClipStartTime( index ).Int64();
       
  4581                 if ( endTimeInt > nextStartTimeInt )
       
  4582                     {
       
  4583                     durationInt = nextStartTimeInt - startTimeInt;
       
  4584                     }
       
  4585                 }
       
  4586             LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipInfoReady: 4" );
       
  4587             TRAP( err, iMovie->AddAudioClipL( aInfo.FileName(), 
       
  4588                                               TTimeIntervalMicroSeconds( startTimeInt ), 
       
  4589                                               TTimeIntervalMicroSeconds( 0 ), 
       
  4590                                               TTimeIntervalMicroSeconds( durationInt )));
       
  4591             LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipInfoReady: 5" );
       
  4592             }
       
  4593         }
       
  4594     if (( aError != KErrNone ) || ( err != KErrNone ))
       
  4595         {
       
  4596         LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipInfoReady: 6" );
       
  4597         if ( aError != KErrCancel )
       
  4598             {
       
  4599             if ( aError )
       
  4600                 {
       
  4601                 iErrorNmb = aError;
       
  4602                 }
       
  4603             else
       
  4604                 {
       
  4605                 iErrorNmb = err;
       
  4606                 }
       
  4607             }
       
  4608         iWaitMode = EProcessingAudioError;
       
  4609 
       
  4610         iProgressNote->GetProgressInfoL()->SetAndDraw( 100 );
       
  4611         TRAP_IGNORE( iProgressNote->ProcessFinishedL());
       
  4612         }
       
  4613     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipInfoReady: out" );
       
  4614     }
       
  4615 
       
  4616 
       
  4617 
       
  4618 void CVeiEditVideoView::NotifyVideoClipGeneratorSettingsChanged( CVedMovie&  /*aMovie*/, TInt /*aIndex*/ )
       
  4619     {
       
  4620     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipGeneratorSettingsChanged: in" );
       
  4621     if ( iWaitDialog )
       
  4622         {
       
  4623         iWaitDialog->ProcessFinishedL();
       
  4624         }
       
  4625 
       
  4626     SetNewTempFileNeeded( ETrue );
       
  4627     iMovieSavedFlag = EFalse;
       
  4628     UpdateEditNaviLabel();
       
  4629     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipGeneratorSettingsChanged: out" );
       
  4630     }
       
  4631 
       
  4632 void CVeiEditVideoView::NotifyVideoClipDescriptiveNameChanged( CVedMovie&  /*aMovie*/, TInt /*aIndex*/ )
       
  4633     {
       
  4634     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipDescriptiveNameChanged: in and out" );
       
  4635     }
       
  4636 
       
  4637 void CVeiEditVideoView::NotifyMovieQualityChanged( CVedMovie&  /*aMovie*/ )
       
  4638     {
       
  4639     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieQualityChanged: in" );
       
  4640 
       
  4641     // If there are text generator inserted into the movie, they need
       
  4642     // to be notified that the movie resolution has changed so that
       
  4643     // they can re-calculate the the wrapping etc. parameters.
       
  4644     /*	TInt clipCount = iMovie->VideoClipCount();
       
  4645     for (TInt i = 0; i < clipCount; i++)
       
  4646     {
       
  4647     CVedVideoClipInfo* clipInfo = iMovie->VideoClipInfo(i);
       
  4648     if (clipInfo->Class() == EVedVideoClipClassGenerated)
       
  4649     {
       
  4650     TUid generatorUid = clipInfo->Generator()->Uid();
       
  4651     if (generatorUid == KUidTitleClipGenerator)
       
  4652     {
       
  4653     CVeiTitleClipGenerator* generator = static_cast<CVeiTitleClipGenerator*>(clipInfo->Generator());
       
  4654     generator->RefreshTextFrameParametersL();
       
  4655     }
       
  4656     }
       
  4657     }*/
       
  4658 
       
  4659     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieQualityChanged: out" );
       
  4660     }
       
  4661 
       
  4662 void CVeiEditVideoView::NotifyMovieOutputParametersChanged( CVedMovie& /*aMovie*/ )
       
  4663     {
       
  4664     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyMovieOutputParametersChanged: in and out" );
       
  4665     SetNewTempFileNeeded( ETrue );
       
  4666     iMovieSavedFlag = EFalse;
       
  4667     }
       
  4668 
       
  4669 void CVeiEditVideoView::NotifyAudioClipDynamicLevelMarkInserted( CVedMovie& /*aMovie*/, 
       
  4670                                                                  TInt /*aClipIndex*/, 
       
  4671                                                                  TInt /*aMarkIndex*/ )
       
  4672     {
       
  4673     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipDynamicLevelMarkInserted: in and out" );
       
  4674     SetNewTempFileNeeded( ETrue );
       
  4675     iMovieSavedFlag = EFalse;
       
  4676     }
       
  4677 
       
  4678 void CVeiEditVideoView::NotifyAudioClipDynamicLevelMarkRemoved( CVedMovie& /*aMovie*/, 
       
  4679                                                                 TInt /*aClipIndex*/, 
       
  4680                                                                 TInt /*aMarkIndex*/ )
       
  4681     {
       
  4682     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyAudioClipDynamicLevelMarkRemoved: in and out" );
       
  4683     SetNewTempFileNeeded( ETrue );
       
  4684     iMovieSavedFlag = EFalse;
       
  4685     }
       
  4686 
       
  4687 void CVeiEditVideoView::NotifyVideoClipDynamicLevelMarkInserted( CVedMovie& /*aMovie*/, 
       
  4688                                                                  TInt /*aClipIndex*/, 
       
  4689                                                                  TInt /*aMarkIndex*/ )
       
  4690     {
       
  4691     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipDynamicLevelMarkInserted: in and out" );
       
  4692     SetNewTempFileNeeded( ETrue );
       
  4693     iMovieSavedFlag = EFalse;
       
  4694     }
       
  4695 
       
  4696 void CVeiEditVideoView::NotifyVideoClipDynamicLevelMarkRemoved( CVedMovie& /*aMovie*/, 
       
  4697                                                                 TInt /*aClipIndex*/, 
       
  4698                                                                 TInt /*aMarkIndex*/ )
       
  4699     {
       
  4700     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyVideoClipDynamicLevelMarkRemoved: in and out" );
       
  4701     SetNewTempFileNeeded( ETrue );
       
  4702     iMovieSavedFlag = EFalse;
       
  4703     }
       
  4704 
       
  4705 void CVeiEditVideoView::MoscoStateChangeEvent( CBase* aObject, TInt aPreviousState, TInt aCurrentState, TInt aErrorCode )
       
  4706     {
       
  4707     LOGFMT3( KVideoEditorLogFile, "CVeiEditVideoView::MoscoStateChangeEvent: In: aPreviousState:%d, aCurrentState:%d, aErrorCode:%d", aPreviousState, aCurrentState, aErrorCode );
       
  4708 
       
  4709     if ( aObject == iRecorder )
       
  4710         {
       
  4711         if ( aErrorCode != KErrNone )
       
  4712             {
       
  4713             ShowErrorNote( R_VEI_RECORDING_FAILED );
       
  4714 
       
  4715             if ( iTempRecordedAudio )
       
  4716                 {
       
  4717                 TInt err = iEikonEnv->FsSession().Delete( *iTempRecordedAudio );
       
  4718                 if ( err ){
       
  4719 
       
  4720                 }
       
  4721                 delete iTempRecordedAudio;
       
  4722                 iTempRecordedAudio = NULL;
       
  4723                 }
       
  4724 
       
  4725             iContainer->SetSelectionMode( CVeiEditVideoContainer::EModeNavigation );
       
  4726             TRAP_IGNORE( Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK ));
       
  4727             Cba()->DrawDeferred();
       
  4728             UpdateEditNaviLabel();
       
  4729 
       
  4730             iRecorder->Close();
       
  4731             }
       
  4732         else if ( aCurrentState == CMdaAudioClipUtility::ERecording )
       
  4733             {
       
  4734             const TUint delay = 1000 * 1000 / 10;
       
  4735 
       
  4736             if ( !iAudioRecordPeriodic->IsActive())
       
  4737                 {
       
  4738                 iAudioRecordPeriodic->Start( delay, delay, TCallBack( CVeiEditVideoView::UpdateAudioRecording, this ));
       
  4739                 }
       
  4740 
       
  4741             Cba()->SetCommandSetL( R_VEI_SOFTKEYS_PAUSE_STOP );
       
  4742             Cba()->DrawDeferred();
       
  4743             }
       
  4744         else if ( aPreviousState == CMdaAudioClipUtility::ENotReady )
       
  4745             {
       
  4746             TRAP_IGNORE( Cba()->SetCommandSetL( R_VEI_SOFTKEYS_RECORD_CANCEL ));
       
  4747             Cba()->DrawDeferred();
       
  4748             }
       
  4749         }
       
  4750 
       
  4751     LOG( KVideoEditorLogFile, "CVeiEditVideoView::MoscoStateChangeEvent: Out" );
       
  4752     }
       
  4753 
       
  4754 
       
  4755 void CVeiEditVideoView::DoActivateL( const TVwsViewId& /*aPrevViewId*/, 
       
  4756                                      TUid /*aCustomMessageId*/, 
       
  4757                                      const TDesC8& /*aCustomMessage*/ )
       
  4758     {
       
  4759     LOG( KVideoEditorLogFile, "CVeiEditVideoView::DoActivateL: In" );
       
  4760     if ( !iMemoryCardChecked )
       
  4761         {
       
  4762         CheckMemoryCardAvailabilityL();
       
  4763         iMemoryCardChecked = ETrue;
       
  4764         }
       
  4765 
       
  4766     if ( !iContainer )
       
  4767         {
       
  4768         iContainer = new( ELeave )CVeiEditVideoContainer( *iMovie, * this );
       
  4769         iContainer->SetMopParent( this );
       
  4770         iContainer->ConstructL( AppUi()->ClientRect());
       
  4771         AppUi()->AddToStackL( *this, iContainer );
       
  4772         }
       
  4773 
       
  4774     SetEditorState( EEdit );
       
  4775 
       
  4776     // Add Context Pane icon
       
  4777 
       
  4778     /*	TUid contextPaneUid;
       
  4779     contextPaneUid.iUid = EEikStatusPaneUidContext;
       
  4780 
       
  4781     CEikStatusPane* sp = StatusPane();
       
  4782     CEikStatusPaneBase::TPaneCapabilities subPane = sp->PaneCapabilities( contextPaneUid );
       
  4783 
       
  4784     if ( subPane.IsPresent() && subPane.IsAppOwned() )
       
  4785     {	
       
  4786     CAknContextPane* contextPane = (CAknContextPane*)sp->ControlL( contextPaneUid);
       
  4787 
       
  4788     TFileName mbmPath( VideoEditorUtils::IconFileNameAndPath(KManualVideoEditorIconFileId) );
       
  4789     }*/
       
  4790 
       
  4791     // Quality is taken from settings and set to engine.
       
  4792     STATIC_CAST( CVeiAppUi* , AppUi())->ReadSettingsL( iMovieSaveSettings );
       
  4793 
       
  4794     TInt settingsSaveQuality = iMovieSaveSettings.SaveQuality();
       
  4795     CVedMovie::TVedMovieQuality saveQuality;
       
  4796 
       
  4797     switch ( settingsSaveQuality )
       
  4798         {
       
  4799         case TVeiSettings::EMmsCompatible: saveQuality = CVedMovie::EQualityMMSInteroperability;
       
  4800         break;
       
  4801         case TVeiSettings::EMedium: saveQuality = CVedMovie::EQualityResolutionMedium;
       
  4802         break;
       
  4803         case TVeiSettings::EBest: saveQuality = CVedMovie::EQualityResolutionHigh;
       
  4804         break;
       
  4805         case TVeiSettings::EAuto: default:
       
  4806             saveQuality = CVedMovie::EQualityAutomatic;
       
  4807             break;
       
  4808         }
       
  4809 
       
  4810     iMovie->SetQuality( saveQuality );
       
  4811     iMemoryInUse = iMovieSaveSettings.MemoryInUse();
       
  4812 
       
  4813     if (( EProcessingMovieForCutting == iWaitMode ) || 
       
  4814         ( EProcessingMovieTrimMms == iWaitMode ) || 
       
  4815         ( ECuttingAudio == iWaitMode ))
       
  4816         {
       
  4817         iMovie->RegisterMovieObserverL( this );
       
  4818         iMovie->RegisterMovieObserverL( iContainer );
       
  4819         }
       
  4820 
       
  4821     if ( EProcessingMovieForCutting == iWaitMode )
       
  4822         {
       
  4823         // miksi laitetaan jos ollaan oltu rimmaamassa?
       
  4824         //SetNewTempFileNeeded(ETrue);
       
  4825 
       
  4826         TTimeIntervalMicroSeconds cutin;
       
  4827         TTimeIntervalMicroSeconds cutout;
       
  4828         cutin = iMovie->VideoClipCutInTime( iCutVideoIndex );
       
  4829         cutout = iMovie->VideoClipCutOutTime( iCutVideoIndex );
       
  4830 
       
  4831         if (( cutin != TTimeIntervalMicroSeconds( 0 )) || 
       
  4832             ( cutout != iMovie->VideoClipInfo( iCutVideoIndex )->Duration()))
       
  4833             {
       
  4834             iMovieSavedFlag = EFalse;
       
  4835             }
       
  4836 
       
  4837         if (( cutin != iOriginalCutInTime ) || ( cutout != iOriginalCutOutTime ) )
       
  4838             {
       
  4839             SetNewTempFileNeeded( ETrue );
       
  4840             iContainer->DrawNow();
       
  4841             Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_EMPTY );
       
  4842             iContainer->UpdateThumbnailL( iCutVideoIndex );
       
  4843             }
       
  4844         iContainer->SetCursorLocation( VideoEditor::ECursorOnClip );
       
  4845         }
       
  4846     else if ( ECuttingAudio == iWaitMode )
       
  4847         {
       
  4848 
       
  4849         //SetNewTempFileNeeded(ETrue);
       
  4850 
       
  4851         TTimeIntervalMicroSeconds cutin;
       
  4852         TTimeIntervalMicroSeconds cutout;
       
  4853         cutin = iMovie->AudioClipCutInTime( iCutAudioIndex );
       
  4854         cutout = iMovie->AudioClipCutOutTime( iCutAudioIndex );
       
  4855 
       
  4856         if (( cutin != TTimeIntervalMicroSeconds( 0 )) || 
       
  4857             ( cutout != iMovie->AudioClipInfo( iCutAudioIndex )->Duration()))
       
  4858             {
       
  4859             iMovieSavedFlag = EFalse;
       
  4860             }
       
  4861 
       
  4862         TTimeIntervalMicroSeconds currentEndTime;
       
  4863         TTimeIntervalMicroSeconds nextStartTime;
       
  4864 
       
  4865         for ( TInt i = iContainer->CurrentIndex(); i < ( iMovie->AudioClipCount() - 1 ); i++ )
       
  4866             {
       
  4867             currentEndTime = iMovie->AudioClipEndTime( i );
       
  4868             nextStartTime = iMovie->AudioClipStartTime( i + 1 );
       
  4869 
       
  4870             if ( nextStartTime < currentEndTime )
       
  4871             // what is the reason behind?
       
  4872             // is this a typo, should it be like this?:
       
  4873             //if ( nextStartTime != currentEndTime )
       
  4874                 {
       
  4875                 nextStartTime = currentEndTime;
       
  4876                 iMovie->AudioClipSetStartTime( i + 1, nextStartTime );
       
  4877                 }
       
  4878             }
       
  4879         if (( cutin != iOriginalAudioCutInTime ) || ( cutout != iOriginalAudioCutOutTime ))
       
  4880             {
       
  4881             SetNewTempFileNeeded( ETrue );
       
  4882             iContainer->DrawNow();
       
  4883             }
       
  4884 
       
  4885         iContainer->SetCursorLocation( VideoEditor::ECursorOnAudio );
       
  4886         }
       
  4887 
       
  4888     iNaviPane->PushL( *iEditLabel );
       
  4889 
       
  4890     iSendKey = EFalse;
       
  4891     iWaitMode = ENotWaiting;
       
  4892 
       
  4893     LOG( KVideoEditorLogFile, "CVeiEditVideoView::DoActivateL: out" );
       
  4894     }
       
  4895 
       
  4896 void CVeiEditVideoView::HandleForegroundEventL( TBool aForeground )
       
  4897     {
       
  4898     LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::HandleForegroundEventL: in: %d", aForeground );
       
  4899 
       
  4900     if ( !aForeground )
       
  4901         {
       
  4902         // If the application is closing down, calling PauseVideoL could result in 
       
  4903         // a callback from the MMF player after the container is already deleted,
       
  4904         // causing KERN-EXEC 3
       
  4905         if ( static_cast < CVeiAppUi*  > ( AppUi())->AppIsOnTheWayToDestruction())
       
  4906             {
       
  4907             iContainer->PrepareForTerminationL();
       
  4908             return ;
       
  4909             }
       
  4910 
       
  4911         LOG( KVideoEditorLogFile, "CVeiEditVideoView::HandleForegroundEventL 1" );
       
  4912         //if ( (EditorState() != EEdit ) && iContainer)
       
  4913         if ( EPreview == EditorState() || EQuickPreview == EditorState())
       
  4914             {
       
  4915             iContainer->PauseVideoL();
       
  4916             }
       
  4917         // In phones with clamshell (läppäpuhelin) background can be activated with closing the shell
       
  4918         // iContainer's OfferKeyEvent do not get this kind of shell events
       
  4919         if ( EPreview == EditorState())
       
  4920         // large preview
       
  4921             {
       
  4922             LOG( KVideoEditorLogFile, "CVeiEditVideoView::HandleForegroundEventL 2" );
       
  4923             SetEditorState( CVeiEditVideoView::EEdit );
       
  4924             iContainer->SetBlackScreen( EFalse );
       
  4925             SetFullScreenSelected( EFalse );
       
  4926             iContainer->StopVideo( ETrue );
       
  4927             }
       
  4928 
       
  4929         if (( iContainer->SelectionMode() == CVeiEditVideoContainer::EModeRecordingPaused ) || ( iContainer->SelectionMode() == CVeiEditVideoContainer::EModeRecording ))
       
  4930             {
       
  4931             HandleCommandL( EVeiCmdEditVideoViewRecordStop );
       
  4932             }
       
  4933         DoDeactivate();
       
  4934         }
       
  4935     else
       
  4936         {
       
  4937         if ( EditorState() != EEdit )
       
  4938             {
       
  4939             if ( EMixAudio != EditorState() && EAdjustVolume != EditorState())
       
  4940                 {
       
  4941                 LOG( KVideoEditorLogFile, "CVeiEditVideoView::HandleForegroundEventL: 3, setting R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK" );
       
  4942                 Cba()->SetCommandSetL( R_VEI_SOFTKEYS_PREVIEW_PLAY_BACK );
       
  4943                 }
       
  4944             Cba()->DrawDeferred();
       
  4945             }
       
  4946 
       
  4947         /* When view is activated some clips can be deleted or
       
  4948         names can be changed.. So check that all video and audio clips are still available.*/
       
  4949         if ( iMovie )
       
  4950             {
       
  4951             TInt i;
       
  4952             TFileName clipName;
       
  4953             RFs& fs = iEikonEnv->FsSession();
       
  4954 
       
  4955             for ( i = 0; i < iMovie->VideoClipCount(); i++ )
       
  4956                 {
       
  4957                 if ( iMovie->VideoClipInfo( i )->Class() == EVedVideoClipClassFile )
       
  4958                     {
       
  4959                     clipName = iMovie->VideoClipInfo( i )->FileName();
       
  4960 
       
  4961                     if ( !BaflUtils::FileExists( fs, clipName ))
       
  4962                         {
       
  4963                         iContainer->GetAndDecrementCurrentIndex();
       
  4964 
       
  4965                         iMovie->RemoveVideoClip( i );
       
  4966                         i--;
       
  4967                         UpdateMediaGalleryL();
       
  4968                         }
       
  4969                     clipName.Zero();
       
  4970                     }
       
  4971                 }
       
  4972 
       
  4973             for ( i = 0; i < iMovie->AudioClipCount(); i++ )
       
  4974                 {
       
  4975                 clipName = iMovie->AudioClipInfo( i )->FileName();
       
  4976 
       
  4977                 if ( !BaflUtils::FileExists( fs, clipName ))
       
  4978                     {
       
  4979                     iContainer->GetAndDecrementCurrentIndex();
       
  4980 
       
  4981                     iMovie->RemoveAudioClip( i );
       
  4982                     i--;
       
  4983                     UpdateMediaGalleryL();
       
  4984                     }
       
  4985                 clipName.Zero();
       
  4986                 }
       
  4987 
       
  4988             }
       
  4989 
       
  4990         UpdateEditNaviLabel();
       
  4991         HandleScreenDeviceChangedL();
       
  4992         }
       
  4993 
       
  4994     LOG( KVideoEditorLogFile, "CVeiEditVideoView::HandleForegroundEventL: out" );
       
  4995     }
       
  4996 
       
  4997 void CVeiEditVideoView::DoDeactivate()
       
  4998     {
       
  4999     LOG( KVideoEditorLogFile, "CVeiEditVideoView:DoDeactivate: In" );
       
  5000 
       
  5001     iNaviPane->Pop( iEditLabel );
       
  5002 
       
  5003     if ( iVolumeHider )
       
  5004         {
       
  5005         iVolumeHider->Cancel();
       
  5006         delete iVolumeHider;
       
  5007         iVolumeHider = NULL;
       
  5008         }
       
  5009 
       
  5010     LOG( KVideoEditorLogFile, "CVeiEditVideoView:DoDeactivate: Out" );
       
  5011     }
       
  5012 
       
  5013 
       
  5014 TTimeIntervalMicroSeconds CVeiEditVideoView::OriginalAudioDuration()const
       
  5015     {
       
  5016     return iOriginalAudioDuration;
       
  5017     }
       
  5018 
       
  5019 TInt CVeiEditVideoView::UpdateNaviPreviewing( TAny* aThis )
       
  5020     {
       
  5021     STATIC_CAST( CVeiEditVideoView* , aThis )->DoUpdateEditNaviLabelL();
       
  5022     return 1;
       
  5023     }
       
  5024 
       
  5025 
       
  5026 TInt CVeiEditVideoView::UpdateAudioRecording( TAny* aThis )
       
  5027     {
       
  5028     STATIC_CAST( CVeiEditVideoView* , aThis )->DoUpdateAudioRecording();
       
  5029     return 1;
       
  5030     }
       
  5031 
       
  5032 void CVeiEditVideoView::DoUpdateAudioRecording()
       
  5033     {
       
  5034     if ( iRecorder->State() != CMdaAudioClipUtility::ERecording )
       
  5035         {
       
  5036         iAudioRecordPeriodic->Cancel();
       
  5037         Cba()->SetCommandSetL( R_VEI_SOFTKEYS_CONTINUE_STOP );
       
  5038         Cba()->DrawDeferred();
       
  5039         }
       
  5040     else
       
  5041         {
       
  5042         TTimeIntervalMicroSeconds duration = iRecorder->Duration();
       
  5043 
       
  5044         iContainer->SetRecordedAudioDuration( duration );
       
  5045         iContainer->DrawTrackBoxes();
       
  5046 
       
  5047         UpdateEditNaviLabel();
       
  5048 
       
  5049         // !!!*** Safety margin of 0.5s because cropping does not work, remove when cropping fixed. ***!!!
       
  5050         duration = TTimeIntervalMicroSeconds( duration.Int64());
       
  5051 
       
  5052         if (( iRecordedAudioMaxDuration >= TTimeIntervalMicroSeconds( 0 )) && ( duration > iRecordedAudioMaxDuration ))
       
  5053             {
       
  5054             TRAP_IGNORE( HandleCommandL( EVeiCmdEditVideoViewRecordStop ));
       
  5055             }
       
  5056         }
       
  5057     }
       
  5058 
       
  5059 void CVeiEditVideoView::CancelWaitDialog( TInt aError )
       
  5060     {
       
  5061     LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::CancelWaitDialog: In, aError:%d", aError );
       
  5062     if ( iWaitDialog )
       
  5063         {
       
  5064         LOG( KVideoEditorLogFile, "CVeiEditVideoView::CancelWaitDialog: 2" );
       
  5065         iWaitDialog->ProcessFinishedL();
       
  5066         }
       
  5067 
       
  5068     if ( aError )
       
  5069         {
       
  5070         LOG( KVideoEditorLogFile, "CVeiEditVideoView::CancelWaitDialog: 3" );
       
  5071         ShowGlobalErrorNote( aError );
       
  5072         LOG( KVideoEditorLogFile, "CVeiEditVideoView::CancelWaitDialog: 4" );
       
  5073         }
       
  5074     Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
       
  5075     LOG( KVideoEditorLogFile, "CVeiEditVideoView::CancelWaitDialog: 5" );
       
  5076     Cba()->DrawDeferred();
       
  5077     LOG( KVideoEditorLogFile, "CVeiEditVideoView::CancelWaitDialog: Out" );
       
  5078     }
       
  5079 
       
  5080 void CVeiEditVideoView::NotifyImageClipGeneratorInitializationComplete( CVeiImageClipGenerator&  /*aGenerator*/, TInt aError )
       
  5081     {
       
  5082     LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::NotifyImageClipGeneratorInitializationComplete: in, aError:%d", aError );
       
  5083     if ( aError != KErrNone )
       
  5084         {
       
  5085         ShowGlobalErrorNote( aError );
       
  5086         delete iGenerator;
       
  5087         iGenerator = 0;
       
  5088         return ;
       
  5089         }
       
  5090 
       
  5091     // insert the generator into movie
       
  5092     TInt index = ( iContainer->CurrentIndex() == iMovie->VideoClipCount()) ? iMovie->VideoClipCount(): iContainer->CurrentIndex() + 1;
       
  5093     iMovie->InsertVideoClipL( *iGenerator, ETrue, index );
       
  5094 
       
  5095     // Generator is no longer our concern
       
  5096     iGenerator = 0;
       
  5097     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyImageClipGeneratorInitializationComplete: out" );
       
  5098     }
       
  5099 
       
  5100 
       
  5101 void CVeiEditVideoView::NotifyTitleClipBackgroundImageLoadComplete( CVeiTitleClipGenerator&  /*aGenerator*/, TInt aError )
       
  5102     {
       
  5103     LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::NotifyTitleClipBackgroundImageLoadComplete: in, aError:%d", aError );
       
  5104     if ( aError != KErrNone )
       
  5105         {
       
  5106         ShowGlobalErrorNote( aError );
       
  5107         delete iGenerator;
       
  5108         iGenerator = 0;
       
  5109         return ;
       
  5110         }
       
  5111     LOG( KVideoEditorLogFile, "CVeiEditVideoView::NotifyTitleClipBackgroundImageLoadComplete: out" );
       
  5112     }
       
  5113 
       
  5114 void CVeiEditVideoView::UpdateInsertingProgressNoteL( TInt aProcessed )
       
  5115     {
       
  5116     TInt queueCount = iMediaQueue->Count();
       
  5117 
       
  5118     CArrayFix < TInt > * numbers = new CArrayFixFlat < TInt > ( 2 );
       
  5119     CleanupStack::PushL( numbers );
       
  5120     numbers->AppendL( aProcessed );
       
  5121     numbers->AppendL( queueCount );
       
  5122 
       
  5123     HBufC* stringholder = StringLoader::LoadL( R_VEI_PROGRESS_NOTE_INSERTING_MEDIA, * numbers, iEikonEnv );
       
  5124 
       
  5125     CleanupStack::PushL( stringholder );
       
  5126 
       
  5127     iProgressNote->SetTextL( *stringholder );
       
  5128     iProgressNote->DrawNow(); // otherwise text is not drawn at all 
       
  5129     CleanupStack::PopAndDestroy( stringholder );
       
  5130     CleanupStack::PopAndDestroy( numbers );
       
  5131     }
       
  5132 
       
  5133 void CVeiEditVideoView::MmsSendCompatibleCheck()
       
  5134     {
       
  5135     LOG( KVideoEditorLogFile, "CVeiEditVideoView::MmsSendCompatibleCheck(): in" );
       
  5136 
       
  5137     TInt maxMmsSize = STATIC_CAST( CVeiEditVideoLabelNavi* , iEditLabel->DecoratedControl())->GetMaxMmsSize()* 1024;
       
  5138 
       
  5139     CVedMovie::TVedMovieQuality origQuality = iMovie->Quality();
       
  5140     iMovie->SetQuality( CVedMovie::EQualityMMSInteroperability );
       
  5141     TInt sizeEstimate = 0;
       
  5142     TRAP_IGNORE( sizeEstimate = iMovie->GetSizeEstimateL());
       
  5143     iMovie->SetQuality( origQuality );
       
  5144 
       
  5145     LOGFMT2( KVideoEditorLogFile, "CVeiEditVideoView::MmsSendCompatibleCheck(): maxMmsSize: %d, sizeEstimate: %d", maxMmsSize, sizeEstimate );
       
  5146 
       
  5147     TInt movieSizeLimit = ( TInt )( maxMmsSize* 0.9 );
       
  5148     LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::MmsSendCompatibleCheck(): testing, test:%d", movieSizeLimit );
       
  5149 
       
  5150     if ( sizeEstimate < ( TInt )( maxMmsSize* 1.1 ))
       
  5151         {
       
  5152         LOG( KVideoEditorLogFile, "CVeiEditVideoView::MmsSendCompatibleCheck(): SetMovieSizeLimit..ok" );
       
  5153         iMovie->SetMovieSizeLimit( movieSizeLimit );
       
  5154         }
       
  5155 
       
  5156     TVeiSettings movieSaveSettings;
       
  5157 
       
  5158     if ( iMovie->IsMovieMMSCompatible())
       
  5159         {
       
  5160         LOG( KVideoEditorLogFile, "CVeiEditVideoView::MmsSendCompatibleCheck: MMSCompatible YES" );
       
  5161         iWaitMode = EProcessingMovieTrimMms;
       
  5162         StartTempFileProcessingL();
       
  5163         }
       
  5164     else
       
  5165         {
       
  5166         LOG( KVideoEditorLogFile, "CVeiEditVideoView::MmsSendCompatibleCheck: MMSCompatible NO" );
       
  5167         iWaitMode = EProcessingMovieTrimMms;
       
  5168         movieSaveSettings.SaveQuality() = TVeiSettings::EMmsCompatible;
       
  5169         StartTempFileProcessingL();
       
  5170         }
       
  5171     LOG( KVideoEditorLogFile, "CVeiEditVideoView::MmsSendCompatibleCheck(): out" );
       
  5172     }
       
  5173 
       
  5174 // Screen twisting 
       
  5175 /*
       
  5176 /* experimental code trying to fix this:
       
  5177 EECO-6W39YS 
       
  5178 Manual Video Editor: Wrong layout displays if switching phone mode during large preview playing
       
  5179 
       
  5180 void CVeiEditVideoView::HandleScreenDeviceChangedL()
       
  5181 {	
       
  5182 LOG(KVideoEditorLogFile, "CVeiEditVideoView::HandleScreenDeviceChangedL() in");
       
  5183 if ( iContainer )
       
  5184 {
       
  5185 // Orientation changed. Resize container rect and update component
       
  5186 //positions.
       
  5187 
       
  5188 
       
  5189 //	iContainer->SetRect( ClientOrApplicationRect( iFullScreenSelected ) );
       
  5190 //	
       
  5191 //	iContainer->SetRect( AppUi()->ClientRect() );
       
  5192 //	
       
  5193 
       
  5194 if(CVeiEditVideoContainer::EModePreview == iContainer->SelectionMode() && iFullScreenSelected &&
       
  5195 CVeiEditVideoContainer::EStatePlaying == iContainer->PreviewState())
       
  5196 {
       
  5197 LOG(KVideoEditorLogFile, "CVeiEditVideoView::HandleScreenDeviceChangedL() 1");
       
  5198 iContainer->SetBlackScreen( ETrue );
       
  5199 iContainer->SetRect( ClientOrApplicationRect( iFullScreenSelected ) );
       
  5200 return;	
       
  5201 }		
       
  5202 LOG(KVideoEditorLogFile, "CVeiEditVideoView::HandleScreenDeviceChangedL() 2");				
       
  5203 iContainer->SetCursorLocation( iContainer->CursorLocation() );
       
  5204 iContainer->ArrowsControl();
       
  5205 
       
  5206 iContainer->DrawDeferred();
       
  5207 }		
       
  5208 LOG(KVideoEditorLogFile, "CVeiEditVideoView::HandleScreenDeviceChangedL() out");	
       
  5209 }
       
  5210  */
       
  5211 /* Screen twisting */
       
  5212 void CVeiEditVideoView::HandleScreenDeviceChangedL()
       
  5213     {
       
  5214     if ( iContainer )
       
  5215         {
       
  5216         // Orientation changed. Resize container rect and update component
       
  5217         //positions.
       
  5218         iContainer->SetRect( AppUi()->ClientRect());
       
  5219 
       
  5220         iContainer->SetCursorLocation( iContainer->CursorLocation());
       
  5221         iContainer->ArrowsControl();
       
  5222 
       
  5223         iContainer->DrawDeferred();
       
  5224         }
       
  5225     }
       
  5226 
       
  5227 void CVeiEditVideoView::HideVolume()
       
  5228     {
       
  5229     iNaviPane->Pop( iVolumeNavi );
       
  5230 
       
  5231     delete iVolumeHider;
       
  5232     iVolumeHider = NULL;
       
  5233     }
       
  5234 
       
  5235 TInt CVeiEditVideoView::HideVolumeCallbackL( TAny* aPtr )
       
  5236     {
       
  5237     CVeiEditVideoView* view = ( CVeiEditVideoView* )aPtr;
       
  5238     view->HideVolume();
       
  5239     return 0;
       
  5240     }
       
  5241 
       
  5242 void CVeiEditVideoView::UpdateMediaGalleryL()
       
  5243     {
       
  5244     LOG( KVideoEditorLogFile, "CVeiEditVideoView::UpdateMediaGalleryL(): In" );
       
  5245 
       
  5246   
       
  5247     // Publish & Subscribe API used to make the saved file name available to AIW provider
       
  5248     if ( iSaveToFileName )
       
  5249         {
       
  5250         LOG( KVideoEditorLogFile, "CVeiEditVideoView::UpdateMediaGalleryL(): Calling RProperty::Define(KUidVideoEditorProperties, VideoEditor::EPropertyFilename, RProperty::EText); " );
       
  5251         TInt err = RProperty::Define( KUidVideoEditorProperties, VideoEditor::EPropertyFilename, RProperty::EText );
       
  5252         if ( err != KErrAlreadyExists )
       
  5253             {
       
  5254             User::LeaveIfError( err );
       
  5255             }
       
  5256         User::LeaveIfError( RProperty::Set( KUidVideoEditorProperties, VideoEditor::EPropertyFilename, iSaveToFileName->Des()));
       
  5257         }
       
  5258     LOG( KVideoEditorLogFile, "CVeiEditVideoView::UpdateMediaGalleryL(): Out" );
       
  5259     }
       
  5260 
       
  5261 void CVeiEditVideoView::SetFullScreenSelected( TBool aFullScreenSelected )
       
  5262     {
       
  5263     iFullScreenSelected = aFullScreenSelected;
       
  5264     }
       
  5265 
       
  5266 void CVeiEditVideoView::StartNaviPaneUpdateL()
       
  5267     {
       
  5268     if ( iPreviewUpdatePeriodic )
       
  5269         {
       
  5270         if ( iPreviewUpdatePeriodic->IsActive())
       
  5271             {
       
  5272             iPreviewUpdatePeriodic->Cancel();
       
  5273             }
       
  5274 
       
  5275         iPreviewUpdatePeriodic->Start( 100000, 100000, TCallBack( CVeiEditVideoView::UpdateNaviPreviewing, this ));
       
  5276         }
       
  5277     }
       
  5278 
       
  5279 void CVeiEditVideoView::ShowAndHandleSendMenuCommandsL()
       
  5280     {
       
  5281     /* Show send menu, postcard dimmed */
       
  5282     CArrayFix < TUid > * mtmToDim = new( ELeave )CArrayFixFlat < TUid > ( 3 );
       
  5283     TUid userSelection;
       
  5284     CleanupStack::PushL( mtmToDim );
       
  5285     /*
       
  5286     this uid is empirically got with one device 19.10.2006
       
  5287     there is currently (19.10.2006) no constans found in headers for Web Upload
       
  5288      */
       
  5289 
       
  5290     const TInt KSenduiMtmOwnWebUploadIntValue = 536873429;
       
  5291     const TUid KSenduiMtmOwnWebUpload = 
       
  5292         {
       
  5293         KSenduiMtmOwnWebUploadIntValue
       
  5294     };
       
  5295 
       
  5296     mtmToDim->AppendL( KSenduiMtmPostcardUid );
       
  5297     mtmToDim->AppendL( KSenduiMtmAudioMessageUid );
       
  5298     mtmToDim->AppendL( KSenduiMtmOwnWebUpload );
       
  5299 
       
  5300 
       
  5301     userSelection = iSendAppUi.ShowSendQueryL( NULL, TSendingCapabilities( 0, 0, TSendingCapabilities::ESupportsAttachments ), mtmToDim );
       
  5302     CleanupStack::PopAndDestroy( mtmToDim );
       
  5303 
       
  5304     iGivenSendCommand = userSelection;
       
  5305 
       
  5306     if ( IsEnoughFreeSpaceToSaveL())
       
  5307         {
       
  5308         switch ( userSelection.iUid )
       
  5309             {
       
  5310             case KSenduiMtmSmtpUidValue:
       
  5311             case KSenduiMtmImap4UidValue:
       
  5312             case KSenduiMtmPop3UidValue:
       
  5313                     {
       
  5314                     LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::ShowAndHandleSendMenuCommandsL: MTM UID: %d", userSelection.iUid );
       
  5315                     iWaitMode = EProcessingMovieSend;
       
  5316                     StartTempFileProcessingL();
       
  5317                     break;
       
  5318                     }
       
  5319             case KSenduiMtmIrUidValue:
       
  5320                     {
       
  5321                     LOG( KVideoEditorLogFile, "CVeiEditVideoView::ShowAndHandleSendMenuCommandsL: MTM UID: KSenduiMtmIrUidValue" );
       
  5322                     iWaitMode = EProcessingMovieSend;
       
  5323                     StartTempFileProcessingL();
       
  5324                     break;
       
  5325                     }
       
  5326             case KSenduiMtmMmsUidValue:
       
  5327                     {
       
  5328                     LOG( KVideoEditorLogFile, "CVeiEditVideoView::ShowAndHandleSendMenuCommandsL: MTM UID: KSenduiMtmMmsUidValue" );
       
  5329                     iWaitMode = EProcessingMovieTrimMms;
       
  5330                     MmsSendCompatibleCheck();
       
  5331                     break;
       
  5332                     }
       
  5333             case KSenduiMtmBtUidValue:
       
  5334                     {
       
  5335                     LOG( KVideoEditorLogFile, "CVeiEditVideoView::ShowAndHandleSendMenuCommandsL: MTM UID: KSenduiMtmBtUidValue" );
       
  5336                     iWaitMode = EProcessingMovieSend;
       
  5337                     StartTempFileProcessingL();
       
  5338                     break;
       
  5339                     }
       
  5340                 /*case KSenduiMtmOwnWebUploadIntValue:			// 0x200009D5
       
  5341                 {
       
  5342                 LOG(KVideoEditorLogFile, "CVeiEditVideoView::ShowAndHandleSendMenuCommandsL 6: MTM UID: 536873429");
       
  5343                 iWaitMode = EProcessingMovieSend;
       
  5344                 StartTempFileProcessingL();
       
  5345                 break;            	
       
  5346                 }	
       
  5347                  */
       
  5348             default:
       
  5349                 break;
       
  5350 
       
  5351             }
       
  5352         }
       
  5353     }
       
  5354 
       
  5355 void CVeiEditVideoView::StopNaviPaneUpdateL()
       
  5356     {
       
  5357     DoUpdateEditNaviLabelL();
       
  5358 
       
  5359     if ( iPreviewUpdatePeriodic && iPreviewUpdatePeriodic->IsActive())
       
  5360         {
       
  5361         iPreviewUpdatePeriodic->Cancel();
       
  5362         }
       
  5363     }
       
  5364 
       
  5365 TRect CVeiEditVideoView::ClientOrApplicationRect( TBool aFullScreenSelected )const
       
  5366     {
       
  5367     if ( aFullScreenSelected )
       
  5368         {
       
  5369         return AppUi()->ApplicationRect();
       
  5370         }
       
  5371     else
       
  5372         {
       
  5373         return AppUi()->ClientRect();
       
  5374         }
       
  5375 
       
  5376     }
       
  5377 
       
  5378 TBool CVeiEditVideoView::MixingConditionsOk()const
       
  5379     {
       
  5380     // prerequisites for sound mixing: at least one video with audio and one imported audio exist
       
  5381     if ( iMovie->VideoClipCount() > 0 && iMovie->AudioClipCount() > 0 )
       
  5382         {
       
  5383         for ( TInt i = 0; i < iMovie->VideoClipCount(); i++ )
       
  5384             {
       
  5385             //if (iMovie->VideoClipEditedHasAudio(i))
       
  5386             if ( iMovie->VideoClipInfo( i )->HasAudio())
       
  5387                 {
       
  5388                 return ETrue;
       
  5389                 }
       
  5390             }
       
  5391         }
       
  5392     return EFalse;
       
  5393     }
       
  5394 
       
  5395 /*void CVeiEditVideoView::MixAudio()
       
  5396 {		
       
  5397 
       
  5398 //TReal gainVideoNew(0);
       
  5399 //TReal gainAudioNew(0);
       
  5400 
       
  5401 TInt gainVideoNew(0);
       
  5402 TInt gainAudioNew(0);
       
  5403 
       
  5404 TInt gainVideoCurrent = iMovie->GetVideoClipVolumeGainL(KVedClipIndexAll);
       
  5405 TInt gainAudioCurrent = iMovie->GetAudioClipVolumeGainL(KVedClipIndexAll);
       
  5406 
       
  5407 // video clips are faded      
       
  5408 if (iContainer->AudioMixingRatio() > 0)    
       
  5409 {
       
  5410 //@ : think how to tackle situations where value is form x.0, adding 0.5 gets wrong int
       
  5411 //Math::Round(fadevideo, iContainer->AudioMixingRatio()*(KVolumeMaxGain/10), 2);
       
  5412 
       
  5413 gainVideoNew = iContainer->AudioMixingRatio()*(KVolumeMaxGain/10);    	
       
  5414 gainVideoNew += 0.5; // for making real to int rounding work in constructor of TVedDynamicLevelMark
       
  5415 gainVideoNew = 0 - gainVideoNew;    	
       
  5416 }
       
  5417 // audio clips are faded
       
  5418 else if (iContainer->AudioMixingRatio() < 0)    
       
  5419 {
       
  5420 //@ : think how to tackle situations where value is form x.0, adding 0.5 gets wrong int
       
  5421 //Math::Round(fadeaudio, iContainer->AudioMixingRatio()*(KVolumeMaxGain/10), 2);    	
       
  5422 gainAudioNew = iContainer->AudioMixingRatio()*(KVolumeMaxGain/10);     	    	    	    	
       
  5423 gainAudioNew -= 0.5;    // for making real to int rounding	work in constructor of TVedDynamicLevelMark    	
       
  5424 }        			    
       
  5425 
       
  5426 if (gainVideoNew != gainVideoCurrent)
       
  5427 {
       
  5428 iMovie->SetVideoClipVolumeGainL(KVedClipIndexAll, gainVideoNew);
       
  5429 }
       
  5430 if (gainAudioNew != gainAudioCurrent)
       
  5431 {
       
  5432 iMovie->SetAudioClipVolumeGainL(KVedClipIndexAll, gainAudioNew);	
       
  5433 }    	    	    	
       
  5434 }
       
  5435  */
       
  5436 
       
  5437 void CVeiEditVideoView::MixAudio()
       
  5438     {
       
  5439     TReal fadevideo( 0 );
       
  5440     TReal fadeaudio( 0 );
       
  5441 
       
  5442     // video clips are faded        
       
  5443     if ( iContainer->AudioMixingRatio() > 0 )
       
  5444         {
       
  5445         //@ : think how to tackle situations where value is form x.0, adding 0.5 gets wrong int
       
  5446         //Math::Round(fadevideo, iContainer->AudioMixingRatio()*(KVolumeMaxGain/10), 2);
       
  5447 
       
  5448         fadevideo = iContainer->AudioMixingRatio()*( KVolumeMaxGain / 10 );
       
  5449         fadevideo += 0.5; // for making real to int rounding work in constructor of TVedDynamicLevelMark
       
  5450         fadevideo = 0-fadevideo;
       
  5451         fadeaudio = 0;
       
  5452         }
       
  5453     // audio clips are faded
       
  5454     else if ( iContainer->AudioMixingRatio() < 0 )
       
  5455         {
       
  5456         //@ : think how to tackle situations where value is form x.0, adding 0.5 gets wrong int
       
  5457         //Math::Round(fadeaudio, iContainer->AudioMixingRatio()*(KVolumeMaxGain/10), 2);
       
  5458 
       
  5459         fadeaudio = iContainer->AudioMixingRatio()*( KVolumeMaxGain / 10 );
       
  5460         fadeaudio -= 0.5; // for making real to int rounding	work in constructor of TVedDynamicLevelMark
       
  5461         fadevideo = 0;
       
  5462         }
       
  5463 
       
  5464     // video clips are faded        
       
  5465     if ( iContainer->AudioMixingRatio() > 0 && iMovie->VideoClipCount() > 0 )
       
  5466         {
       
  5467         TInt gain = iMovie->GetVideoClipVolumeGainL( KVedClipIndexAll ); ///(KVolumeMaxGain/10);
       
  5468         TInt gainNew = ( TInt )fadevideo;
       
  5469         if ( gainNew != gain )
       
  5470             {
       
  5471             iMovie->SetAudioClipVolumeGainL( KVedClipIndexAll, 0 );
       
  5472             iMovie->SetVideoClipVolumeGainL( KVedClipIndexAll, gainNew );
       
  5473             }
       
  5474         }
       
  5475     // audio clips are faded
       
  5476     else if ( iContainer->AudioMixingRatio() < 0 && iMovie->AudioClipCount() > 0 )
       
  5477         {
       
  5478         TInt gain = iMovie->GetAudioClipVolumeGainL( KVedClipIndexAll ); ///(KVolumeMaxGain/10);
       
  5479         TInt gainNew = ( TInt )fadeaudio;
       
  5480         if ( gainNew != gain )
       
  5481             {
       
  5482             iMovie->SetVideoClipVolumeGainL( KVedClipIndexAll, 0 );
       
  5483             iMovie->SetAudioClipVolumeGainL( KVedClipIndexAll, gainNew );
       
  5484             }
       
  5485         }
       
  5486     else
       
  5487     //if marks set back to position '0'
       
  5488         {
       
  5489         if ( 0 != iMovie->GetVideoClipVolumeGainL( KVedClipIndexAll ))
       
  5490             {
       
  5491             iMovie->SetVideoClipVolumeGainL( KVedClipIndexAll, 0 );
       
  5492             }
       
  5493         if ( 0 != iMovie->GetAudioClipVolumeGainL( KVedClipIndexAll ))
       
  5494             {
       
  5495             iMovie->SetAudioClipVolumeGainL( KVedClipIndexAll, 0 );
       
  5496             }
       
  5497         }
       
  5498     }
       
  5499 
       
  5500 void CVeiEditVideoView::AdjustVolumeL()
       
  5501     {
       
  5502     TReal adjustVolume = iContainer->Volume()*( KVolumeMaxGain / 10 );
       
  5503     // to make rounding to int work correctly in constructor of TVedDynamicLevelMark
       
  5504     // @ : if adjustvolume is x.0, rounding does not work, think how to fix problem
       
  5505     if ( 0 < adjustVolume )
       
  5506         {
       
  5507         adjustVolume += 0.5;
       
  5508         }
       
  5509     else
       
  5510         {
       
  5511         adjustVolume -= 0.5;
       
  5512         }
       
  5513 
       
  5514     if ( iContainer->CursorLocation() == VideoEditor::ECursorOnClip )
       
  5515         {
       
  5516         TReal currentVolume = iMovie->GetVideoClipVolumeGainL( iContainer->CurrentIndex()); ///(KVolumeMaxGain/10);						
       
  5517         if ( 0 == iContainer->Volume())
       
  5518             {
       
  5519             if ( 0 != ( TInt )currentVolume )
       
  5520                 {
       
  5521                 iMovie->SetVideoClipVolumeGainL( iContainer->CurrentIndex(), 0 );
       
  5522                 }
       
  5523             }
       
  5524         else if (( TInt )currentVolume != ( TInt )adjustVolume )
       
  5525             {
       
  5526             iMovie->SetVideoClipVolumeGainL( iContainer->CurrentIndex(), ( TInt )adjustVolume );
       
  5527             }
       
  5528         }
       
  5529     else if ( iContainer->CursorLocation() == VideoEditor::ECursorOnAudio )
       
  5530         {
       
  5531         TReal currentVolume = iMovie->GetAudioClipVolumeGainL( iContainer->CurrentIndex()); ///(KVolumeMaxGain/10);		
       
  5532         if ( 0 == iContainer->Volume())
       
  5533             {
       
  5534             if ( 0 != ( TInt )currentVolume )
       
  5535                 {
       
  5536                 iMovie->SetAudioClipVolumeGainL( iContainer->CurrentIndex(), 0 );
       
  5537                 }
       
  5538             }
       
  5539         else if (( TInt )currentVolume != ( TInt )adjustVolume )
       
  5540             {
       
  5541             iMovie->SetAudioClipVolumeGainL( iContainer->CurrentIndex(), ( TInt )adjustVolume );
       
  5542             }
       
  5543         }
       
  5544     }
       
  5545 
       
  5546 void CVeiEditVideoView::StoreOrientation()
       
  5547     {
       
  5548     LOG( KVideoEditorLogFile, "CVeiEditVideoView::StoreOrientation: in" );
       
  5549 
       
  5550     iOriginalOrientation = AppUi()->Orientation();
       
  5551 
       
  5552     LOG( KVideoEditorLogFile, "CVeiEditVideoView::StoreOrientation: out" );
       
  5553     }
       
  5554 
       
  5555 void CVeiEditVideoView::RestoreOrientation()
       
  5556     {
       
  5557     LOG( KVideoEditorLogFile, "CVeiEditVideoView::RestoreOrientation: in" );
       
  5558 
       
  5559     TRAP_IGNORE( AppUi()->SetOrientationL( iOriginalOrientation ));
       
  5560 
       
  5561     LOG( KVideoEditorLogFile, "CVeiEditVideoView::RestoreOrientation: out" );
       
  5562     }
       
  5563 
       
  5564 void CVeiEditVideoView::SetNewTempFileNeeded( const TBool aUpdateNeeded )
       
  5565     {
       
  5566     iUpdateTemp = aUpdateNeeded;
       
  5567     }
       
  5568 
       
  5569 // End of File