diff -r b31261fd4e04 -r ccd8e69b5392 mmsharing/mmshui/src/musuiclipsharingcontroller.cpp --- a/mmsharing/mmshui/src/musuiclipsharingcontroller.cpp Tue Feb 02 00:09:07 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1166 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "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: -* -* Description: Application's UI class. -* -*/ - - - -#include "musuiclipsharingcontroller.h" -#include "musuicallbackservice.h" -#include "musuieventobserver.h" -#include "musuisharingobserver.h" -#include "musuisendobserver.h" -#include "musuiclipsharingobserver.h" -#include "musuidialogutil.h" -#include "musengclipsession.h" -#include "mussettings.h" -#include "mussettingskeys.h" -#include "musuiresourcehandler.h" -#include "musui.hrh" -#include "muslogger.h" // debug logging -#include "musuiactivetimer.h" -#include "musuigeneralview.h" - -#include -#include -#include - -#include -#include - -// CONSTANTS -const TInt KMusTimeToCloseAfterClipEndedStandard = 60 * 1000000; // 60 seconds -const TInt KMusTimeToCloseAfterClipEndedOpVariant = 1 * 1000000; // 1 second - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -CMusUiClipSharingController* CMusUiClipSharingController::NewL( - MMusUiEventObserver& aEventObserver, - MMusUiSharingObserver& aSharingObserver, - MMusUiSendObserver& aSendObserver, - MMusUiClipSharingObserver& aClipObserver, - const TRect& aRect ) - { - CMusUiClipSharingController* self = - new( ELeave ) CMusUiClipSharingController( aEventObserver, - aSharingObserver, - aSendObserver, - aClipObserver ); - CleanupStack::PushL( self ); - self->ConstructL( aRect ); - CleanupStack::Pop( self ); - return self; - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -CMusUiClipSharingController::~CMusUiClipSharingController() - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::~CMusUiClipSharingController" ); - delete iCloseTimer; - DeleteEngineSession(); - delete iFileName; - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::~CMusUiClipSharingController" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -CMusUiClipSharingController::CMusUiClipSharingController( - MMusUiEventObserver& aEventObserver, - MMusUiSharingObserver& aSharingObserver, - MMusUiSendObserver& aSendObserver, - MMusUiClipSharingObserver& aClipObserver ) - :CMusUiSendController( aEventObserver, aSharingObserver, aSendObserver ), - iClipObserver( aClipObserver ) - { - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::ConstructL( const TRect& aRect ) - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::ConstructL" ); - - CMusUiSendController::ConstructL(); // Base class construction - - iRect = aRect; - iSession = CMusEngClipSession::NewL( iRect, - *this, - *this, - *this, - iSipProfileId ); - iSession->SetAudioRoutingObserver( this ); - - if ( iSession->AudioRoutingCanBeChanged() ) - { - iSession->EnableLoudspeakerL( ELoudspeakerEnabled, ETrue ); - } - - if ( iVideoCodec && iVideoCodec->Length() > 0 ) - { - iSession->SetSupportedVideoCodecListL( *iVideoCodec ); - } - - iCallbackService->AsyncEventL( EMusUiAsyncStartMediaGallery ); - - iCloseTimer = CMusUiActiveTimer::NewL( this ); - - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::ConstructL" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::HandleAsyncEventL( TMusUiAsyncEvent aEventId ) - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::HandleAsyncEventL" ); - switch ( aEventId ) - { - case EMusUiAsyncStartMediaGallery: - { - iTranscode = EFalse; - iTranscodingGoing = EFalse; - - if ( !iSession ) - { - iSession = CMusEngClipSession::NewL( iRect, - *this, - *this, - *this, - iSipProfileId ); - iSession->SetAudioRoutingObserver( this ); - } - - // Do fetching guarded. If registration completes during fetching, - // there is no need to do anything. - iFileFetchingOngoing = ETrue; - iClipObserver.RunFetchDialogL(); - iFileFetchingOngoing = EFalse; - - TRAPD( error, - iSession->SetClipL( *iFileName ) ) - MUS_LOG_TDESC( "mus: [MUSUI ] File name: ", - iFileName->Des() ) - if ( error == KErrNone) - { - if ( iSession->AudioRoutingCanBeChanged() ) - { - iSession->EnableLoudspeakerL( ELoudspeakerEnabled, ETrue ); - } - iClipEnded = EFalse; - StartInvitationL(); - } - else if ( error == KErrPermissionDenied ) - { - MusUiDialogUtil::ShowInformationDialogL( - R_MUS_VIEW_DRM_INFO_SEND_FORBID ); - DeleteEngineSession(); - delete iFileName; - iFileName = NULL; - iSession = CMusEngClipSession::NewL( iRect, - *this, - *this, - *this, - iSipProfileId ); - iSession->SetAudioRoutingObserver( this ); - if ( iSession->AudioRoutingCanBeChanged() ) - { - iSession->EnableLoudspeakerL( ELoudspeakerEnabled, ETrue ); - } - iCallbackService->AsyncEventL( EMusUiAsyncStartMediaGallery ); - } - else - { - HandleExitL(); - } - - break; - } - case EMusUiAsyncStartTranscoding: - { - // Parse Target Filename for the transcoding result - // and start transcoding: - //iSession->TranscodeL( VideoFileNameL() ); - // Show progress dialog: - //iObserver->ShowTranscodingProgressDialogL(); - iTranscodingGoing = ETrue; - break; - } - - default: - { - // Not clip specific, let the base class handle - CMusUiSendController::HandleAsyncEventL( aEventId ); - } - } - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::HandleAsyncEventL" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::DeleteEngineSession() - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::DeleteEngineSession" ); - - CMusUiSendController::DeleteEngineSession(); - - // Cancel transcoding - if ( iSession && iTranscodingGoing ) - { - MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingController::DeleteEngineSession:\ - Canceling transcoding..." ); - DismissWaitDialog(); - TRAP_IGNORE( MusUiDialogUtil::ShowGlobalErrorDialogL( - R_MUS_VIEW_NOTE_UNABLE_TO_CONVERT ); - iSession->CancelTranscodeL() ); - } - - delete iSession; - iSession = NULL; - - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::DeleteEngineSession" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -CMusEngMceOutSession* CMusUiClipSharingController::EngineOutSession() - { - return iSession; // Clip session is CMusEngMceOutSession - } - - -// ----------------------------------------------------------------------------- -// Handles status changes specific to sending sharing types. -// Calls base class version for status changes that are not sending specific. -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::HandleChangedStatusL( - TMusAvailabilityStatus aStatus ) - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::HandleChangedStatusL" ) - - switch( aStatus ) - { - case EMultimediaSharingAvailable: - { - MUS_LOG( "mus: [MUSUI ] EMultimediaSharingAvailable" ) - - if ( iSipRegistrationPending ) - { - iSipRegistrationPending = EFalse; - - // If fecth dialog is still open, there is no need to do anything - if ( !iFileFetchingOngoing ) - { - iSipRegistrationPending = EFalse; - // Set callback service, Call StartInvitationL when wait dialog dismissed - TRAPD( err, iSharingObserver.SetWaitDialogCallbackL( - &iWaitDialogCallback ) ); - // Dismiss pending wait note - iSharingObserver.DismissWaitDialogL(); - if ( err == KErrNotReady ) - { - StartInvitationL(); - } - } - } - break; - } - default: - { - // Not clip specific, let the base class handle - CMusUiSendController::HandleChangedStatusL( aStatus ); - break; - } - } - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::HandleChangedStatusL" ) - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::InviteL( const TDesC& aRecipient ) - { - MUS_LOG_TDESC( "mus: [MUSUI ] -> CMusUiClipSharingController::InviteL:", - aRecipient ); - - // Registration must not be pending in this phase - __ASSERT_ALWAYS( !iSipRegistrationPending, - iEventObserver.HandleError( KErrNotReady ) ); - - delete iAddress; - iAddress = NULL; - iAddress = aRecipient.AllocL(); - - - TRAPD( err, iSession->InviteL( aRecipient ) ); - MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingController::InviteL: After TRAPD" ); - - // If address is in wrong format, Manual Address Entry Dialog - // is displayed - if ( err != KErrNone ) - { - DismissWaitDialog(); - MusUiDialogUtil::ShowGlobalErrorDialogL( - R_MUS_LIVE_SHARING_VIEW_NOTE_INVITE_ERROR ); - if ( ( ++iTriedInvitations < 2 ) && ( err == KErrArgument ) ) - { - MUS_LOG( "mus: [MUSUI ] CMusUiLiveSharingController::InviteL: iTriedInvitations < 2" ); - iManualAddressTyped = ETrue; - iResourceHandler->RequestKeypadL( ETrue ); - - // If the address has to be queried again...: - iTranscode = EFalse; - - MUS_LOG_TDESC( "mus: [MUSUI ] CMusUiClipSharingController::InviteL: ", - iFileName->Des() ) - - iSendObserver.ManualAddressEntryL( *iRemoteSipAddressProposal ); - return; - } - else - { - MUS_LOG( "mus: [MUSUI ] CMusUiLiveSharingController::InviteL: ++iTriedInvitations > 1" ); - DeleteEngineSession(); - HandleExitL(); - return; - } - } - - - if( iTranscode ) - { - MUS_LOG( "mus: [MUSUI ] Starting transcode..." ); - iTranscode = EFalse; - // Show progress dialog: - iClipObserver.ShowTranscodingProgressDialogL(); - // Start transcoding - iTranscodingGoing = ETrue; - - SetFileNameL( VideoFileNameL() ); - TRAPD( err, iSession->TranscodeL( *iFileName ) ); - - if ( err != KErrNone ) - { - MUS_LOG1( "mus: [MUSUI ] Transcoding failed: %d", err ); - iTranscodingGoing = EFalse; - if ( err == KErrNotFound ) // No Video Editor Engine - { - DismissWaitDialog(); - MusUiDialogUtil::ShowGlobalErrorDialogL( - R_MUS_LIVE_SHARING_VIEW_NOTE_TRANSCODING_NOT_SUPPORTED ); - DeleteEngineSession(); - iVideoToBeSaved = EFalse; - HandleExitL(); - } - else - { - // Unable to convert clip, if transc. leaves. - // After note return back to the media gallery. - TranscodingFailed(); - } - return; - } - } - else - { - SetConnectionInitialized( ETrue ); - ShowInvitingWaitDialogL(); - } - - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::InviteL" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::HandleSliderValueChangeL( TInt aNewLevel ) - { - MUS_LOG1( "mus: [MUSUI ] -> CMusUiClipSharingController::HandleSliderValueChangeL(%d)", - aNewLevel ) - - __ASSERT_ALWAYS( !ExitOccured(), User::Leave( KErrDied ) ); - __ASSERT_ALWAYS( iConnectionEstablished, User::Leave( KErrNotReady ) ); - - iSession->SetPositionL( TTimeIntervalSeconds( aNewLevel ) ); - - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::HandleSliderValueChangeL" ) - } - - - -void CMusUiClipSharingController::OfferToolbarEventL( TInt aCommand ) - { - MUS_LOG1( "mus: [MUSUI ] -> CMusUiClipSharingController::OfferToolbarEventL [%d]", - aCommand ); - - switch ( aCommand ) - { - case EMusuiCmdToolbarPause: - { - HandleCommandL( EMusuiCmdViewPause ); - iSharingObserver.ReplaceToolbarCommand( EMusuiCmdToolbarPause, - EMusuiCmdToolbarUnPause, - ETrue ); - break; - } - case EMusuiCmdToolbarUnPause: - { - HandleCommandL( EMusuiCmdViewContinue ); - iSharingObserver.ReplaceToolbarCommand( EMusuiCmdToolbarUnPause, - EMusuiCmdToolbarPause, - ETrue ); - break; - } - case EMusuiCmdToolbarFFRev: - { - iToolbarFFRevSelected = !iToolbarFFRevSelected; - iClipObserver.SetDurationValue( iSession->DurationL().Int() ); - if ( iToolbarFFRevSelected ) - { - iWasPlayingBeforeWinding = iSession->IsPlayingL(); - PauseL(); - } - else - { - StopWindingL(); - if ( iWasPlayingBeforeWinding ) - { - PlayL(); - } - } -// iClipObserver.SetDurationVisible(); - iSharingObserver.HighlightSelectedToolbarItem( EMusuiCmdToolbarFFRev ); - break; - } - default: // Not clip specific, let the base class handle - { - CMusUiEventController::OfferToolbarEventL( aCommand ); - break; - } - } - - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::OfferToolbarEventL" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::HandleCommandL(TInt aCommand) - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::HandleCommandL" ); - - __ASSERT_ALWAYS( !ExitOccured(), User::Leave( KErrDied ) ); - - switch ( aCommand ) - { - case EMusuiCmdViewPause: - { - PauseL(); - iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconPause ); - break; - } - case EMusuiCmdViewContinue: - { - PlayL(); - iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconPlay ); - break; - } - - case EMusuiCmdViewReplay: - { - if( !MUS_NO_TOOLBAR ) - { - if (!AknLayoutUtils::PenEnabled()) - { - iEventObserver.SetToolbarVisibility( ETrue ); - } - - if ( ClipEnded() ) - { - iEventObserver.SetToolbarVisibility( ETrue ); - // Simulate press of play in toolbar - OfferToolbarEventL( EMusuiCmdToolbarUnPause ); - } - } - break; - } - - case EMusuiCmdViewShareVideo: - { - PauseL(); - // TODO: Change to video sharing - break; - } - case EMusuiCmdViewShareImage: - { - PauseL(); - // TODO: Change to image sharing - break; - } - case EMusuiCmdViewShareLive: - { - // TODO: Change to live sharing - break; - } - - case EMusuiCmdViewAudioNormal: - { - if( !MUS_NO_TOOLBAR ) - { - if (!AknLayoutUtils::PenEnabled()) - { - iEventObserver.SetToolbarVisibility( ETrue ); - } - } - iSession->UnmuteL(); - break; - } - case EMusuiCmdViewAudioMute: - { - if (!AknLayoutUtils::PenEnabled()) - { - iEventObserver.SetToolbarVisibility( ETrue ); - } - - iSession->MuteL(); - break; - } - case EMusuiCmdViewFastForward: - { - MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingController::HandleCommandL: EMusuiCmdViewFastForward" ); - if ( DoFastForwardingL( ETrue ) ) - { - iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconForward ); - iClipObserver.SetPositionValueL( iSession->PositionL().Int() ); - //iClipObserver.SetDurationVisible(); - } - MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingController::HandleCommandL: EMusuiCmdViewFastForward END" ); - break; - } - case EMusuiCmdViewFastReverse: - { - MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingController::HandleCommandL: EMusuiCmdViewFastReverse" ); - if ( DoFastRewindingL( ETrue ) ) - { - iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconRew ); - iClipObserver.SetPositionValueL( iSession->PositionL().Int() ); - //iClipObserver.SetDurationVisible(); - } - MUS_LOG( "mus: [MUSUI ] CMusUiClipSharingController::HandleCommandL: EMusuiCmdViewFastReverse END" ); - break; - } - case EMusuiCmdViewFastForwardEnd: - { - if ( DoFastForwardingL( EFalse ) ) - { - iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconPause ); - PauseL(); - } - break; - } - case EMusuiCmdViewFastReverseEnd: - { - if ( DoFastRewindingL( EFalse ) ) - { - iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconPause ); - PauseL(); - } - break; - } - default: - { - // Try more general handling - CMusUiEventController::HandleCommandL( aCommand ); - break; - } - } - - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::HandleCommandL" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::SetFileNameL( const TDesC& aFileName ) - { - iFileName = aFileName.AllocL(); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -TBool CMusUiClipSharingController::ClipEnded() - { - return iClipEnded; - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -TBool CMusUiClipSharingController::ClipMutedL() - { - return iSession->IsMutedL(); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -TBool CMusUiClipSharingController::ClipContainsAudioL() - { - if ( !iConnectionInitialized || !iSession ) - { - return EFalse; // We cannot be sure yet - } - - return iSession->ContainsAudioL(); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::CancelTranscodingL() - { - if ( iSession && iTranscodingGoing ) - { - iTranscodingGoing = EFalse; - iSession->CancelTranscodeL(); - } - iVideoToBeSaved = EFalse; - HandleExitL(); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::StopWindingL() - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::StopWindingL" ); - - if ( DoFastForwardingL( EFalse ) || DoFastRewindingL( EFalse ) ) - { - iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconPause ); - } - - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::StopWindingL" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -TBool CMusUiClipSharingController::ToolbarFFRevSelected() - { - return iToolbarFFRevSelected; - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::TranscodingProgressedL( TInt aPercentage ) - { - MUS_LOG1( "mus: [MUSUI ] -> CMusUiClipSharingController::TranscodingProgressedL ( %d )", aPercentage ); - if ( aPercentage < KMusOneHundredPercent ) - { - iTranscodingGoing = ETrue; - iClipObserver.UpdateClipTranscodingPercentageL( aPercentage ); - } - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::TranscodingProgressedL" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::TranscodingCompletedInitL() - { - MUS_LOG( - "mus: [MUSUI ] -> CMusUiClipSharingController::TranscodingCompletedInitL" ); - if ( iTranscodingGoing ) - { - iVideoToBeSaved = ETrue; - iTranscodingGoing = EFalse; - iClipObserver.CancelTranscodingDialogL(); - MusUiDialogUtil::ShowInformationDialogL( R_MUS_VIEW_NOTE_TRANSCODING_COMPLETE ); - } - MUS_LOG( - "mus: [MUSUI ] <- CMusUiClipSharingController::TranscodingCompletedInitL" ); - } - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::TranscodingCompletedFinalizeL() - { - MUS_LOG( - "mus: [MUSUI ] -> CMusUiClipSharingController::TranscodingCompletedFinalizeL" ); - SetConnectionInitialized( ETrue ); - if ( !iTranscodingGoing ) - { - ShowInvitingWaitDialogL(); - } - MUS_LOG( - "mus: [MUSUI ] <- CMusUiClipSharingController::TranscodingCompletedFinalizeL" ); - } - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -const TDesC& CMusUiClipSharingController::FormattedDurationString( - const TTimeIntervalSeconds& aDurationSeconds, - const TTimeIntervalSeconds& aPositionSeconds ) - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::FormattedDurationString" ); - _LIT( KDurationAndPositionSeparator, "/" ); - - iDurationStringBuffer.SetLength( 0 ); - TLocale locale; - _LIT( KZeroSymbol, "0" ); - - TInt durationMinutes( 0 ); - TInt durationSeconds( aDurationSeconds.Int() ); - if ( aDurationSeconds.Int() > ( KMusOneMinuteInSeconds - 1 ) ) - { - durationMinutes = (int)( aDurationSeconds.Int() / KMusOneMinuteInSeconds ); - durationSeconds = durationSeconds - ( durationMinutes * KMusOneMinuteInSeconds ); - } - - iDurationStringBuffer.AppendNum( durationMinutes ); - iDurationStringBuffer.Append( locale.TimeSeparator( KMusLocaleMinutesAndSecondsSeparator ) ); - if ( durationSeconds < KMusNumberValueTen ) - { - iDurationStringBuffer.Append( KZeroSymbol ); - } - iDurationStringBuffer.AppendNum( durationSeconds ); - iDurationStringBuffer.Append( KDurationAndPositionSeparator ); - - TInt positionMinutes( 0 ); - TInt positionSeconds( aPositionSeconds.Int() ); - if ( aPositionSeconds.Int() > ( KMusOneMinuteInSeconds - 1 ) ) - { - positionMinutes = (int)( aPositionSeconds.Int() / KMusOneMinuteInSeconds ); - positionSeconds = positionSeconds - ( positionMinutes * KMusOneMinuteInSeconds ); - } - - iDurationStringBuffer.AppendNum( positionMinutes ); - iDurationStringBuffer.Append( locale.TimeSeparator( KMusLocaleMinutesAndSecondsSeparator ) ); - if ( positionSeconds < KMusNumberValueTen ) - { - iDurationStringBuffer.Append( KZeroSymbol ); - } - iDurationStringBuffer.AppendNum( positionSeconds ); - - - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::FormattedDurationString" ); - return iDurationStringBuffer; - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::EndOfClip() - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::EndOfClip" ); - iClipEnded = ETrue; - - TRAP_IGNORE( iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconStop ) ); - if(!MUS_NO_TOOLBAR) - { - iSharingObserver.ReplaceToolbarCommand( EMusuiCmdToolbarPause, - EMusuiCmdToolbarUnPause, - ETrue ); - } - iCloseTimer->Cancel(); - iCloseTimer->After( iOperatorSpecificFunctionality ? - KMusTimeToCloseAfterClipEndedOpVariant : - KMusTimeToCloseAfterClipEndedStandard ); - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::EndOfClip" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::TranscodingNeeded() - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::TranscodingNeeded" ); - iTranscode = ETrue; - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::TranscodingNeeded" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::TranscodingProgressed( TInt aPercentage ) - { - MUS_LOG1( "mus: [MUSUI ] -> CMusUiClipSharingController::TranscodingProgressed %d", - aPercentage ); - TRAP_IGNORE( TranscodingProgressedL( aPercentage ) ) - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::TranscodingProgressed" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::TranscodingCompletedInit() - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::TranscodingCompleted" ); - TRAPD( error, TranscodingCompletedInitL() ); - if ( error != KErrNone ) - { - HandleError( error ); - } - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::TranscodingCompleted" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::TranscodingCompletedFinalize() - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::TranscodingCompleted" ); - TRAPD( error, TranscodingCompletedFinalizeL() ); - if ( error != KErrNone ) - { - HandleError( error ); - } - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::TranscodingCompleted" ); - } - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::TranscodingFailed() - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::TranscodingFailed" ); - iTranscodingGoing = EFalse; - DismissWaitDialog(); - TRAP_IGNORE( iClipObserver.CancelTranscodingDialogL(); - MusUiDialogUtil::ShowGlobalErrorModalDialogL( - R_MUS_VIEW_NOTE_UNABLE_TO_CONVERT ) ); - DeleteEngineSession(); - delete iFileName; - iFileName = NULL; - TRAPD( error, - iCallbackService->AsyncEventL( EMusUiAsyncStartMediaGallery ) ); - if ( error != KErrNone ) - { - HandleError( error ); - } - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::TranscodingFailed" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::SessionRecipientNotFound() - { - MUS_LOG1( "mus: [MUSUI ] -> CMusUiClipSharingController::SessionRecipientNotFound [%d]", iTriedInvitations ); - - // If the address has to be queried again...: - iTranscode = EFalse; - - CMusUiSendController::SessionRecipientNotFound(); - - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::SessionRecipientNotFound" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::SessionTerminated() - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::SessionTerminated" ); - DismissWaitDialog(); - if ( iTranscodingGoing ) - { - TRAP_IGNORE( MusUiDialogUtil::ShowGlobalErrorDialogL( - R_MUS_VIEW_NOTE_UNABLE_TO_CONVERT ) ); - } - - TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) ); - - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::SessionTerminated" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::SessionConnectionLost() - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::SessionConnectionLost" ); - DismissWaitDialog(); - TRAP_IGNORE( MusUiDialogUtil::ShowGlobalErrorDialogL( - R_MUS_LIVE_SHARING_VIEW_NOTE_CONNECTION_LOST ) ); - - TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) ); - - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::SessionConnectionLost" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::SessionFailed() - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::SessionFailed" ); - DismissWaitDialog(); - if ( iTranscodingGoing ) - { - TRAP_IGNORE( MusUiDialogUtil::ShowGlobalErrorDialogL( - R_MUS_VIEW_NOTE_UNABLE_TO_CONVERT ) ); - } - - TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) ); - - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::SessionFailed" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::StreamIdle() - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::StreamIdle" ); - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::StreamIdle" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::StreamStreaming() - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::StreamStreaming" ); - TRAPD( error, StreamStreamingL() ); - if ( error != KErrNone ) - { - iEventObserver.HandleError( error ); - } - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::StreamStreaming" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::SessionTimeChanged( - const TTimeIntervalSeconds& aSeconds ) - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::SessionTimeChanged" ); - TRAP_IGNORE( SessionTimeChangedL( aSeconds ) ); - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::SessionTimeChanged" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::InactivityTimeout() - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::InactivityTimeout" ); - DismissWaitDialog(); - TRAP_IGNORE( MusUiDialogUtil::ShowGlobalErrorDialogL( - R_MUS_LIVE_SHARING_VIEW_NOTE_SERVICE_N_A ) ); - - TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncHandleExit ) ); - - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::InactivityTimeout" ); - } - - -// ----------------------------------------------------------------------------- -// Called when predefined time elapsed -// after the clip had reached the end -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::TimerComplete( CMusUiActiveTimer* /*aTimer*/ ) - { - MUS_LOG( "mus: [MUSUI ] Close time elapsed from clip ending => \ - closing session" ); - TRAP_IGNORE( HandleExitL() ) - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::StreamStreamingL() - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::StreamStreamingL" ); - - if ( ConnectionEstablished() ) - { - iClipEnded = EFalse; - iCloseTimer->Cancel(); - iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconPlay ); - } - - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::StreamStreamingL" ); - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::SessionTimeChangedL( const TTimeIntervalSeconds& aSeconds ) - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::SessionTimeChangedL" ); - if ( aSeconds.Int() > -1 ) - { - TTimeIntervalSeconds clipDuration = iSession->DurationL(); - TTimeIntervalSeconds clipPosition = iSession->PositionL(); - - iSharingObserver.UpdateSessionTime( SessionTimeFormatted( aSeconds ) ); - iClipObserver.UpdateClipPositionL( clipPosition.Int(), - FormattedDurationString( - clipPosition, - clipDuration ) ); - } - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::SessionTimeChangedL" ); - } - - -// ----------------------------------------------------------------------------- -// CMusUiClipSharingController::SessionEstablished() -// ----------------------------------------------------------------------------- -// -void CMusUiClipSharingController::SessionEstablished() - { - MUS_LOG( "mus: [MUSUI ] -> CMusUiClipSharingController::SessionEstablished" ); - - TRAPD( error, iResourceHandler->RequestVideoPlayerL( ETrue ) ); - if ( error != KErrNone ) - { - MUS_LOG1( "mus: [MUSUI ] RequestVideoPlayerL leave code: %d", error ) - } - - // Duration setting visible - TRAP( error, iClipObserver.SetDurationValue( iSession->DurationL().Int() ) ) - if ( error != KErrNone ) - { - HandleError( error ); - } - iClipObserver.SetDurationVisible(); - - // General handling - CMusUiSendController::SessionEstablished(); // Base class handling - - MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingController::SessionEstablished" ); - } - - -// ----------------------------------------------------------------------------- -// CMusUiClipSharingController::DoFastForwardingL() -// ----------------------------------------------------------------------------- -// -TBool CMusUiClipSharingController::DoFastForwardingL( TBool aUseWinding ) - { - if( iFastForward ^ aUseWinding ) - { - iSession->FastForwardL( aUseWinding ); - iFastForward = aUseWinding; - return ETrue; - } - return EFalse; - } - - -// ----------------------------------------------------------------------------- -// CMusUiClipSharingController::DoFastRewindingL() -// ----------------------------------------------------------------------------- -// -TBool CMusUiClipSharingController::DoFastRewindingL( TBool aUseWinding ) - { - if( iFastRewind ^ aUseWinding ) - { - iSession->FastRewindL( aUseWinding ); - iFastRewind = aUseWinding; - return ETrue; - } - return EFalse; - } - - -// End of file -