diff -r e5618cc85d74 -r 6c158198356e javauis/mmapi_akn/baseline/src/cmmaplayer.cpp --- a/javauis/mmapi_akn/baseline/src/cmmaplayer.cpp Thu Jul 15 18:31:06 2010 +0300 +++ b/javauis/mmapi_akn/baseline/src/cmmaplayer.cpp Thu Aug 19 09:48:13 2010 +0300 @@ -18,11 +18,13 @@ // INCLUDE FILES #include #include +#include #include "cmmaplayer.h" #include "cmmaeventsource.h" #include "cmmadurationupdater.h" #include "cmmavolumecontrol.h" +#include "cmmacallstatemonitor.h" // CONSTANTS _LIT(KPanicOutOfMem, "out of memory"); @@ -43,6 +45,7 @@ delete iOOMErrorEvent; delete iDurationUpdater; delete iContentType; + delete iStateObserver; } @@ -51,7 +54,8 @@ iRepeatForever(EFalse), iRepeatCount(0), iDuration(KTimeUnknown), - iState(EUnrealized) + iState(EUnrealized), + isPausedByCall(EFalse) { } @@ -60,6 +64,10 @@ { DEBUG("MMA::CMMAPlayer::ConstructL + "); iDurationUpdater = CMMADurationUpdater::NewL(*this); + // Listen to call state changes + iStateObserver = CMMACallStateMonitor::NewL(KPSUidCtsyCallInformation, + KCTsyCallState,this); + DEBUG("MMA::CMMAPlayer::ConstructL - "); } @@ -145,7 +153,7 @@ } -void CMMAPlayer::CloseL() +EXPORT_C void CMMAPlayer::CloseL() { DEBUG("MMA::CMMAPlayer::CloseL "); PostObjectEvent(CMMAPlayerEvent::EClosed, NULL); @@ -421,7 +429,7 @@ } -void CMMAPlayer::PostActionCompleted(TInt aError) +EXPORT_C void CMMAPlayer::PostActionCompleted(TInt aError) { iActionCompletedEvent->SetEventData(aError); iEventPoster->PostEvent(iActionCompletedEvent, @@ -452,4 +460,72 @@ iControls.ResetAndDestroy(); } } + + +void CMMAPlayer::HandleCallStateEventL(TUid aUid, TInt aKey) +{ + DEBUG("CMMAPlayer::HandleCallStateEvent +"); + DEBUG_INT2( "CMMAVideoUrlPlayer::HandleCallStateEvent(TUid aUid, TInt aKey) = (%d, %d)",aUid.iUid, aKey); + + TInt callState; + iStateObserver->GetValue(callState); + DEBUG_INT( "CMMAVideoUrlPlayer::HandleCallStateEvent: state = %d", callState); + + switch (callState) + { + case EPSCTsyCallStateUninitialized: + { + DEBUG_INT( "CMMAVideoUrlPlayer::HandlePSEvent EPSCTsyCallStateUninitialized istate = %d", iState); + break; + } + + case EPSCTsyCallStateAlerting: + + case EPSCTsyCallStateRinging: + + case EPSCTsyCallStateDialling: + + case EPSCTsyCallStateAnswering: + + case EPSCTsyCallStateConnected: + { + DEBUG_INT( "CMMAVideoUrlPlayer::HandlePSEvent EPSCTsyCallStateConnected iState = %d", iState); + if(iState == CMMAPlayer::EStarted) + { + DEBUG( "CMMAVideoUrlPlayer::HandlePSEvent EPSCTsyCallStateConnected started state"); + StopL(ETrue); + isPausedByCall = ETrue; + } + break; + } + case EPSCTsyCallStateDisconnecting: + { + DEBUG_INT( "CMMAVideoUrlPlayer::HandlePSEvent EPSCTsyCallStateDisconnecting istate = %d", iState); + break; + } + case EPSCTsyCallStateNone: + { + DEBUG_INT( "CMMAVideoUrlPlayer::HandlePSEvent EPSCTsyCallStateNone istate = %d", iState); + if( (iState == CMMAPlayer::EPrefetched) && isPausedByCall ) + { + DEBUG( "CMMAVideoUrlPlayer::HandlePSEvent EPSCTsyCallStateNone Prefetched state"); + StartL(ETrue); + isPausedByCall = EFalse; + } + break; + } + + case EPSCTsyCallStateHold: + { + DEBUG_INT( "CMMAVideoUrlPlayer::HandlePSEvent EPSCTsyCallStateHold iState = %d", iState); + break; + } + default: + { + DEBUG( "CMMAVideoUrlPlayer::HandlePSEvent default"); + // Default is no pause + break; + } + } +} // END OF FILE