diff -r 951a5db380a0 -r e0b5df5c0969 videditor/ManualVideoEditor/src/VeiCutAudioView.cpp --- a/videditor/ManualVideoEditor/src/VeiCutAudioView.cpp Fri Jan 29 14:08:33 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,989 +0,0 @@ -/* -* Copyright (c) 2010 Ixonos Plc. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - Initial contribution -* -* Contributors: -* Ixonos Plc -* -* Description: -* -*/ - - -// INCLUDE FILES -// System includes -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//User includes -#include "VeiAppUi.h" -#include "VeiCutAudioView.h" -#include "VeiCutAudioContainer.h" -#include "ManualVideoEditor.hrh" -#include "VeiTimeLabelNavi.h" -#include "VideoEditorCommon.h" -#include "VeiVideoEditorSettings.h" -#include "VeiErrorUi.h" - -CVeiCutAudioView* CVeiCutAudioView::NewL() - { - CVeiCutAudioView* self = CVeiCutAudioView::NewLC(); - CleanupStack::Pop( self ); - - return self; - } - - -CVeiCutAudioView* CVeiCutAudioView::NewLC() - { - CVeiCutAudioView* self = new (ELeave) CVeiCutAudioView(); - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -CVeiCutAudioView::CVeiCutAudioView() - { - } - -void CVeiCutAudioView::ConstructL() - { - BaseConstructL( R_VEI_CUT_AUDIO_VIEW ); - - CEikStatusPane* sp = StatusPane(); - - iNaviPane = (CAknNavigationControlContainer*) sp->ControlL( - TUid::Uid(EEikStatusPaneUidNavi)); - - iTimeNavi = CreateTimeLabelNaviL(); - iTimeNavi->SetMopParent( this ); - - iVolumeNavi = iNaviPane->CreateVolumeIndicatorL( - R_AVKON_NAVI_PANE_VOLUME_INDICATOR ); - - iErrorUI = CVeiErrorUI::NewL( *iCoeEnv ); - - iTimeUpdater = CPeriodic::NewL( CActive::EPriorityLow ); - iVolumeHider = CPeriodic::NewL( CActive::EPriorityLow ); - } - -// --------------------------------------------------------- -// CVeiCutAudioView::~CVeiCutAudioView() -// ?implementation_description -// --------------------------------------------------------- -// -CVeiCutAudioView::~CVeiCutAudioView() - { - if ( iContainer ) - { - AppUi()->RemoveFromViewStack( *this, iContainer ); - delete iContainer; - iContainer = 0; - } - if ( iTimeUpdater ) - { - iTimeUpdater->Cancel(); - delete iTimeUpdater; - } - if ( iVolumeHider ) - { - iVolumeHider->Cancel(); - delete iVolumeHider; - } - - if ( iErrorUI ) - { - delete iErrorUI; - } - - delete iVolumeNavi; - - delete iTimeNavi; - - delete iCallBack; - } - - -void CVeiCutAudioView::DynInitMenuPaneL( TInt aResourceId,CEikMenuPane* aMenuPane ) - { - TInt state = iContainer->State(); - - if (aResourceId == R_VEI_CUT_VIDEO_VIEW_MENU_CLEAR_MARKS) - { - // delet in, out, in & out as necessary. - - if (iMovie->AudioClipCutInTime(iIndex) <= TTimeIntervalMicroSeconds(0)) - { - aMenuPane->SetItemDimmed(EVeiCmdCutVideoViewClearMarksIn, ETrue); - } - if (iMovie->AudioClipCutOutTime(iIndex) >= iMovie->AudioClipInfo(iIndex)->Duration() ) - { - aMenuPane->SetItemDimmed(EVeiCmdCutVideoViewClearMarksOut, ETrue); - } - if (!((iMovie->AudioClipCutOutTime(iIndex) < iMovie->AudioClipInfo(iIndex)->Duration()) - && (iMovie->AudioClipCutInTime(iIndex) > TTimeIntervalMicroSeconds(0)))) - { - aMenuPane->SetItemDimmed(EVeiCmdCutVideoViewClearMarksInOut, ETrue); - } - } - - if ( aResourceId == R_VEI_CUT_VIDEO_VIEW_MENU ) - { - aMenuPane->SetItemDimmed( EVeiCmdCutVideoTakeSnapshot, ETrue ); - - if ( iPopupMenuOpened != EFalse ) - { - aMenuPane->SetItemDimmed( EVeiCmdCutVideoViewClearMarks, ETrue ); - aMenuPane->SetItemDimmed( EVeiCmdCutVideoViewHelp, ETrue ); - } - - if ( ( iMovie->AudioClipCutInTime( iIndex ) == TTimeIntervalMicroSeconds( 0 ) && - iMovie->AudioClipCutOutTime( iIndex ) == iMovie->AudioClipInfo( iIndex )->Duration() ) ) - { - aMenuPane->DeleteMenuItem( EVeiCmdCutVideoViewPlayMarked ); - } - if ( state != CVeiCutAudioContainer::EStatePlayingMenuOpen && - state != CVeiCutAudioContainer::EStatePaused ) - { - aMenuPane->DeleteMenuItem( EVeiCmdCutVideoViewContinue ); - } - if ( ( state == CVeiCutAudioContainer::EStateStopped ) || - ( state == CVeiCutAudioContainer::EStateStoppedInitial ) ) - { - aMenuPane->DeleteMenuItem( EVeiCmdCutVideoViewStop ); - } - - if ( ( iMovie->AudioClipCutOutTime( iIndex ) >= iMovie->AudioClipInfo( iIndex )->Duration() ) && - ( iMovie->AudioClipCutInTime( iIndex ) <= TTimeIntervalMicroSeconds( 0 ) ) ) - { - aMenuPane->SetItemDimmed( EVeiCmdCutVideoViewClearMarks, ETrue ); - } - if ( state == CVeiCutAudioContainer::EStatePaused ) - { - aMenuPane->SetItemDimmed( EVeiCmdCutVideoViewPlay, ETrue ); - } - if ( state == CVeiCutAudioContainer::EStateStoppedInitial ) - { - //aMenuPane->SetItemDimmed( EVeiCmdCutVideoViewMarkIn, ETrue ); - //aMenuPane->SetItemDimmed( EVeiCmdCutVideoViewMarkOut, ETrue ); - } - } - - if ( aResourceId != R_VEI_CUT_VIDEO_VIEW_MENU ) - return; - - - if ( ( state != CVeiCutAudioContainer::EStateStopped ) && - ( state != CVeiCutAudioContainer::EStateStoppedInitial ) && - ( state != CVeiCutAudioContainer::EStatePaused ) ) - { - aMenuPane->SetItemDimmed( EVeiCmdCutVideoViewPlay, ETrue ); - aMenuPane->SetItemDimmed( EVeiCmdCutVideoViewMarkIn, ETrue ); - aMenuPane->SetItemDimmed( EVeiCmdCutVideoViewMarkOut, ETrue ); - } - else - { - if ( iContainer->PlaybackPositionL() <= iMovie->AudioClipCutInTime( iIndex ) ) - { - aMenuPane->SetItemDimmed( EVeiCmdCutVideoViewMarkOut, ETrue ); - } - else - { - if ( iContainer->PlaybackPositionL() >= iMovie->AudioClipCutOutTime( iIndex ) ) - { - aMenuPane->SetItemDimmed( EVeiCmdCutVideoViewMarkIn, ETrue ); - } - } - } - - } - -TUid CVeiCutAudioView::Id() const - { - return TUid::Uid( EVeiCutAudioView ); - } - -void CVeiCutAudioView::HandleCommandL(TInt aCommand) - { - switch ( aCommand ) - { - case EAknSoftkeyOk: - { - iPopupMenuOpened = ETrue; - if (iContainer->State() == CVeiCutAudioContainer::EStatePlaying) - { - PausePreviewL(); - iContainer->SetStateL(CVeiCutAudioContainer::EStatePlayingMenuOpen); - } - - MenuBar()->TryDisplayMenuBarL(); - if (iContainer->State() == CVeiCutAudioContainer::EStatePlayingMenuOpen) - { - iContainer->SetStateL(CVeiCutAudioContainer::EStatePaused); - } - iPopupMenuOpened = EFalse; - break; - } - case EVeiCmdCutVideoViewDone: - case EVeiCmdCutVideoViewBack: - case EAknSoftkeyBack: - { - iContainer->CloseStreamL(); - - StopNaviPaneUpdateL(); - - // Activate Edit Video view - AppUi()->ActivateLocalViewL( TUid::Uid(EVeiEditVideoView) ); - break; - } - - case EVeiCmdCutVideoViewMarkIn: - { - MarkInL(); - break; - } - case EVeiCmdCutVideoViewMarkOut: - { - MarkOutL(); - break; - } - case EVeiCmdCutVideoViewClearMarksInOut: - { - ClearInOutL( ETrue, ETrue ); - break; - } - case EVeiCmdCutVideoViewClearMarksIn: - { - ClearInOutL( ETrue, EFalse ); - break; - } - case EVeiCmdCutVideoViewClearMarksOut: - { - ClearInOutL( EFalse, ETrue ); - break; - } - case EVeiCmdCutVideoViewPlayMarked: - { - STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl() )-> - SetPauseIconVisibilityL( EFalse ); - PlayMarkedL(); - break; - } - case EVeiCmdCutVideoViewPlay: - { - STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl() )-> - SetPauseIconVisibilityL( EFalse ); - iNaviPane->PushL( *iTimeNavi ); - - PlayPreviewL(); - break; - } - case EVeiCmdCutVideoViewStop: - { - STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl() )-> - SetPauseIconVisibilityL( EFalse ); - iNaviPane->PushL( *iTimeNavi ); - iContainer->StopL(); - StopNaviPaneUpdateL(); - break; - } - case EVeiCmdCutVideoViewContinue: - { - STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl() )-> - SetPauseIconVisibilityL( EFalse ); - iNaviPane->PushL( *iTimeNavi ); - PlayPreviewL(); - break; - } - case EVeiCmdCutVideoVolumeDown: - { - if ( !iAudioMuted ) - { - VolumeDownL(); - } - break; - } - case EVeiCmdCutVideoVolumeUp: - { - if ( !iAudioMuted ) - { - VolumeUpL(); - } - break; - } - // - // Options->Help - // - case EVeiCmdCutVideoViewHelp: - { - // CS Help launching is handled in Video Editor's AppUi. - AppUi()->HandleCommandL( EVeiCmdCutVideoViewHelp ); - break; - } - default: - { - AppUi()->HandleCommandL( aCommand ); - break; - } - } - } - - -void CVeiCutAudioView::DoActivateL( - const TVwsViewId& /*aPrevViewId*/,TUid /*aCustomMessageId*/, - const TDesC8& /*aCustomMessage*/) - { - - if (!iContainer) - { - iContainer = CVeiCutAudioContainer::NewL( AppUi()->ClientRect(), *this, *iErrorUI ); - iContainer->SetMopParent( this ); - AppUi()->AddToStackL( *this, iContainer ); - } - - CEikStatusPane *statusPane = ( ( CAknAppUi* )iEikonEnv->EikAppUi() )->StatusPane(); - - CAknTitlePane* titlePane = (CAknTitlePane*) statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ); - TResourceReader reader1; - iCoeEnv->CreateResourceReaderLC( reader1, R_VEI_CUTAUDIO_VIEW_TITLE_NAME ); - titlePane->SetFromResourceL( reader1 ); - CleanupStack::PopAndDestroy(); //reader1 - - iNaviPane->PushL( *iTimeNavi ); - - iAudioMuted = EFalse; - - STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())-> - SetVolumeIconVisibilityL( ETrue ); - STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl() )-> - SetPauseIconVisibilityL( EFalse ); - - iContainer->SetInTimeL( iMovie->AudioClipCutInTime( iIndex ) ); - iContainer->SetOutTimeL( iMovie->AudioClipCutOutTime( iIndex ) ); - iContainer->SetDuration( iMovie->AudioClipInfo( iIndex )->Duration() ); - - // -/* TTimeIntervalMicroSeconds time1 = iMovie->AudioClipInfo( iIndex )->Duration(); - TTimeIntervalMicroSeconds time2 = iMovie->AudioClipCutInTime( iIndex ); - TTimeIntervalMicroSeconds time3 = iMovie->AudioClipCutOutTime( iIndex ); - TTimeIntervalMicroSeconds time4 = iMovie->AudioClipStartTime( iIndex ); - TTimeIntervalMicroSeconds time5 = iMovie->AudioClipEndTime( iIndex ); - TTimeIntervalMicroSeconds time6 = iMovie->AudioClipEditedDuration( iIndex ); - TTimeIntervalMicroSeconds time7(time3.Int64() - time2.Int64()); - TTimeIntervalMicroSeconds time8(time5.Int64() - time4.Int64()); -*/ // - - // Start processing the file asynchronously. This is needed because - // CVeiCutAudioContainer::OpenAudioFileL launches a progress dialog. - // If it is called syncronously the previous view deactivation has - // not completed, and view shutter dismisses the progress dialog... - if (! iCallBack) - { - TCallBack cb (CVeiCutAudioView::AsyncOpenAudioFile, this); - iCallBack = new (ELeave) CAsyncCallBack(cb, CActive::EPriorityStandard); - } - iCallBack->CallBack(); - - iOriginalCutInTime = iMovie->AudioClipCutInTime( iIndex ); - - DrawTimeNaviL(); - - iErrorNmb = 0; - } - -// --------------------------------------------------------- -// CVeiCutAudioView::AsyncOpenAudioFile -// ?implementation_description -// --------------------------------------------------------- -// -TInt CVeiCutAudioView::AsyncOpenAudioFile(TAny* aThis) - { - LOG( KVideoEditorLogFile, "CVeiCutAudioView::AsyncOpenAudioFile"); - - // In the asynchronous version, trap the rest of the functions - // to make sure that the caller's TRequestStatus is always - // completed, also in case of failures. - CVeiCutAudioView* view = static_cast(aThis); - TRAPD(err, view->OpenAudioFileL() ); - - if (err) - { - // Display error message here, otherwise it would be quietly ignored. - TBuf<256> unused; - view->AppUi()->HandleError(err, SExtendedError(), unused, unused); - } - - return err; - } - -// --------------------------------------------------------- -// CVeiCutAudioView::OpenAudioFileL() -// ?implementation_description -// --------------------------------------------------------- -// -void CVeiCutAudioView::OpenAudioFileL() - { - TFileName audioClipFileName = iMovie->AudioClipInfo( iIndex )->FileName(); - iContainer->OpenAudioFileL( audioClipFileName ); - } - -// --------------------------------------------------------- -// CVeiCutAudioView::DoDeactivate() -// ?implementation_description -// --------------------------------------------------------- -// -void CVeiCutAudioView::DoDeactivate() - { - iNaviPane->Pop( iVolumeNavi ); - - if ( iTimeUpdater ) - { - iTimeUpdater->Cancel(); - } - if ( iVolumeHider ) - { - iVolumeHider->Cancel(); - } - if ( iContainer ) - { - iNaviPane->Pop( iTimeNavi ); - AppUi()->RemoveFromViewStack( *this, iContainer ); - - delete iContainer; - iContainer = NULL; - } - - } - -void CVeiCutAudioView::SetVideoClipAndIndex( CVedMovie& aVideoClip, TInt aIndex ) - { - iMovie = &aVideoClip; - - iIndex = aIndex; - } - -void CVeiCutAudioView::PlayPreviewL() - { - iPlayMarked = EFalse; - StartNaviPaneUpdateL(); - iContainer->PlayL(); - } - -void CVeiCutAudioView::PausePreviewL() - { - STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl() )-> - SetPauseIconVisibilityL( ETrue ); - StopNaviPaneUpdateL(); - iContainer->PauseL(); - } - -void CVeiCutAudioView::UpdateCBAL(TInt aState) - { - switch (aState) - { - case CVeiCutAudioContainer::EStateInitializing: - case CVeiCutAudioContainer::EStateOpening: - { - Cba()->SetCommandSetL(R_AVKON_SOFTKEYS_EMPTY); - break; - } - case CVeiCutAudioContainer::EStateStoppedInitial: - { - if ( ( iMovie->AudioClipCutInTime( iIndex ) == TTimeIntervalMicroSeconds( 0 ) ) && - ( iMovie->AudioClipCutOutTime( iIndex ) == iMovie->AudioClipInfo(iIndex)->Duration() ) ) - { - Cba()->SetCommandSetL(R_AVKON_SOFTKEYS_OPTIONS_BACK); - } - else - { - Cba()->SetCommandSetL(R_VEI_SOFTKEYS_OPTIONS_DONE); - } - break; - } - case CVeiCutAudioContainer::EStatePaused: - case CVeiCutAudioContainer::EStateStopped: - { - if ( ( iMovie->AudioClipCutInTime( iIndex ) == TTimeIntervalMicroSeconds( 0 ) ) && - ( iMovie->AudioClipCutOutTime( iIndex ) == iMovie->AudioClipInfo(iIndex)->Duration() ) ) - { - Cba()->SetCommandSetL(R_AVKON_SOFTKEYS_OPTIONS_BACK); - } - else - { - Cba()->SetCommandSetL(R_VEI_SOFTKEYS_OPTIONS_DONE); - } - break; - } - case CVeiCutAudioContainer::EStatePlaying: - { - - if ( iContainer->PlaybackPositionL() < iMovie->AudioClipCutInTime( iIndex ) ) - { - Cba()->SetCommandSetL( R_VEI_SOFTKEYS_IN_EMPTY ); - iMarkState = EMarkStateIn; - } - else if ( iContainer->PlaybackPositionL() < iMovie->AudioClipCutOutTime( iIndex ) ) - { - Cba()->SetCommandSetL( R_VEI_SOFTKEYS_IN_OUT ); - iMarkState = EMarkStateInOut; - } - else if ( ( iContainer->PlaybackPositionL() > iMovie->AudioClipCutOutTime( iIndex ) ) && iPlayMarked ) - { - iContainer->StopL(); - iPlayMarked = EFalse; - } - else - { - Cba()->SetCommandSetL( R_VEI_SOFTKEYS_EMPTY_OUT ); - iMarkState = EMarkStateOut; - } - break; - } - default: - { - break; - } - } - Cba()->DrawDeferred(); - } - -void CVeiCutAudioView::PlayMarkedL() - { - TTimeIntervalMicroSeconds audioPlayStartTime; - audioPlayStartTime = iMovie->AudioClipCutInTime( iIndex ); - - TTimeIntervalMicroSeconds audioPlayCutOutTime; - audioPlayCutOutTime = iMovie->AudioClipCutOutTime( iIndex ); - - if ( !(( audioPlayStartTime.Int64() + 50000 ) > audioPlayCutOutTime.Int64() ) ) - { - iPlayMarked = ETrue; - StartNaviPaneUpdateL(); - - iContainer->PlayL( audioPlayStartTime.Int64() + 1000 ); - } - else - { - iContainer->StopL(); - } - } - -void CVeiCutAudioView::ClearInOutL( TBool aClearIn, TBool aClearOut ) - { - if ( aClearIn ) - { - iMovie->AudioClipSetCutInTime( iIndex, TTimeIntervalMicroSeconds( 0 ) ); - iContainer->SetInTimeL( iMovie->AudioClipCutInTime( iIndex ) ); - } - if ( aClearOut ) - { - TTimeIntervalMicroSeconds audioClipOriginalDuration; - audioClipOriginalDuration = iMovie->AudioClipInfo( iIndex )->Duration(); - iMovie->AudioClipSetCutOutTime( iIndex, audioClipOriginalDuration ); - iContainer->SetOutTimeL( audioClipOriginalDuration ); - } - - TTimeIntervalMicroSeconds cutin = iMovie->AudioClipCutInTime( iIndex ); - TTimeIntervalMicroSeconds cutout = iMovie->AudioClipCutOutTime( iIndex ); - - if ( ( cutin == TTimeIntervalMicroSeconds( 0 ) ) && - ( cutout == iMovie->AudioClipInfo(iIndex)->Duration() ) ) - { - Cba()->SetCommandSetL(R_AVKON_SOFTKEYS_OPTIONS_BACK); - Cba()->DrawDeferred(); - } - } - -void CVeiCutAudioView::MarkInL() - { - STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl() )-> - SetPauseIconVisibilityL( ETrue ); - StopNaviPaneUpdateL(); -/* Check that cut in time is before cut out time */ - TTimeIntervalMicroSeconds cutOutTime = iMovie->AudioClipCutOutTime( iIndex ); - TTimeIntervalMicroSeconds cutInTime = iContainer->PlaybackPositionL(); - if ( cutInTime >= cutOutTime ) - { - cutInTime = cutOutTime.Int64() - 100000; - } - - iMovie->AudioClipSetCutInTime( iIndex, cutInTime ); - iContainer->MarkedInL(); - } - -void CVeiCutAudioView::MarkOutL() - { - STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl() )-> - SetPauseIconVisibilityL( ETrue ); - StopNaviPaneUpdateL(); - - TTimeIntervalMicroSeconds cutOutTime = iContainer->PlaybackPositionL(); - TTimeIntervalMicroSeconds cutInTime = iMovie->AudioClipCutInTime( iIndex ); - if ( cutOutTime <= cutInTime ) - { - cutOutTime = cutInTime.Int64() + 100000; - } - - //iMovie->AudioClipSetCutOutTime( iIndex, iContainer->PlaybackPositionL() ); - iMovie->AudioClipSetCutOutTime( iIndex, cutOutTime ); - iContainer->MarkedOutL(); - } - -void CVeiCutAudioView::MoveStartOrEndMarkL( TTimeIntervalMicroSeconds aPosition, CVeiCutAudioContainer::TCutMark aMarkType ) - { - LOG(KVideoEditorLogFile, "CVeiCutAudioView::MoveStartOrEndMarkL, In"); - - StopNaviPaneUpdateL(); - - LOG(KVideoEditorLogFile, "CVeiCutAudioView::MoveStartOrEndMarkL, 2"); - - if ( aMarkType == CVeiCutAudioContainer::EStartMark ) - { - iMovie->VideoClipSetCutInTime( iIndex, aPosition ); - } - else if ( aMarkType == CVeiCutAudioContainer::EEndMark ) - { - iMovie->VideoClipSetCutOutTime( iIndex, aPosition ); - } - LOG( KVideoEditorLogFile, "CVeiCutAudioView::MoveStartOrEndMarkL, Out" ); - } - - -TUint CVeiCutAudioView::InPointTime() - { - if ( !iMovie ) - { - return 0; - } - else - { - return (static_cast(iMovie->AudioClipCutInTime(iIndex).Int64() / 1000)); - } - } - -TUint CVeiCutAudioView::OutPointTime() - { - if ( !iMovie ) - { - return 0; - } - else - { - return (static_cast(iMovie->AudioClipCutOutTime(iIndex).Int64() / 1000)); - } - } - -CAknNavigationDecorator* CVeiCutAudioView::CreateTimeLabelNaviL() - { - CVeiTimeLabelNavi* timelabelnavi = CVeiTimeLabelNavi::NewLC(); - CAknNavigationDecorator* decoratedFolder = - CAknNavigationDecorator::NewL(iNaviPane, timelabelnavi, CAknNavigationDecorator::ENotSpecified); - CleanupStack::Pop(timelabelnavi); - - CleanupStack::PushL(decoratedFolder); - decoratedFolder->SetContainerWindowL(*iNaviPane); - CleanupStack::Pop(decoratedFolder); - decoratedFolder->MakeScrollButtonVisible(EFalse); - - return decoratedFolder; - } - -TInt CVeiCutAudioView::UpdateTimeCallbackL(TAny* aPtr) - { - CVeiCutAudioView* view = (CVeiCutAudioView*)aPtr; - - view->UpdateTimeL(); - - return 1; - } - - -void CVeiCutAudioView::UpdateTimeL() - { - DrawTimeNaviL(); - - TTimeIntervalMicroSeconds playbackPos = iContainer->PlaybackPositionL(); - - if (iMarkState == EMarkStateIn) - { - if (playbackPos > iMovie->AudioClipCutInTime( iIndex )) - { - UpdateCBAL(iContainer->State()); - } - } - else if (iMarkState == EMarkStateOut) - { - if (playbackPos < iMovie->AudioClipCutOutTime( iIndex )) - { - UpdateCBAL(iContainer->State()); - } - } - else - { - if ((playbackPos < iMovie->AudioClipCutInTime( iIndex )) || - (playbackPos > iMovie->AudioClipCutOutTime( iIndex ))) - { - UpdateCBAL(iContainer->State()); - } - } - } - -void CVeiCutAudioView::DrawTimeNaviL() - { - TTime elapsed( iContainer->PlaybackPositionL().Int64() ); - TTime total( iContainer->TotalLength().Int64() ); - - TBuf<16> elapsedBuf; - TBuf<16> totalBuf; - - HBufC* dateFormatString; - - if ( ( total.Int64() / 1000 ) < 3600000 ) // check if time is over 99:59 - { - dateFormatString = iEikonEnv->AllocReadResourceLC( R_QTN_TIME_DURAT_MIN_SEC ); - } - else - { - dateFormatString = iEikonEnv->AllocReadResourceLC( R_QTN_TIME_DURAT_LONG ); - } - - elapsed.FormatL(elapsedBuf, *dateFormatString); - total.FormatL(totalBuf, *dateFormatString); - CleanupStack::PopAndDestroy(dateFormatString); - - CDesCArrayFlat* strings = new (ELeave) CDesCArrayFlat(2); - CleanupStack::PushL(strings); - strings->AppendL(elapsedBuf); - strings->AppendL(totalBuf); - HBufC* stringholder = StringLoader::LoadL(R_VEI_NAVI_TIME, *strings, iEikonEnv); - CleanupStack::PopAndDestroy(strings); - CleanupStack::PushL(stringholder); - - STATIC_CAST(CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())->SetLabelL(stringholder->Des()); - - CleanupStack::PopAndDestroy(stringholder); - - - /* Prevent the screen light dimming. */ - if (elapsed.DateTime().Second() == 0 || elapsed.DateTime().Second() == 15 || elapsed.DateTime().Second() == 30 || elapsed.DateTime().Second() == 45) - { - User::ResetInactivityTime(); - } - } - - -void CVeiCutAudioView::StartNaviPaneUpdateL() - { - DrawTimeNaviL(); - if (iTimeUpdater && !iTimeUpdater->IsActive()) - { - iTimeUpdater->Start(500000, 500000, TCallBack(CVeiCutAudioView::UpdateTimeCallbackL, this)); - } - } - -void CVeiCutAudioView::StopNaviPaneUpdateL() - { - if (iContainer) - { - DrawTimeNaviL(); - } - if (iTimeUpdater && iTimeUpdater->IsActive()) - { - iTimeUpdater->Cancel(); - } - } - -TInt CVeiCutAudioView::HideVolumeCallbackL(TAny* aPtr) - { - CVeiCutAudioView* view = (CVeiCutAudioView*)aPtr; - view->HideVolume(); - return 0; - } - -void CVeiCutAudioView::HideVolume() - { - iNaviPane->Pop(iVolumeNavi); - } - -void CVeiCutAudioView::VolumeMuteL() - { - iContainer->SetVolumeL(-1000); - } - -void CVeiCutAudioView::VolumeDownL() - { - iContainer->SetVolumeL(-1); - TInt volume = iContainer->Volume(); - if (iVolumeHider->IsActive()) - { - iVolumeHider->Cancel(); - } - if (volume == 0) - { - STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())-> - SetVolumeIconVisibilityL( EFalse ); - HideVolume(); - volume = 1; - return; - } - - iNaviPane->PushL(*iVolumeNavi); - iVolumeHider->Start(1000000, 100000, TCallBack(CVeiCutAudioView::HideVolumeCallbackL, this)); - - STATIC_CAST(CAknVolumeControl*, iVolumeNavi->DecoratedControl())->SetValue(volume); - - STATIC_CAST(CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())->SetLeftArrowVisibilityL(ETrue); - - if (volume < iContainer->MaxVolume()) - { - STATIC_CAST(CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())->SetRightArrowVisibilityL(ETrue); - } - else - { - STATIC_CAST(CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())->SetRightArrowVisibilityL(EFalse); - } - } - -void CVeiCutAudioView::VolumeUpL() - { - iContainer->SetVolumeL(1); - STATIC_CAST( CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())-> - SetVolumeIconVisibilityL( ETrue ); - - TInt volume = iContainer->Volume(); - if (iVolumeHider->IsActive()) - { - iVolumeHider->Cancel(); - } - iNaviPane->PushL(*iVolumeNavi); - iVolumeHider->Start(1000000, 1000000, TCallBack(CVeiCutAudioView::HideVolumeCallbackL, this)); - - STATIC_CAST(CAknVolumeControl*, iVolumeNavi->DecoratedControl())->SetValue(volume); - - if (volume > iContainer->MinVolume() + 1) - { - STATIC_CAST(CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())->SetLeftArrowVisibilityL(ETrue); - } - else - { - STATIC_CAST(CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())->SetLeftArrowVisibilityL(EFalse); - } - - if (volume < iContainer->MaxVolume()) - { - STATIC_CAST(CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())->SetRightArrowVisibilityL(ETrue); - } - else - { - STATIC_CAST(CVeiTimeLabelNavi*, iTimeNavi->DecoratedControl())->SetRightArrowVisibilityL(EFalse); - } - - } - -void CVeiCutAudioView::HandleForegroundEventL ( TBool aForeground ) - { - if ( !aForeground ) - { - // If the application is closing down, calling PauseL could result in - // a callback from the MMF player after the container is already deleted, - // causing KERN-EXEC 3 - if ( static_cast( AppUi() )->AppIsOnTheWayToDestruction() ) - { - iContainer->PrepareForTerminationL(); - } - else - { - iContainer->PauseL(); - } - iNaviPane->Pop( iTimeNavi ); - } - else - { - iNaviPane->PushL( *iTimeNavi ); - } - } - -// --------------------------------------------------------- -// CVeiCutAudioView::HandleStatusPaneSizeChange() -// --------------------------------------------------------- -// -void CVeiCutAudioView::HandleStatusPaneSizeChange() - { - if ( iContainer ) - { - iContainer->SetRect( AppUi()->ClientRect() ); - } - } - -void CVeiCutAudioView::GetAudioVisualizationL() - { - LOG(KVideoEditorLogFile, "CVeiCutAudioView::GetAudioVisualization(), In"); - CVedAudioClipInfo* audioInfo = NULL; - if (iMovie) - { - audioInfo = iMovie->AudioClipInfo( iIndex ); - if (audioInfo && iContainer) - { - TInt64 duration = audioInfo->Duration().Int64(); - TInt resolution = (duration/1000)/KAudioSampleInterval; - - LOGFMT(KVideoEditorLogFile, "CVeiCutAudioView::GetAudioVisualization() 2, calling audioInfo->GetVisualizationL(*iContainer, resolution, 1), where resolution is:%Ld", resolution); - audioInfo->GetVisualizationL(*iContainer, resolution, 1); - } - } - - LOG(KVideoEditorLogFile, "CVeiCutAudioView::GetAudioVisualization(), Out"); - } - -void CVeiCutAudioView::CancelVisualizationL() - { - CVedAudioClipInfo* audioInfo = NULL; - if (iMovie) - { - audioInfo = iMovie->AudioClipInfo( iIndex ); - } - if (audioInfo && iContainer) - { - TInt resolution = (audioInfo->Duration().Int64()/1000)/KAudioSampleInterval; - audioInfo->CancelVisualizationL(); - } - } - -void CVeiCutAudioView::HandleResourceChange(TInt aType) - { - LOGFMT(KVideoEditorLogFile, "CVeiCutAudioView::HandleResourceChange() In, aType:%d", aType); - - if (KAknsMessageSkinChange == aType) - { - // Handle skin change in the navi label controls - they do not receive - // it automatically since they are not in the control stack - iTimeNavi->DecoratedControl()->HandleResourceChange( aType ); - iVolumeNavi->DecoratedControl()->HandleResourceChange( aType ); - } - - LOG(KVideoEditorLogFile, "CVeiCutAudioView::HandleResourceChange() Out"); - } - -// End of File