diff -r 8ba0afbb4637 -r a15d9966050f messagingapp/msgnotifications/msgerrorwatcher/src/msgerrorroamingobserver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingapp/msgnotifications/msgerrorwatcher/src/msgerrorroamingobserver.cpp Fri Sep 17 08:28:39 2010 +0300 @@ -0,0 +1,247 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* CMsgErrorRoamingObserver implementation file +* +*/ + + + +// INCLUDE FILES +#include +#include +#include +#include + +#include "msgerrorwatcher_p.h" +#include "msgerrorroamingobserver.h" +#include "debugtraces.h" + +// CONSTANTS + +// ================= MEMBER FUNCTIONS ======================= + +/***************************************************** +* Series 60 Customer / ETel +* Series 60 ETel API +*****************************************************/ + +// --------------------------------------------------------- +// CMsgErrorRoamingObserver::CMsgErrorRoamingObserver +// +// C++ constructor can NOT contain any code, that +// might leave. +// --------------------------------------------------------- +// +CMsgErrorRoamingObserver::CMsgErrorRoamingObserver( CMsgErrorWatcherPrivate& aWatcher ) + : CActive( CActive::EPriorityStandard ), + iWatcher( aWatcher ), + iRoaming( EFalse ), + iRegStatus( RMobilePhone::ERegistrationUnknown ), + iRequestId( 0 ) + { + QDEBUG_WRITE("CMsgErrorRoamingObserver:CMsgErrorRoamingObserver : Enter"); + CActiveScheduler::Add( this ); + QDEBUG_WRITE("CMsgErrorRoamingObserver:CMsgErrorRoamingObserver : Exit"); + } + +/***************************************************** +* Series 60 Customer / ETel +* Series 60 ETel API +*****************************************************/ + +/***************************************************** +* Series 60 Customer / TSY +* Needs customer TSY implementation +*****************************************************/ + +// --------------------------------------------------------- +// CMsgErrorRoamingObserver::ConstructL() +// +// Symbian OS default constructor can leave. +// --------------------------------------------------------- +// +void CMsgErrorRoamingObserver::ConstructL() + { + QDEBUG_WRITE("CMsgErrorRoamingObserver:ConstructL : Enter"); + User::LeaveIfError( iETelServer.Connect() ); + User::LeaveIfError( iETelServer.LoadPhoneModule( KMmTsyModuleName ) ); + User::LeaveIfError( iMobilePhone.Open( iETelServer, KMmTsyPhoneName ) ); + iMobilePhone.GetNetworkRegistrationStatus( iStatus, iRegStatus ); + iRequestId = EMobilePhoneGetNetworkRegistrationStatus; + SetActive(); + QDEBUG_WRITE("CMsgErrorRoamingObserver:ConstructL : Exit"); + } + +// --------------------------------------------------------- +// CMsgErrorRoamingObserver::NewL +// +// Two-phased constructor. +// --------------------------------------------------------- +// +CMsgErrorRoamingObserver* CMsgErrorRoamingObserver::NewL( CMsgErrorWatcherPrivate& aWatcher ) + { + QDEBUG_WRITE("CMsgErrorRoamingObserver:NewL : Enter"); + CMsgErrorRoamingObserver* self = new ( ELeave ) + CMsgErrorRoamingObserver( aWatcher ); + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + QDEBUG_WRITE("CMsgErrorRoamingObserver:NewL : Exit"); + + return self; + } + + +/***************************************************** +* Series 60 Customer / ETel +* Series 60 ETel API +*****************************************************/ + +/***************************************************** +* Series 60 Customer / TSY +* Needs customer TSY implementation +*****************************************************/ + +// --------------------------------------------------------- +// CMsgErrorRoamingObserver::~CMsgErrorRoamingObserver +// +// Destructor +// --------------------------------------------------------- +// +CMsgErrorRoamingObserver::~CMsgErrorRoamingObserver() + { + QDEBUG_WRITE("CMsgErrorRoamingObserver:~CMsgErrorRoamingObserver : Enter"); + Cancel(); + iMobilePhone.Close(); + iETelServer.UnloadPhoneModule( KMmTsyModuleName ); + iETelServer.Close(); + QDEBUG_WRITE("CMsgErrorRoamingObserver:~CMsgErrorRoamingObserver : Exit"); + } + +/***************************************************** +* Series 60 Customer / ETel +* Series 60 ETel API +*****************************************************/ + +// --------------------------------------------------------- +// CMsgErrorRoamingObserver::UpdateRoamingStatusL +// +// Checks whether roaming status has actually changed +// --------------------------------------------------------- +// +void CMsgErrorRoamingObserver::UpdateRoamingStatusL() + { + QDEBUG_WRITE("CMsgErrorRoamingObserver:UpdateRoamingStatusL : Enter"); + QDEBUG_WRITE_FORMAT("iRoaming: ", iRoaming); + QDEBUG_WRITE_FORMAT("iRegStatus: ", iRegStatus); + + TBool changed = EFalse; + if ( iRoaming && iRegStatus == RMobilePhone::ERegisteredOnHomeNetwork ) + { + iRoaming = EFalse; + changed = ETrue; + } + else if ( !iRoaming && iRegStatus == RMobilePhone::ERegisteredRoaming ) + { + iRoaming = ETrue; + changed = ETrue; + } + else + { + //Nothing to do + } + QDEBUG_WRITE_FORMAT("changed: ", changed); + if ( changed ) + { + //Inform watcher only when roaming status has changed + iWatcher.HandleRoamingEventL( iRoaming ); + } + QDEBUG_WRITE("CMsgErrorRoamingObserver:UpdateRoamingStatusL : Exit"); + } + +/***************************************************** +* Series 60 Customer / ETel +* Series 60 ETel API +*****************************************************/ + +// --------------------------------------------------------- +// CMsgErrorRoamingObserver::Start +// +// Starts the active object +// --------------------------------------------------------- +// +void CMsgErrorRoamingObserver::Start() + { + QDEBUG_WRITE("CMsgErrorRoamingObserver:Start : Enter"); + if ( !IsActive() ) + { + iMobilePhone.NotifyNetworkRegistrationStatusChange( iStatus, iRegStatus ); + iRequestId = EMobilePhoneNotifyNetworkRegistrationStatusChange; + SetActive(); + } + QDEBUG_WRITE("CMsgErrorRoamingObserver:Start : Exit"); + } + +/***************************************************** +* Series 60 Customer / ETel +* Series 60 ETel API +*****************************************************/ + +// --------------------------------------------------------- +// CMsgErrorRoamingObserver::DoCancel +// +// From active object framework +// --------------------------------------------------------- +// +void CMsgErrorRoamingObserver::DoCancel() + { + QDEBUG_WRITE("CMsgErrorRoamingObserver:DoCancel : Enter"); + if ( iRequestId ) + { + iMobilePhone.CancelAsyncRequest( iRequestId ); + iRequestId = 0; + } + QDEBUG_WRITE("CMsgErrorRoamingObserver:DoCancel : Exit"); + } + +/***************************************************** +* Series 60 Customer / ETel +* Series 60 ETel API +*****************************************************/ + +// --------------------------------------------------------- +// CMsgErrorRoamingObserver::RunL +// +// From active object framework +// --------------------------------------------------------- +// +void CMsgErrorRoamingObserver::RunL() + { + QDEBUG_WRITE("CMsgErrorRoamingObserver:RunL : Enter"); + iRequestId = 0; + TInt status = iStatus.Int(); + if ( status < 0 ) + { + iRegStatus = RMobilePhone::ERegistrationUnknown; + } + TRAP_IGNORE( UpdateRoamingStatusL() ); + Start(); + QDEBUG_WRITE("CMsgErrorRoamingObserver:RunL : Exit"); + } + +// ================= OTHER EXPORTED FUNCTIONS ============== + +// End of File