diff -r 000000000000 -r e686773b3f54 phonebookengines/VirtualPhonebook/VPbkSimStoreService/src/CVPbkSimPhone.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookengines/VirtualPhonebook/VPbkSimStoreService/src/CVPbkSimPhone.cpp Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,198 @@ +/* +* Copyright (c) 2005-2007 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: +* +*/ + + +// INCLUDES +#include "CVPbkSimPhone.h" + +#include +#include +#include + +// MEMBER FUNCTIONS +CVPbkSimPhone::CVPbkSimPhone() +: CActive(CActive::EPriorityStandard) + { + } + +void CVPbkSimPhone::ConstructL() + { + CActiveScheduler::Add(this); + } + +CVPbkSimPhone* CVPbkSimPhone::NewL() + { + CVPbkSimPhone* self = new (ELeave)CVPbkSimPhone(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +CVPbkSimPhone::~CVPbkSimPhone() + { + Cancel(); + iObservers.Close(); + iSimStore.Close(); + } + +// ----------------------------------------------------------------------------- +// CVPbkSimPhone::AddObserverL +// ----------------------------------------------------------------------------- +// +void CVPbkSimPhone::AddObserverL( MVPbkSimPhoneObserver& aObserver ) + { + if ( iObservers.Find( &aObserver ) == KErrNotFound ) + { + iObservers.AppendL( &aObserver ); + } + } + +// ----------------------------------------------------------------------------- +// CVPbkSimPhone::RemoveObserver +// ----------------------------------------------------------------------------- +// +void CVPbkSimPhone::RemoveObserver( MVPbkSimPhoneObserver& aObserver ) + { + TInt index = iObservers.Find( &aObserver ); + if ( index != KErrNotFound ) + { + iObservers.Remove( index ); + } + } + +void CVPbkSimPhone::RunL() + { + if (iStatus.Int() == KErrNone) + { + switch(iEventData.iEvent) + { + case EVPbkSimPhoneOpen: + { + VPbkSimStoreImpl::SendObserverMessageR( + iObservers, + &MVPbkSimPhoneObserver::PhoneOpened, + *this ); + break; + } + case EVPbkSimPhoneServiceTableUpdated: + { + VPbkSimStoreImpl::SendObserverMessageR( + iObservers, + &MVPbkSimPhoneObserver::ServiceTableUpdated, + iEventData.iData ); + break; + } + case EVPbkSimPhoneFdnStatusChanged: + { + VPbkSimStoreImpl::SendObserverMessageR( + iObservers, + &MVPbkSimPhoneObserver::FixedDiallingStatusChanged, + iEventData.iData ); + break; + } + case EVPbkSimPhoneError: // FALLTHROUGH + default: + { + // iEventData.iData contains the error id + // iEventData.iOpData contains the error value + MVPbkSimPhoneObserver::TErrorIdentifier id = + static_cast( + iEventData.iData ); + VPbkSimStoreImpl::SendObserverMessageRVV( + iObservers, + &MVPbkSimPhoneObserver::PhoneError, + *this, + id, + iEventData.iOpData); + break; + } + } + } + else + { + VPbkSimStoreImpl::SendObserverMessageRVV( + iObservers, + &MVPbkSimPhoneObserver::PhoneError, + *this, + MVPbkSimPhoneObserver::ESystem, + iStatus.Int() ); + } + + // start listening events + iSimStore.ListenToStoreEvents( iStatus, iEventData ); + SetActive(); + } + +TInt CVPbkSimPhone::RunError(TInt aError) + { + VPbkSimStoreImpl::SendObserverMessageRVV( + iObservers, + &MVPbkSimPhoneObserver::PhoneError, + *this, + MVPbkSimPhoneObserver::ESystem, + aError ); + + return KErrNone; + } + +void CVPbkSimPhone::DoCancel() + { + iSimStore.CancelAsyncRequest( EVPbkSimSrvStoreEventNotification ); + } + +void CVPbkSimPhone::OpenL( MVPbkSimPhoneObserver& aObserver ) + { + AddObserverL(aObserver); + if ( iSimStore.Handle() ) + { + User::Leave( KErrInUse ); + } + // Connect to sim store server + iSimStore.ConnectToServerL(); + // Start listening to phone events + iSimStore.ListenToStoreEvents( iStatus, iEventData ); + // Open the phone + iSimStore.OpenPhoneL(); + SetActive(); + } + +void CVPbkSimPhone::Close( MVPbkSimPhoneObserver& aObserver ) + { + if ( iSimStore.Handle() ) + { + iSimStore.ClosePhone(); + } + RemoveObserver(aObserver); + } + +TBool CVPbkSimPhone::USimAccessSupported() const + { + return iSimStore.USimAccessSupported(); + } + +TUint32 CVPbkSimPhone::ServiceTable() const + { + return iSimStore.ServiceTable(); + } + +MVPbkSimPhone::TFDNStatus CVPbkSimPhone::FixedDialingStatus() const + { + return iSimStore.FixedDialingStatus(); + } + +// End of file