--- 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