diff -r 000000000000 -r dd21522fd290 browserutilities/browsertelservice/src/BrowserTelServiceEtelWatcher.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browserutilities/browsertelservice/src/BrowserTelServiceEtelWatcher.cpp Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,167 @@ +/* +* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* Definition of class CBrowserTelServiceEtelWatcher. +* +* +*/ + + +//INCLUDE FILES +// Const file name for make call +#include + +#include "BrowserTelServiceEtelWatcher.h" + + + +// ================= MEMBER FUNCTIONS ======================= + +//----------------------------------------------------------------------------- +// CBrowserTelServiceEtelWatcher::NewLC() +//----------------------------------------------------------------------------- +// +CBrowserTelServiceEtelWatcher* CBrowserTelServiceEtelWatcher::NewLC( + MBrowserTelServiceEtelWatcherObserver* aObserver ) + { + CBrowserTelServiceEtelWatcher* self = + new( ELeave ) CBrowserTelServiceEtelWatcher; + CleanupStack::PushL( self ); + self->ConstructL( aObserver ); + return self; + } + +//----------------------------------------------------------------------------- +// CBrowserTelServiceEtelWatcher::NewL() +//----------------------------------------------------------------------------- +// +CBrowserTelServiceEtelWatcher* CBrowserTelServiceEtelWatcher::NewL( + MBrowserTelServiceEtelWatcherObserver* aObserver ) + { + CBrowserTelServiceEtelWatcher* self = + CBrowserTelServiceEtelWatcher::NewLC( aObserver ); + CleanupStack::Pop(); + return self; + } + +//----------------------------------------------------------------------------- +// CBrowserTelServiceEtelWatcher::ConstructL() +//----------------------------------------------------------------------------- +// +void CBrowserTelServiceEtelWatcher::ConstructL( + MBrowserTelServiceEtelWatcherObserver* aObserver ) + { + iObserver = aObserver; + +#ifndef __WINS__ + RTelServer::TPhoneInfo info; + RPhone::TLineInfo lineInfo; + + // Connect to the telephony server and load the TSY. + User::LeaveIfError( iRTelServer.Connect() ); + User::LeaveIfError( iRTelServer.LoadPhoneModule( KMmTsyModuleName ) ); + // Get the details for the first (and only) phone. + User::LeaveIfError( iRTelServer.GetPhoneInfo( 0, info ) ); + // Open the phone. + User::LeaveIfError( iRPhone.Open( iRTelServer, info.iName ) ); + // Get the information for the voice line, line 0. + User::LeaveIfError( iRPhone.GetLineInfo( 0, lineInfo ) ); + // Open the line. iName will now be "VoiceLine1". + User::LeaveIfError( iRLine.Open( iRPhone, lineInfo.iName ) ); + + CActiveScheduler::Add( this ); +#endif // __WINS__ + } + +//----------------------------------------------------------------------------- +// Default C++ constructor +//----------------------------------------------------------------------------- +// +CBrowserTelServiceEtelWatcher::CBrowserTelServiceEtelWatcher() : + CActive( EPriorityNormal ) + { + } + +//----------------------------------------------------------------------------- +// Destructor +//----------------------------------------------------------------------------- +// +CBrowserTelServiceEtelWatcher::~CBrowserTelServiceEtelWatcher() + { +#ifndef __WINS__ + // Cancle current activity + Cancel(); + + // Close all open sessions + iRLine.Close(); + iRPhone.Close(); + iRTelServer.Close(); +#endif // __WINS__ + } + +//----------------------------------------------------------------------------- +// CBrowserTelServiceEtelWatcher::NotifyOnEtelStatusChangeL() +//----------------------------------------------------------------------------- +// +void CBrowserTelServiceEtelWatcher::NotifyOnEtelStatusChangeL() + { +#ifndef __WINS__ + if( !IsActive() ) + { + // Request notification about a change in line status + iRLine.NotifyStatusChange( iStatus,iCallStatus ); + SetActive(); + } +#endif + } + +//----------------------------------------------------------------------------- +// CBrowserTelServiceEtelWatcher::NotifyOnEtelStatusChangeCancel() +//----------------------------------------------------------------------------- +// +void CBrowserTelServiceEtelWatcher::NotifyOnEtelStatusChangeCancel() + { +#ifndef __WINS__ + Cancel(); +#endif + } + +//----------------------------------------------------------------------------- +// CBrowserTelServiceEtelWatcher::RunL() +//----------------------------------------------------------------------------- +// +void CBrowserTelServiceEtelWatcher::RunL() + { + if( iStatus.Int() == KErrNone ) + { + if( iCallStatus == RCall::EStatusIdle ) + { // We are only interested in idle state, which occures + // when the call has been hung up + iObserver->BrowserTelServiceEtelWatcherEvent( iCallStatus ); + } + + // Renew the notification request, + iRLine.NotifyStatusChange( iStatus,iCallStatus ); + SetActive(); + } + } + +//----------------------------------------------------------------------------- +// CBrowserTelServiceEtelWatcher::DoCancel() +//----------------------------------------------------------------------------- +// +void CBrowserTelServiceEtelWatcher::DoCancel() + { + iRLine.NotifyStatusChangeCancel(); + }