phonecmdhandler/phonecmdhnlr/src/PhoneHandlerCallState.cpp
branchRCL_3
changeset 19 7d48bed6ce0c
parent 9 71e7b994dff4
child 20 987c9837762f
--- a/phonecmdhandler/phonecmdhnlr/src/PhoneHandlerCallState.cpp	Thu Aug 19 10:28:14 2010 +0300
+++ b/phonecmdhandler/phonecmdhnlr/src/PhoneHandlerCallState.cpp	Tue Aug 31 15:45:17 2010 +0300
@@ -17,16 +17,11 @@
 
 
 // INCLUDE FILES
-#include "PhoneHandlerCallState.h"
-#include "PhoneHandlerControl.h"
-#include "PhoneHandlerDebug.h"
+#include "phonehandlercallstate.h" 
+#include "phonehandlercontrol.h" 
+#include "phonehandlerdebug.h" 
 #include <ctsydomainpskeys.h>
 
-#include <ccallinformation.h>
-#include <mcall.h>
-#include <ccallinfoiter.h>
-
-
 // EXTERNAL DATA STRUCTURES
 
 // EXTERNAL FUNCTION PROTOTYPES  
@@ -55,9 +50,11 @@
 // -----------------------------------------------------------------------------
 //
 CPhoneHandlerCallState::CPhoneHandlerCallState( CPhoneHandlerControl& aControl )
-:	iControl( aControl )
-	{
-	} 
+:   CActive(CActive::EPriorityStandard),
+    iControl( aControl )
+    {
+    CActiveScheduler::Add(this);
+    } 
 
 // -----------------------------------------------------------------------------
 // CPhoneHandlerCallState::ConstructL
@@ -65,70 +62,94 @@
 // -----------------------------------------------------------------------------
 //
 void CPhoneHandlerCallState::ConstructL()
-	{
-	COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::ConstructL() start" );
-	
-	// Allows CPhoneHandlerCallState to start to listen call states.
-	iInfo = CCallInformation::NewL();
-	iInfo->NotifyCallInformationChanges(*this);
-	
-	COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::ConstructL() end" );
-	}
+    {
+    COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::ConstructL() start" );
+    
+    // Allows CPhoneHandlerCallState to start to listen S60 call states.
+    User::LeaveIfError( 
+        iProperty.Attach( KPSUidCtsyCallInformation, KCTsyCallState ) );
+        
+    Subscribe();
+    
+    COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::ConstructL() end" );
+    }
 
 // -----------------------------------------------------------------------------
 // CPhoneHandlerCallState::NewL
 // Two-phased constructor.
 // -----------------------------------------------------------------------------
 CPhoneHandlerCallState* CPhoneHandlerCallState::NewL( CPhoneHandlerControl& aControl )
-	{
-	COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::NewL()" );
-	
-	CPhoneHandlerCallState* self = new(ELeave) CPhoneHandlerCallState( aControl );
-	CleanupStack::PushL( self );
-	self->ConstructL();
-	CleanupStack::Pop( self );
-	
-	return self;
-	}
+    {
+    COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::NewL()" );
+    
+    CPhoneHandlerCallState* self = new(ELeave) CPhoneHandlerCallState( aControl );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    
+    return self;
+    }
 
 // Destructor
 CPhoneHandlerCallState::~CPhoneHandlerCallState()
-	{
-	COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::~CPhoneHandlerCallState() start" );
-	    
-    if ( iInfo )
-    	{
-    	iInfo->CancelNotification();
-    	delete iInfo;
-    	}    
-
-	COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::~CPhoneHandlerCallState() end" );
-	}
-
-// -----------------------------------------------------------------------------
-// CPhoneHandlerCallState::CallInformationChanged
-// -----------------------------------------------------------------------------
-//
-void CPhoneHandlerCallState::CallInformationChanged()
-	{
-    TRAP_IGNORE( CallInformationChangedL() );
+    {
+    COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::~CPhoneHandlerCallState() start" );
+    
+    Cancel();
+    iProperty.Cancel();
+    iProperty.Close();
+    
+    COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::~CPhoneHandlerCallState() end" );
     }
 
 // -----------------------------------------------------------------------------
-// CPhoneHandlerCallState::CallInformationChangedL
+// CPhoneHandlerCallState::RunL()
+// Informs caller of an asynchronous request that it has been completed.
+// (other items were commented in a header).
 // -----------------------------------------------------------------------------
 //
-void CPhoneHandlerCallState::CallInformationChangedL()
+void CPhoneHandlerCallState::RunL()
     {
-     CCallInfoIter& iter = iInfo->GetCallsL();    
-     for( iter.First(); !iter.IsDone(); iter.Next() )
-         {
-         const MCall* call ( &iter.Current() );
-         if ( call )
-        	 {
-        	 iControl.NotifyCallStateL( call );
-        	 }
-         }
+    COM_TRACE_1( "[PHONECMDHANDLER] CPhoneHandlerCallState::RunL() - return code = %d", iStatus.Int() );
+        
+    TInt state( 0 );
+    iProperty.Get( state );
+    
+    COM_TRACE_1( "[PHONECMDHANDLER] CPhoneHandlerCallState - KTelephonyCallState = %d", state );
+        
+    if( iStatus.Int() == KErrNone )
+        {
+        iControl.NotifyCallState( state );
+        }
+        
+    Subscribe();
     }
 
+// -----------------------------------------------------------------------------
+// CPhoneHandlerCallState::DoCancel
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CPhoneHandlerCallState::DoCancel()
+    {
+    COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::DoCancel()" );
+    
+    iProperty.Cancel();
+    }
+
+// -----------------------------------------------------------------------------
+// CPhoneHandlerCallState::Subscribe
+// Start to listen changes in call state.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CPhoneHandlerCallState::Subscribe()
+    {
+    COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::Subscribe()" );
+    
+    iProperty.Subscribe( iStatus );
+    SetActive();
+    }
+
+//
 // End of file