diff -r 000000000000 -r 951a5db380a0 videditor/TrimForMms/src/VeiTrimForMmsView.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videditor/TrimForMms/src/VeiTrimForMmsView.cpp Fri Jan 29 14:08:33 2010 +0200 @@ -0,0 +1,964 @@ +/* +* Copyright (c) 2010 Ixonos Plc. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - Initial contribution +* +* Contributors: +* Ixonos Plc +* +* Description: +* +*/ + + + +// INCLUDES +// System includes +#include +#include +#include // CAknNavigationControlContainer +#include // CAknNavigationDecorator +#include // CAknProgressDialog +#include // CAknKeySoundSystem +#include // BaflUtils +#include +#include // CEikProgressInfo +#include +#include // CnvUtfConverter +#include // CSendAppUi +#include +#include // StringLoader +#include +// User includes +#include "TrimForMms.hrh" +#include "TrimForMmsAppUi.h" +#include "VeiSettings.h" +#include "VeiTrimForMmsView.h" +#include "VeiTrimForMmsContainer.h" +#include "VeiEditVideoLabelNavi.h" +#include "VideoEditorCommon.h" +#include "VeiTempMaker.h" +#include "VideoEditorCommon.h" +#include "VideoEditorDebugUtils.h" +#include "VeiErrorUi.h" + +// CONSTANTS +const TInt KVedVideoClipIndex(0); +const TInt KProgressNoteMaxValue(100); +const TInt KVedTrimForMmsDefaultCba( R_AVKON_SOFTKEYS_OPTIONS_BACK ); + + +CVeiTrimForMmsView* CVeiTrimForMmsView::NewL( CSendUi& aSendAppUi ) + { + CVeiTrimForMmsView* self = CVeiTrimForMmsView::NewLC( aSendAppUi ); + CleanupStack::Pop( self ); + + return self; + } + + +CVeiTrimForMmsView* CVeiTrimForMmsView::NewLC( CSendUi& aSendAppUi ) + { + CVeiTrimForMmsView* self = new (ELeave) CVeiTrimForMmsView( aSendAppUi ); + CleanupStack::PushL( self ); + self->ConstructL(); + + return self; + } + +// ----------------------------------------------------------------------------- +// CVeiTrimForMmsView::ConstructL +// Symbian 2nd phase constructor that can leave. +// ----------------------------------------------------------------------------- +// +void CVeiTrimForMmsView::ConstructL() + { + BaseConstructL( R_VEI_TRIM_FOR_MMS_VIEW ); + + iErrorUi = CVeiErrorUI::NewL( *iCoeEnv ); + + iTempMaker = CVeiTempMaker::NewL(); + } + +// ----------------------------------------------------------------------------- +// CVeiTrimForMmsView::CVeiTrimForMmsView( CSendUi& aSendAppUi ) +// C++ default constructor. +// ----------------------------------------------------------------------------- +// +CVeiTrimForMmsView::CVeiTrimForMmsView( CSendUi& aSendAppUi ): + iSendAppUi( aSendAppUi ) + { + } + + +CVeiTrimForMmsView::~CVeiTrimForMmsView() + { + if( iContainer ) + { + AppUi()->RemoveFromStack( iContainer ); + delete iContainer; + } + if( iNaviDecorator ) + { + delete iNaviDecorator; + } + + if( iVedMovie ) + { + iVedMovie->UnregisterMovieObserver( this ); + delete iVedMovie; + } + + if ( iTempMaker ) + { + delete iTempMaker; + iTempMaker = NULL; + } + if( iTempFile ) + { + TInt err = CCoeEnv::Static()->FsSession().Delete( *iTempFile ); + if ( err ) + { + // what to do when error occurs in destructor??? + } + + delete iTempFile; + } + + delete iErrorUi; + + iProgressInfo = NULL; + } + + +TUid CVeiTrimForMmsView::Id() const + { + return TUid::Uid( EVeiTrimForMmsView ); + } + + +// ---------------------------------------------------------------------------- +// CVeiTrimForMmsView::HandleCommandL( TInt aCommand ) +// +// +// ---------------------------------------------------------------------------- +// +void CVeiTrimForMmsView::HandleCommandL( TInt aCommand ) + { + LOG(KVideoEditorLogFile, "CVeiTrimForMmsView::HandleCommandL: In"); + + TInt state; + state = iContainer->PreviewState(); + + switch ( aCommand ) + { + /** + * Options -> Send via multimedia + */ + case EVeiCmdSendViaMms: + { + CmdSendViaMultimediaL(); + break; + } + /** + * Options -> Preview + */ + case EVeiCmdPreview: + { + if( state == EIdle || state == EStop ) + { + SetTrimStateL( EFullPreview ); + PlayPreviewL(); + } + break; + } + // + // Options -> Help + // + case EVeiCmdTrimForMmsViewHelp: + { + AppUi()->HandleCommandL( aCommand ); + break; + } + /** + * Options -> Back + */ + case EAknSoftkeyBack: + { + if( state != EFullPreview ) + { + CmdSoftkeyBackL(); + } + else + { + SetTrimStateL( ESeek ); + } + break; + } + /** + * Adjust video length -> Ok + */ + case EAknSoftkeyOk: + { + if( state == EPause ) + { + SetTrimStateL( ESeek ); + iContainer->Stop( ETrue ); + } + else + { + CmdSoftkeyOkL(); + } + break; + } + /** + * Adjust video length -> Cancel + */ + case EAknSoftkeyCancel: + { + if( state == EPause ) + { + SetTrimStateL( ESeek ); + iContainer->Stop( ETrue ); + } + else + { + CmdSoftkeyCancelL(); + } + break; + } + default: + { + AppUi()->HandleCommandL( aCommand ); + break; + } + } + + LOG(KVideoEditorLogFile, "CVeiTrimForMmsView::HandleCommandL: Out"); + } + + +// ---------------------------------------------------------------------------- +// CVeiTrimForMmsView::CmdSendViaMultimediaL() +// Function for handling the Send Via Multimedia command. +// +// ---------------------------------------------------------------------------- +// +void CVeiTrimForMmsView::CmdSendViaMultimediaL() + { + LOG(KVideoEditorLogFile, "CVeiTrimForMmsView::CmdSendViaMultimediaL: In"); + + // Start processing the trimmed video + // Possible leave codes: + // - KErrNoMemory if memory allocation fails + // - KErrAccessDenied if the file access is denied + // - KErrDiskFull if the disk is full + // - KErrWrite if not all data could be written + // - KErrBadName if the filename is bad + // - KErrDirFull if the directory is full + // : If video clip is already processed and frame is in same position + // do not reprocess the movie. + + + UpdateNaviPaneSize(); + + TBool fileExists( ETrue ); + RFs fs = CCoeEnv::Static()->FsSession(); + + if ( iTempFile ) + { + fileExists = BaflUtils::FileExists( fs, *iTempFile ); + } + + if ( !fileExists || ( !iTempFile ) || iProcessNeeded ) + { + + if ( iTempFile && fileExists ) + { + User::LeaveIfError( fs.Delete( *iTempFile ) ); + delete iTempFile; + iTempFile = NULL; + } + + iTempFile = HBufC::NewL(KMaxFileName); + +// @: check the quality setting. should we set it here to MMS compatible? + + // Quality is taken from settings and set to engine. + ReadSettingsL( iMovieSaveSettings ); + + iTempMaker->GenerateTempFileName( *iTempFile, iMovieSaveSettings.MemoryInUse(), iVedMovie->Format() ); + + TEntry fileinfo; + // Rename movie from xxxx.$$$ to defaultfilename from settingsview. + // looks better in attachment list.. + + // Get default movie name from settings view + TPtr temppeet = iTempFile->Des(); + TParse parse; + + parse.Set( iMovieSaveSettings.DefaultVideoName(), &temppeet, NULL ); + + TFileName orgPathAndName = parse.FullName(); + +// TVedVideoFormat movieQuality = iVedMovie->Format(); + + orgPathAndName.Replace( orgPathAndName.Length()-4, 4, KExt3gp ); + + fs.Replace( *iTempFile, orgPathAndName ); + iTempFile->Des() = orgPathAndName; + fs.Entry( *iTempFile, fileinfo ); + + + iVedMovie->SetQuality( CVedMovie::EQualityMMSInteroperability ); + LOGFMT(KVideoEditorLogFile, "CVeiTrimForMmsView::CmdSendViaMultimediaL: 1, iTempFile:%S", iTempFile); + TRAPD( processError, iVedMovie->ProcessL( *iTempFile, *this ) ); + LOG(KVideoEditorLogFile, "CVeiTrimForMmsView::CmdSendViaMultimediaL: 2"); + if( processError == KErrNone ) + { + // Text for the progress note is loaded from TBUF resource + HBufC* noteText; + noteText = StringLoader::LoadLC( R_VED_PROCESSING_FOR_MMS, iEikonEnv ); + + // Construct and execute progress note. + iProgressNote = new(ELeave) CAknProgressDialog( REINTERPRET_CAST(CEikDialog**, + &iProgressNote), ETrue); + iProgressNote->PrepareLC( R_VEI_PROGRESS_NOTE ); + iProgressNote->SetTextL( *noteText ); + + iProgressInfo = iProgressNote->GetProgressInfoL(); + iProgressInfo->SetFinalValue( KProgressNoteMaxValue ); + + iProgressNote->RunLD(); + + CleanupStack::PopAndDestroy( noteText ); // Pop and destroy the text + } + else + { + // : add error handling here + } + + } + else + { + + RFs shareFServer; + LOG(KVideoEditorLogFile, "CVeiTrimForMmsView::CmdSendViaMultimediaL: shareFServer connect."); + + User::LeaveIfError(shareFServer.Connect()); + shareFServer.ShareProtected(); + + RFile openFileHandle; + + TInt err = openFileHandle.Open(shareFServer,*iTempFile,EFileRead|EFileShareReadersOnly); + if (KErrNone != err) + { + LOGFMT(KVideoEditorLogFile, "CVeiTrimForMmsView::CmdSendViaMultimediaL: Could not open file %S with EFileShareReadersOnly. Trying EFileShareAny", iTempFile); + User::LeaveIfError( openFileHandle.Open (shareFServer, *iTempFile, EFileRead|EFileShareAny) ); + } + + CMessageData* messageData = CMessageData::NewLC(); + + + messageData->AppendAttachmentHandleL( openFileHandle ); + + iSendAppUi.CreateAndSendMessageL( KSenduiMtmMmsUid, messageData, KNullUid, EFalse ); + + CleanupStack::PopAndDestroy( messageData ); + + shareFServer.Close(); + LOG(KVideoEditorLogFile, "CVeiTrimForMmsView::CmdSendViaMultimediaL: shareFServer closed."); + } + + LOG(KVideoEditorLogFile, "CVeiTrimForMmsView::CmdSendViaMultimediaL: Out"); + } + +void CVeiTrimForMmsView::CmdSoftkeyBackL() + { + // Compare previous view's application uid to video editor uid. + if( iPreviousViewId.iAppUid == KUidVideoEditor ) + { + CEikStatusPane* statusPane = AppUi()->StatusPane(); + TUid naviPaneUid = TUid::Uid( EEikStatusPaneUidNavi ); // Navi pane UID + + CAknNavigationControlContainer *naviContainer = (CAknNavigationControlContainer*)statusPane->ControlL( naviPaneUid ); + naviContainer->Pop( iNaviDecorator ); + + // Activate previous local view. + AppUi()->ActivateLocalViewL( iPreviousViewId.iViewUid ); + } + else + { + // Exit video editor + AppUi()->HandleCommandL( EEikCmdExit); + } + } + + +void CVeiTrimForMmsView::CmdSoftkeyOkL() + { + // Set CBA labels back to view default + Cba()->SetCommandSetL( KVedTrimForMmsDefaultCba ); + Cba()->DrawDeferred(); + + PushKeySoundL( R_VED_LEFT_RIGHT_SILENT_SKEY_LIST ); + } + + +void CVeiTrimForMmsView::CmdSoftkeyCancelL() + { + // Set CBA labels back to view default + Cba()->SetCommandSetL( KVedTrimForMmsDefaultCba ); + Cba()->DrawDeferred(); + + PushKeySoundL( R_VED_LEFT_RIGHT_SILENT_SKEY_LIST ); + } + + +void CVeiTrimForMmsView::DoActivateL( const TVwsViewId& aPrevViewId, + TUid /*aCustomMessageId*/, + const TDesC8& aCustomMessage ) + { + if( !iContainer ) + { + iPreviousViewId = aPrevViewId; // Save the previous view id + + // Disable left and right navi-key sounds + PushKeySoundL( R_VED_LEFT_RIGHT_SILENT_SKEY_LIST ); + + SetTitlePaneTextL(); + CreateNaviPaneL(); + + STATIC_CAST( CVeiEditVideoLabelNavi*, iNaviDecorator->DecoratedControl() )->SetState( CVeiEditVideoLabelNavi::EStateTrimForMmsView ); + + TFileName inputFileName; + CnvUtfConverter::ConvertToUnicodeFromUtf8( inputFileName, aCustomMessage ); + + + // TEST + if (inputFileName.Length() == 0) + { + inputFileName.Copy( _L("c:\\Data\\Videos\\test.mp4") ); + } + // END TEST + + + if( !iVedMovie ) + { + iVedMovie = CVedMovie::NewL( NULL ); + iVedMovie->RegisterMovieObserverL( this ); + iVedMovie->InsertVideoClipL( inputFileName, KVedVideoClipIndex ); + iVedMovie->SetQuality( CVedMovie::EQualityMMSInteroperability ); + } + + iContainer = CVeiTrimForMmsContainer::NewL( AppUi()->ClientRect(), + *iVedMovie, *this ); + iContainer->SetMopParent( this ); + + AppUi()->AddToStackL( *this, iContainer ); + } + + } + + +void CVeiTrimForMmsView::DoDeactivate() + { + if( iContainer ) + { + AppUi()->RemoveFromStack( iContainer ); + delete iContainer; + iContainer = NULL; + + if( iVedMovie ) + { + iVedMovie->Reset(); + iVedMovie->UnregisterMovieObserver( this ); + delete iVedMovie; + iVedMovie = NULL; + } + } + } + + +void CVeiTrimForMmsView::PushKeySoundL( const TInt aResourceId ) const + { + CAknKeySoundSystem* aknKeySoundSystem = AppUi()->KeySounds(); + aknKeySoundSystem->PushContextL( aResourceId ); + } + + +void CVeiTrimForMmsView::PopKeySound() const + { + AppUi()->KeySounds()->PopContext(); + } + + +void CVeiTrimForMmsView::SetTitlePaneTextL() const + { + TUid titleUid; + titleUid.iUid = EEikStatusPaneUidTitle; + + CEikStatusPane* statusPane = AppUi()->StatusPane(); + + CEikStatusPaneBase::TPaneCapabilities titlePaneCap = + statusPane->PaneCapabilities( titleUid ); + + if( titlePaneCap.IsPresent() && titlePaneCap.IsAppOwned() ) + { + CAknTitlePane* titlePane = + (CAknTitlePane*)statusPane->ControlL( titleUid ); + + TResourceReader reader; + iCoeEnv->CreateResourceReaderLC( reader, + R_VEI_TRIM_FOR_MMS_VIEW_TITLE_NAME ); + titlePane->SetFromResourceL( reader ); + + CleanupStack::PopAndDestroy(); //reader + } + + } + + +void CVeiTrimForMmsView::CreateNaviPaneL() + { + TUid naviPaneUid = TUid::Uid( EEikStatusPaneUidNavi ); // Navi pane UID + + CEikStatusPane* statusPane = AppUi()->StatusPane(); // Get status pane + + CEikStatusPaneBase::TPaneCapabilities naviPaneCap = + statusPane->PaneCapabilities( naviPaneUid ); + + if( naviPaneCap.IsPresent() && naviPaneCap.IsAppOwned() ) + { + CAknNavigationControlContainer *naviContainer = (CAknNavigationControlContainer*)statusPane->ControlL( naviPaneUid ); + + CVeiEditVideoLabelNavi* editvideolabelnavi = CVeiEditVideoLabelNavi::NewLC(); + editvideolabelnavi->SetState( CVeiEditVideoLabelNavi::EStateInitializing ); + + iNaviDecorator = + CAknNavigationDecorator::NewL( naviContainer, editvideolabelnavi, + CAknNavigationDecorator::ENotSpecified ); + CleanupStack::Pop( editvideolabelnavi ); + + iNaviDecorator->SetContainerWindowL( *naviContainer ); + iNaviDecorator->MakeScrollButtonVisible( EFalse ); + + naviContainer->PushL( *iNaviDecorator ); + + } + } + +void CVeiTrimForMmsView::UpdateNaviPaneSize() + { + if( iContainer ) + { + iVedMovie->VideoClipSetCutInTime( KVedVideoClipIndex, iContainer->CutInTime() ); + iVedMovie->VideoClipSetCutOutTime( KVedVideoClipIndex, iContainer->CutOutTime() ); + } + } +void CVeiTrimForMmsView::SetNaviPaneSizeLabelL( const TInt& aSizeInBytes ) + { + STATIC_CAST(CVeiEditVideoLabelNavi*, + iNaviDecorator->DecoratedControl())->SetSizeLabelL( aSizeInBytes ); + } + + +void CVeiTrimForMmsView::SetNaviPaneDurationLabelL( + const TTimeIntervalMicroSeconds& aTime ) + { + STATIC_CAST(CVeiEditVideoLabelNavi*, + iNaviDecorator->DecoratedControl())->SetDurationLabelL( aTime.Int64() ); + } + +void CVeiTrimForMmsView::UpdateNaviPaneL( const TInt& aSizeInBytes, + const TTimeIntervalMicroSeconds& aTime ) + { + TInt maxMmsSize = STATIC_CAST( CVeiEditVideoLabelNavi*, iNaviDecorator->DecoratedControl() )->GetMaxMmsSize(); + + // Navipanes MMS icon control. + if( aSizeInBytes < maxMmsSize ) + { + STATIC_CAST( CVeiEditVideoLabelNavi*, iNaviDecorator->DecoratedControl() )->SetMmsAvailableL( ETrue ); + } + else + { + STATIC_CAST( CVeiEditVideoLabelNavi*, iNaviDecorator->DecoratedControl() )->SetMmsAvailableL( EFalse ); + } + + STATIC_CAST(CVeiEditVideoLabelNavi*, + iNaviDecorator->DecoratedControl())->SetSizeLabelL( aSizeInBytes ); + + STATIC_CAST(CVeiEditVideoLabelNavi*, + iNaviDecorator->DecoratedControl())->SetDurationLabelL( aTime.Int64() ); + } + +void CVeiTrimForMmsView::HandleResourceChange(TInt aType) + { + LOGFMT(KVideoEditorLogFile, "CVeiTrimForMmsView::HandleResourceChange() In, aType:%d", aType); + + if (KAknsMessageSkinChange == aType && iNaviDecorator) + { + // Handle skin change in the navi label controls - they do not receive + // it automatically since they are not in the control stack + CCoeControl* navi = iNaviDecorator->DecoratedControl(); + if (navi) + { + navi->HandleResourceChange( aType ); + } + } + + LOG(KVideoEditorLogFile, "CVeiTrimForMmsView::HandleResourceChange() Out"); + } + +// ============= MVedMovieProcessingObserver FUNCTIONS START ================== + +// ---------------------------------------------------------------------------- +// CVeiTrimForMmsView::NotifyMovieProcessingStartedL( CVedMovie& aMovie ) +// +// Called to notify that a new movie processing operation has been started. +// ---------------------------------------------------------------------------- +// +void CVeiTrimForMmsView::NotifyMovieProcessingStartedL( CVedMovie& /*aMovie*/ ) + { + } + + +// ---------------------------------------------------------------------------- +// CVeiTrimForMmsView::NotifyMovieProcessingProgressed( CVedMovie& aMovie, +// TInt aPercentage ) +// +// Called to inform about the current progress of the movie processing +// operation. +// ---------------------------------------------------------------------------- +// +void CVeiTrimForMmsView::NotifyMovieProcessingProgressed( CVedMovie&/*aMovie*/, + TInt aPercentage ) + { + LOG(KVideoEditorLogFile, "CVeiTrimForMmsView::NotifyMovieProcessingProgressed(): In"); + + // Increment the progress bar. + iProgressInfo->SetAndDraw( aPercentage ); + } + + +// ---------------------------------------------------------------------------- +// CVeiTrimForMmsView::NotifyMovieProcessingCompleted( CVedMovie& aMovie, +// TInt aError ) +// +// Called to notify that the movie processing operation has been completed. +// ---------------------------------------------------------------------------- +// +void CVeiTrimForMmsView::NotifyMovieProcessingCompleted( CVedMovie& /*aMovie*/, + TInt aError ) + { + LOGFMT(KVideoEditorLogFile, "CVeiTrimForMmsView::NotifyMovieProcessingCompleted(): In, aError:%d", aError); + + if( !aError ) + { + ProcessNeeded( EFalse ); + } + + __ASSERT_ALWAYS( iProgressNote, User::Panic(_L("CVeiTrimForMmsView"),1) ); + + // Draw the progress bar to 100%. + iProgressInfo->SetAndDraw( 100 ); + + // Delete the note. + TRAP_IGNORE( iProgressNote->ProcessFinishedL() ); + + RFs shareFServer; + LOG(KVideoEditorLogFile, "CVeiTrimForMmsView::NotifyMovieProcessingCompleted: shareFServer connect."); + + User::LeaveIfError(shareFServer.Connect()); + shareFServer.ShareProtected(); + + RFile openFileHandle; + + TInt err = openFileHandle.Open(shareFServer,*iTempFile,EFileRead|EFileShareReadersOnly); + if (KErrNone != err) + { + LOGFMT(KVideoEditorLogFile, "CVeiTrimForMmsView::NotifyMovieProcessingCompleted: Could not open file %S with EFileShareReadersOnly. Trying EFileShareAny", iTempFile); + User::LeaveIfError( openFileHandle.Open (shareFServer, *iTempFile, EFileRead|EFileShareAny) ); + } + + CMessageData* messageData = CMessageData::NewLC(); + messageData->AppendAttachmentHandleL( openFileHandle ); + + iSendAppUi.CreateAndSendMessageL( KSenduiMtmMmsUid, messageData, KNullUid, EFalse ); + + CleanupStack::PopAndDestroy( messageData ); + + shareFServer.Close(); + + LOG(KVideoEditorLogFile, "CVeiTrimForMmsView::NotifyMovieProcessingCompleted: shareFServer closed."); + LOG(KVideoEditorLogFile, "CVeiTrimForMmsView::NotifyMovieProcessingCompleted(): Out"); + } + +// ============== MVedMovieProcessingObserver FUNCTIONS END =================== + + +/** + * Called to notify that a new video clip has been successfully + * added to the movie. Note that the indices and the start and end times + * of the video clips after the new clip have also changed as a result. + * Note that the transitions may also have changed. + * + * @param aMovie movie + * @param aIndex index of video clip in movie + */ +void CVeiTrimForMmsView::NotifyVideoClipAdded( CVedMovie& /*aMovie*/, + TInt /*aIndex*/ ) + { + ProcessNeeded( ETrue ); + } + + +/** + * Called to notify that adding a new video clip to the movie has failed. + * + * Possible error codes: + * - KErrNotFound if there is no file with the specified name + * in the specified directory (but the directory exists) + * - KErrPathNotFound if the specified directory + * does not exist + * - KErrUnknown if the specified file is of unknown format + * - KErrNotSupported if the format of the file is recognized but + * adding it to the movie is not supported (e.g., it is of different resolution + * or format than the other clips) + * + * @param aMovie movie + * @param aError one of the system wide error codes + */ +void CVeiTrimForMmsView::NotifyVideoClipAddingFailed( CVedMovie& /*aMovie*/, + TInt /*aError*/ ) + { + User::Panic( _L("MmsView"), 20 ); + } + + +void CVeiTrimForMmsView::NotifyVideoClipRemoved( CVedMovie& /*aMovie*/, + TInt /*aIndex*/ ) + { + } + + +void CVeiTrimForMmsView::NotifyVideoClipIndicesChanged( CVedMovie& /*aMovie*/, + TInt /*aOldIndex*/, + TInt /*aNewIndex*/ ) + { + } + + +// ---------------------------------------------------------------------------- +// CVeiTrimForMmsView::NotifyVideoClipTimingsChanged( CVedMovie& aMovie, +// TInt aIndex ) +// +// Called to notify that the timings (that is, the cut in or cut out time or +// the speed and consequently the end time, edited duration, and possibly audio +// settings) of a video clip have changed (but the index of the clip has +// not changed). Note that the start and end times of the video clips +// after the changed clip have also changed. +// ---------------------------------------------------------------------------- +// +void CVeiTrimForMmsView::NotifyVideoClipTimingsChanged( CVedMovie& /*aMovie*/, + TInt /*aIndex*/ ) + { + LOG(KVideoEditorLogFile, "CVeiTrimForMmsView::NotifyVideoClipTimingsChanged()"); + } + + +void CVeiTrimForMmsView::NotifyVideoClipColorEffectChanged( CVedMovie& /*aMovie*/, + TInt /*aIndex*/ ) + { + } + + +void CVeiTrimForMmsView::NotifyVideoClipAudioSettingsChanged( CVedMovie& /*aMovie*/, + TInt /*aIndex*/ ) + { + } + + +void CVeiTrimForMmsView::NotifyVideoClipGeneratorSettingsChanged( CVedMovie& /*aMovie*/, + TInt /*aIndex*/ ) + { + } + + +void CVeiTrimForMmsView::NotifyVideoClipDescriptiveNameChanged( CVedMovie& /*aMovie*/, + TInt /*aIndex*/ ) + { + } + + +void CVeiTrimForMmsView::NotifyStartTransitionEffectChanged( CVedMovie& /*aMovie*/ ) + { + } + + +void CVeiTrimForMmsView::NotifyMiddleTransitionEffectChanged( CVedMovie& /*aMovie*/, + TInt /*aIndex*/ ) + { + } + + +void CVeiTrimForMmsView::NotifyEndTransitionEffectChanged( CVedMovie& /*aMovie*/ ) + { + } + + +void CVeiTrimForMmsView::NotifyAudioClipAdded( CVedMovie& /*aMovie*/, TInt /*aIndex*/ ) + { + } + + +void CVeiTrimForMmsView::NotifyAudioClipAddingFailed( CVedMovie& /*aMovie*/, TInt /*aError*/ ) + { + } + + +void CVeiTrimForMmsView::NotifyAudioClipRemoved( CVedMovie& /*aMovie*/, TInt /*aIndex*/ ) + { + } + + +void CVeiTrimForMmsView::NotifyAudioClipIndicesChanged( CVedMovie& /*aMovie*/, TInt /*aOldIndex*/, + TInt /*aNewIndex*/ ) + { + } + + +void CVeiTrimForMmsView::NotifyAudioClipTimingsChanged( CVedMovie& /*aMovie*/, + TInt /*aIndex*/ ) + { + } + + +void CVeiTrimForMmsView::NotifyMovieQualityChanged( CVedMovie& /*aMovie*/ ) + { + } + +void CVeiTrimForMmsView::NotifyMovieReseted(CVedMovie& /*aMovie*/ ) + { + } + +void CVeiTrimForMmsView::NotifyMovieOutputParametersChanged(CVedMovie& /*aMovie*/) + { + } + +void CVeiTrimForMmsView::NotifyAudioClipDynamicLevelMarkInserted(CVedMovie& /*aMovie*/, + TInt /*aClipIndex*/, + TInt /*aMarkIndex*/) + { + } + +void CVeiTrimForMmsView::NotifyAudioClipDynamicLevelMarkRemoved(CVedMovie& /*aMovie*/, + TInt /*aClipIndex*/, + TInt /*aMarkIndex*/) + { + } + +void CVeiTrimForMmsView::NotifyVideoClipDynamicLevelMarkInserted(CVedMovie& /*aMovie*/, + TInt /*aClipIndex*/, + TInt /*aMarkIndex*/) + { + } + +void CVeiTrimForMmsView::NotifyVideoClipDynamicLevelMarkRemoved(CVedMovie& /*aMovie*/, + TInt /*aClipIndex*/, + TInt /*aMarkIndex*/) + { + } + +void CVeiTrimForMmsView::PlayPreviewL() + { + TRect rect( AppUi()->ApplicationRect() ); + iContainer->SetRect( rect ); + + iContainer->PlayL( iVedMovie->VideoClipInfo( 0 )->FileName(), rect ); + } + +void CVeiTrimForMmsView::HandleStatusPaneSizeChange() + { + if ( iContainer ) + { + iContainer->SetRect( AppUi()->ClientRect() ); + } + + } +void CVeiTrimForMmsView::SetTrimStateL( TTrimState aState ) + { + iTrimState = aState; + CEikStatusPane *statusPane; + CAknTitlePane* titlePane; + + TResourceReader reader1; + + switch ( iTrimState ) + { + case EFullPreview: + + Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_EMPTY ); + Cba()->DrawDeferred(); + + break; + + case ESeek: + iContainer->SetRect( AppUi()->ClientRect() ); + statusPane = ( ( CAknAppUi* )iEikonEnv->EikAppUi() )->StatusPane(); + + titlePane = (CAknTitlePane*) statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ); + iCoeEnv->CreateResourceReaderLC( reader1, R_VEI_TRIM_FOR_MMS_VIEW_TITLE_NAME ); + titlePane->SetFromResourceL( reader1 ); + CleanupStack::PopAndDestroy(); //reader1 + + Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK ); + Cba()->DrawDeferred(); + + break; + + default: + { + break; + } + + } + } + +void CVeiTrimForMmsView::DialogDismissedL( TInt aButtonId ) + { + if ( aButtonId != EAknSoftkeyDone ) + { + iVedMovie->CancelProcessing(); + } + iProgressInfo = NULL; + } + +void CVeiTrimForMmsView::ProcessNeeded( TBool aProcessNeed ) + { + iProcessNeeded = aProcessNeed; + } + +void CVeiTrimForMmsView::ShowGlobalErrorNoteL( const TInt aError ) const + { + iErrorUi->ShowGlobalErrorNote( aError ); + } + +//============================================================================= +void CVeiTrimForMmsView::ReadSettingsL( TVeiSettings& aSettings ) const + { + LOG(KVideoEditorLogFile, "CVeiTrimForMmsView::ReadSettingsL: in"); + + STATIC_CAST( CTrimForMmsAppUi*, AppUi() )->ReadSettingsL( aSettings ); + + LOG(KVideoEditorLogFile, "CVeiTrimForMmsView::ReadSettingsL: out"); + } + + +// End of File