javauis/mmapi_akn/baseline/src/cmmaplayer.cpp
branchRCL_3
changeset 60 6c158198356e
parent 46 4376525cdefb
--- 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 <jdebug.h>
 #include <JniEnvWrapper.h>
+#include <ctsydomainpskeys.h>
 
 #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