diff -r 7d48bed6ce0c -r 987c9837762f phonecmdhandler/phonecmdhnlr/src/PhoneHandlerCallState.cpp --- a/phonecmdhandler/phonecmdhnlr/src/PhoneHandlerCallState.cpp Tue Aug 31 15:45:17 2010 +0300 +++ b/phonecmdhandler/phonecmdhnlr/src/PhoneHandlerCallState.cpp Wed Sep 01 12:15:03 2010 +0100 @@ -17,11 +17,16 @@ // INCLUDE FILES -#include "phonehandlercallstate.h" -#include "phonehandlercontrol.h" -#include "phonehandlerdebug.h" +#include "PhoneHandlerCallState.h" +#include "PhoneHandlerControl.h" +#include "PhoneHandlerDebug.h" #include +#include +#include +#include + + // EXTERNAL DATA STRUCTURES // EXTERNAL FUNCTION PROTOTYPES @@ -50,11 +55,9 @@ // ----------------------------------------------------------------------------- // CPhoneHandlerCallState::CPhoneHandlerCallState( CPhoneHandlerControl& aControl ) -: CActive(CActive::EPriorityStandard), - iControl( aControl ) - { - CActiveScheduler::Add(this); - } +: iControl( aControl ) + { + } // ----------------------------------------------------------------------------- // CPhoneHandlerCallState::ConstructL @@ -62,94 +65,70 @@ // ----------------------------------------------------------------------------- // void CPhoneHandlerCallState::ConstructL() - { - 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" ); - } + { + 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" ); + } // ----------------------------------------------------------------------------- // 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" ); - - Cancel(); - iProperty.Cancel(); - iProperty.Close(); - - COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::~CPhoneHandlerCallState() end" ); + { + 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() ); } // ----------------------------------------------------------------------------- -// CPhoneHandlerCallState::RunL() -// Informs caller of an asynchronous request that it has been completed. -// (other items were commented in a header). +// CPhoneHandlerCallState::CallInformationChangedL // ----------------------------------------------------------------------------- // -void CPhoneHandlerCallState::RunL() +void CPhoneHandlerCallState::CallInformationChangedL() { - 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(); + CCallInfoIter& iter = iInfo->GetCallsL(); + for( iter.First(); !iter.IsDone(); iter.Next() ) + { + const MCall* call ( &iter.Current() ); + if ( call ) + { + iControl.NotifyCallStateL( call ); + } + } } -// ----------------------------------------------------------------------------- -// 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