diff -r ebdbd102c78a -r 2eacb6118286 phoneengine/phonemodel/src/tperemotepartyinfomediatorupdater.cpp --- a/phoneengine/phonemodel/src/tperemotepartyinfomediatorupdater.cpp Fri May 14 15:51:57 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,209 +0,0 @@ -/* -* Copyright (c) 2009 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: Updates remote party information via mediator. -* -*/ - -#include "tperemotepartyinfomediatorupdater.h" -#include "mpemediator.h" -#include "mpedatastore.h" - -#include -#include - -// --------------------------------------------------------------------------- -// C++ constructor -// --------------------------------------------------------------------------- -// -TPERemotePartyInfoMediatorUpdater::TPERemotePartyInfoMediatorUpdater( - MPEMediator& aMediator, - MPEDataStore& aDataStore ) - : iMediator( aMediator ), - iDataStore( aDataStore ) - { - } - -// --------------------------------------------------------------------------- -// Sends mediator event with remote info. -// --------------------------------------------------------------------------- -// -void TPERemotePartyInfoMediatorUpdater::Update() - { - HBufC8* data = NULL; - TRAPD( err, data = TakeSnapshotOfRemotePartyInfosL() ); - if ( !err ) - { - iMediator.RaiseEvent( - KCatCallRemotePartyInformation, - EChangesInRemotePartyInformation, - *data ); - } - delete data; - - } - -// --------------------------------------------------------------------------- -// From base class MMediatorCommandObserver -// --------------------------------------------------------------------------- -// -void TPERemotePartyInfoMediatorUpdater::MediatorCommandL( - TUid aDomain, - TUid aCategory, - TInt aCommandId, - TVersion /*aVersion*/, - const TDesC8& /*aData*/ ) - { - if ( aDomain == KMediatorTelephonyDomain && - aCategory == KCatCallRemotePartyInformation && - aCommandId == EGetCallRemotePartyInformation ) - { - HBufC8* data = TakeSnapshotOfRemotePartyInfosL(); - - iMediator.SendResponse( - KCatCallRemotePartyInformation, - EGetCallRemotePartyInformation, - *data ); - - delete data; - } - } - -// --------------------------------------------------------------------------- -// From base class MMediatorCommandObserver -// --------------------------------------------------------------------------- -// -void TPERemotePartyInfoMediatorUpdater::CancelMediatorCommand( - TUid /*aDomain*/, - TUid /*aCategory*/, - TInt /*aCommandId*/ ) - { - } - -// --------------------------------------------------------------------------- -// Takes remote party information from all calls and packs them to -// descriptor. -// --------------------------------------------------------------------------- -// -HBufC8* TPERemotePartyInfoMediatorUpdater::TakeSnapshotOfRemotePartyInfosL() - { - CCallRemotePartyInfos* infos = CCallRemotePartyInfos::NewLC(); - for ( TInt callId = 0; callId < KPEMaximumNumberOfCalls; callId++ ) - { - const TInt callIndex = iDataStore.CallIndex( callId ); - if ( callIndex != KPEInvalidCallIndex ) - { - CCallRemotePartyInfo* info = CCallRemotePartyInfo::NewLC(); - info->SetCallIndex( callIndex ); - - if ( iDataStore.RemoteColpNumber( callId ).Length() ) - { - info->SetAddressL( iDataStore.RemoteColpNumber( callId ) ); - } - else - { - info->SetAddressL( iDataStore.RemotePhoneNumber( callId ) ); - } - - info->SetMatchedNameL( iDataStore.RemoteName( callId ) ); - info->SetCompanyNameL( iDataStore.RemoteCompanyName( callId ) ); - info->SetNameFromNetworkL( iDataStore.RemotePartyName( callId ) ); - - if ( iDataStore.CallOrigin( callId ) == EPECallOriginSAT ) - { - info->SetSATCall( ETrue ); - } - - info->SetRemoteIdentity( ResolveRemoteIdentity( callId ) ); - - infos->AddL( info ); - CleanupStack::Pop( info ); - } - } - HBufC8* data = infos->ExternalizeL(); - CleanupStack::PopAndDestroy( infos ); - return data; - } - -// --------------------------------------------------------------------------- -// Sets remote party identity. -// --------------------------------------------------------------------------- -// -MCallRemotePartyInfo::TRemoteIdentityStatus - TPERemotePartyInfoMediatorUpdater::ResolveRemoteIdentity( const TInt aCallId ) - { - MCallRemotePartyInfo::TRemoteIdentityStatus remoteIdentity; - if ( iDataStore.CallDirection( aCallId ) == RMobileCall::EMobileOriginated ) - { - // In MO case Remote party address is always available - remoteIdentity = MCallRemotePartyInfo::ERemoteIdentityAvailable; - } - else - { - remoteIdentity = ConvertRemoteIdentity( aCallId ); - } - - return remoteIdentity; - } - -// --------------------------------------------------------------------------- -// Converts remote party identity. -// --------------------------------------------------------------------------- -// -MCallRemotePartyInfo::TRemoteIdentityStatus - TPERemotePartyInfoMediatorUpdater::ConvertRemoteIdentity( const TInt aCallId ) - { - RMobileCall::TMobileCallRemoteIdentityStatus etelRemoteIdentity = iDataStore.RemoteIdentity( aCallId ); - MCallRemotePartyInfo::TRemoteIdentityStatus remoteIdentity; - - switch ( etelRemoteIdentity ) - { - case RMobileCall::ERemoteIdentityUnknown: - case RMobileCall::ERemoteIdentityAvailableNoCliUnavailable: - { - remoteIdentity = MCallRemotePartyInfo::ERemoteIdentityUnknown; - } - break; - case RMobileCall::ERemoteIdentityAvailable: - { - remoteIdentity = MCallRemotePartyInfo::ERemoteIdentityAvailable; - } - break; - case RMobileCall::ERemoteIdentitySuppressed: - case RMobileCall::ERemoteIdentityAvailableNoCliRejectedByUser: - { - remoteIdentity = MCallRemotePartyInfo::ERemoteIdentityRejectedByUser; - } - break; - case RMobileCall::ERemoteIdentityAvailableNoCliInteractionWithOtherService: - case RMobileCall::ERemoteIdentityUnavailableNoCliInteractionWithOtherService: - { - remoteIdentity = MCallRemotePartyInfo::ERemoteIdentityNoCliInteractionWithOtherService; - } - break; - case RMobileCall::ERemoteIdentityAvailableNoCliCoinOrPayphone: - case RMobileCall::ERemoteIdentityUnavailableNoCliCoinOrPayphone: - { - remoteIdentity = MCallRemotePartyInfo::ERemoteIdentityNoCliCoinOrPayphone; - } - break; - default: - { - TEFLOGSTRING( KTAERROR, "TPERemotePartyInfoMediatorUpdater::ConvertRemoteIdentity, UNKNOWN REMOTE IDENTITY!" ); - remoteIdentity = MCallRemotePartyInfo::ERemoteIdentityUnknown; - break; - } - } - return remoteIdentity; - } -