--- a/callcontinuity/vccclientprovisioningadapter/src/wpvccadapter.cpp Thu Aug 19 09:45:22 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,818 +0,0 @@
-/*
-* Copyright (c) 2006-2008 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: Handles Vcc settings in provisioning.
-*
-*/
-
-
-
-#include <e32base.h>
-#include <commdb.h>
-#include <CWPAdapter.h>
-#include <CWPCharacteristic.h>
-#include <CWPParameter.h>
-#include <utf.h>
-#include <wpvccadapterrsc.rsg>
-#include <crcseprofileentry.h>
-#include <crcseprofileregistry.h>
-#include <WPAdapterUtil.h>
-
-#include "wpvccadapter.h"
-#include "rubydebug.h"
-#include "vccspsettings.h"
-#include "wpvccadapteruids.h"
-#include <cch.h>
-#include "vccsettingsreader.h"
-#include <sipmanagedprofileregistry.h>
-#include <sipprofile.h>
-#include <spsettings.h>
-#include <spproperty.h>
-#include <cmmanagerext.h>
-#include <cmdestinationext.h>
-
-/** Name of *this adapter */
-_LIT( KVccResourceFileNameWithoutSuffix, "wpvccadapterrsc" );
-
-/** Provisioning file format specific settings */
-// OMA Experimental values, registered by OMNA only for advisory purposes
-// range 0x4000 to 0x1FFFFF
-_LIT( KVccAppID, "w9054" );
-_LIT8( KVoIPAppID8, "w9013" ); // OMA CP registration document for VoIP
-_LIT( KVdi, "VDI" ); //
-_LIT( KVdn, "VDN" ); //
-_LIT( KPreferredDomain, "PREF-DOMAIN" ); //
-_LIT( KImmediateDT, "IMMEDIATE-DOMAIN-TRANSFER" ); //
-_LIT( KDtCsToPsAllowed, "DT-CS-TO-PS-ALLOWED" ); //
-_LIT( KDtPsToCsAllowed, "DT-PS-TO-CS-ALLOWED" ); //
-_LIT( KDtHeldwaitingCallsAllowed, "DT-HELD-WAITING-CALLS-ALLOWED" ); //
-
-_LIT( KWlanHOTreshold, "WLAN-HO-THRESHOLD-VALUE" );
-_LIT( KWlanHOHysteresis, "WLAN-HO-HYSTERESIS-VALUE" );
-_LIT( KWlanHysteresisTimerLow, "WLAN-HYSTERESIS-TIMER-LOW" );
-_LIT( KWlanHysteresisTimerHigh, "WLAN-HYSTERESIS-TIMER-HIGH" );
-
-_LIT( KCSHOTreshold, "CS-HO-THRESHOLD-VALUE" );
-_LIT( KCSHOHysteresis, "CS-HO-HYSTERESIS-VALUE" );
-_LIT( KCSHysteresisTimerLow, "CS-HYSTERESIS-TIMER-LOW" );
-_LIT( KCSHysteresisTimerHigh, "CS-HYSTERESIS-TIMER-HIGH" );
-_LIT( KDtAllowedWhenCsOriginated, "DT-ALLOWED-WHEN-CS-ORIGINATED" );
-
-_LIT16( KDefaultName, "VCC application settings" );
-
-
-// -----------------------------------------------------------------------------
-// ResetAndDestroyEntries
-// -----------------------------------------------------------------------------
-//
-void ResetAndDestroyProfileEntries( TAny* anArray )
- {
-
- RPointerArray<CRCSEProfileEntry>* array =
- reinterpret_cast<RPointerArray<CRCSEProfileEntry>*>( anArray );
-
- if (array)
- {
- array->ResetAndDestroy();
- array->Close();
- }
- }
-
-// ======== MEMBER FUNCTIONS ========
-// ---------------------------------------------------------------------------
-// C++ constructor
-// ---------------------------------------------------------------------------
-//
-CWPVccAdapter::CWPVccAdapter() : CWPAdapter()
- {
- }
-
-// ---------------------------------------------------------------------------
-// Symbian 2nd phase constructor
-// ---------------------------------------------------------------------------
-//
-void CWPVccAdapter::ConstructL()
- {
- RUBY_DEBUG_BLOCKL( "CWPVccAdapter::ConstructL" );
-
- TFileName fileName;
-
- // ReadHBufCL needs the path where the resource file is.
- // Actually, the WPAdapterUtil only uses the drive part of the string
- // (which is normally "z:")
- // The resource file name must not contain the suffix since it is
- // added.
-
- Dll::FileName( fileName );
-
- iTitle = WPAdapterUtil::ReadHBufCL(
- fileName, KVccResourceFileNameWithoutSuffix, R_QTN_SM_HEAD_VCC );
- }
-
-// ---------------------------------------------------------------------------
-// Constructor
-// ---------------------------------------------------------------------------
-//
-CWPVccAdapter* CWPVccAdapter::NewL()
- {
- RUBY_DEBUG_BLOCKL( "CWPVccAdapter::NewL" );
- CWPVccAdapter* self = new( ELeave ) CWPVccAdapter;
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CWPVccAdapter::~CWPVccAdapter()
- {
- RUBY_DEBUG0( "CWPVccAdapter::~CWPVccAdapter() - ENTER" );
-
- iToAppReferences.Close();
- delete iTitle;
- delete iAppID;
- delete iVccItem;
- delete iNewVccItem;
-
- RUBY_DEBUG0( "CWPVccAdapter::~CWPVccAdapter() - EXIT" );
- }
-
-// ---------------------------------------------------------------------------
-// Not currently supported.
-// ---------------------------------------------------------------------------
-//
-TInt CWPVccAdapter::ContextExtension( MWPContextExtension*& /*aExtension*/ )
- {
- RUBY_DEBUG_BLOCK( "CWPVccAdapter::ContextExtension" );
- return KErrNotSupported;
- }
-
-// ---------------------------------------------------------------------------
-// Not currently supported.
-// ---------------------------------------------------------------------------
-//
-const TDesC8& CWPVccAdapter::SaveDataL( TInt /*aIndex*/ ) const
- {
- RUBY_DEBUG_BLOCK( "CWPVccAdapter::SaveDataL" );
- User::Leave( KErrNotSupported );
- // Nothing returned cause we leave.
- return KNullDesC8;
- }
-
-// ---------------------------------------------------------------------------
-// Not currently supported.
-// ---------------------------------------------------------------------------
-//
-void CWPVccAdapter::DeleteL( const TDesC8& /*aSaveData*/ )
- {
- RUBY_DEBUG_BLOCK( "CWPVccAdapter::DeleteL" );
- User::Leave( KErrNotSupported );
- }
-
-// ---------------------------------------------------------------------------
-// Returns UID of the adapter (*this).
-// ---------------------------------------------------------------------------
-//
-TUint32 CWPVccAdapter::Uid() const
- {
- RUBY_DEBUG_BLOCK( "CWPVccAdapter::Uid" );
- return KProvisioningVccAdapterImplementationUid; //iDtor_ID_Key.iUid;
- }
-
-// ---------------------------------------------------------------------------
-// Used to query for the detail information about the Vcc profile.
-// Not currently supported.
-// ---------------------------------------------------------------------------
-//
-TInt CWPVccAdapter::DetailsL( TInt, MWPPairVisitor& )
- {
- RUBY_DEBUG_BLOCK( "CWPVccAdapter::DetailsL" );
- return KErrNotSupported;
- }
-
-// ---------------------------------------------------------------------------
-// Returns the amount of Vcc data items (always 1 if data got, otherwise 0).
-// ---------------------------------------------------------------------------
-//
-TInt CWPVccAdapter::ItemCount() const
- {
- RUBY_DEBUG_BLOCK( "CWPVccAdapter::ItemCount" );
- return iVccItem ? 1 : 0;
- }
-
-// ---------------------------------------------------------------------------
-// Returns summary title of the Vcc profile received in configuration
-// message.
-// ---------------------------------------------------------------------------
-//
-const TDesC16& CWPVccAdapter::SummaryTitle( TInt /*aIndex*/ ) const
- {
- RUBY_DEBUG_BLOCK( "CWPVccAdapter::SummaryTitle" );
- return *iTitle;
- }
-
-// ---------------------------------------------------------------------------
-// Returns summary text of the Vcc profile received in configuration
-// message. Returns NULL descriptor if no settings received.
-// ---------------------------------------------------------------------------
-//
-const TDesC16& CWPVccAdapter::SummaryText( TInt /*aIndex*/ ) const
- {
- RUBY_DEBUG_BLOCK( "CWPVccAdapter::SummaryText" );
-
- if ( iVccItem )
- {
- RUBY_DEBUG0( "-vccitem Name" );
- return iVccItem->ServiceName();
- }
- else
- {
-
- RUBY_DEBUG0( " - default text NO ITEM!" );
- return KDefaultName;
- }
- }
-
-// ---------------------------------------------------------------------------
-// Saves Vcc item (whole profile). If no settings are received, leaves with
-// errorcode KErrGeneral.
-// ---------------------------------------------------------------------------
-//
-void CWPVccAdapter::SaveL( TInt /*aIndex*/ )
- {
- RUBY_DEBUG_BLOCK( "CWPVccAdapter::SaveL" );
-
- TRAP_IGNORE( RemoveVCCSettingsL() );
-
- // Lets do the saving when framework calls savingFinalisedL method
- }
-
-// ---------------------------------------------------------------------------
-// Tells if current profile can be set as a default profile. Since Vcc
-// currently supports only single profile, return value is always false.
-// ---------------------------------------------------------------------------
-//
-TBool CWPVccAdapter::CanSetAsDefault( TInt /*aIndex*/ ) const
- {
- RUBY_DEBUG_BLOCK( "CWPVccAdapter::CanSetAsDefault" );
- return EFalse;
- }
-
-// ---------------------------------------------------------------------------
-// Sets the Vcc item on place pointed by index given in parameter as default.
-// Since Vcc currently supports only single profile and CanSetAsDefault method
-// always returns false, this method should never be called. It is unsupported
-// and does nothing. Derivation of this method is done only to fulfill the
-// demands of s60 Coding conventions, Symbian OS, C++ and other entities
-// setting boundaries for specific software as *this.
-// ---------------------------------------------------------------------------
-//
-void CWPVccAdapter::SetAsDefaultL( TInt /*aIndex*/ )
- {
- RUBY_DEBUG_BLOCK( "CWPVccAdapter::SetAsDefaultL" );
- // This shouldn't be called because CanSetAsDefault
- // always returns EFalse
- User::Leave( KErrNotSupported );
- }
-
-// ---------------------------------------------------------------------------
-// This method is called by the provisioning framework to "visit" an adapter
-// plugin (*this). Plugin then checks if the visiting aCharacteristic are
-// of the particular type that this plugin wants to handle, and if so, it
-// invites the visitor deeper in to more intimate series of visits through
-// overloaded VisitL method with CWPParameter& visitor aboard.
-// Generally this plugin is interested in two type of visitors, one called
-// KWPApplication (carrying application level data), and other called
-// KWPNapDef (carrying data needed to establish new IAPs).
-// ---------------------------------------------------------------------------
-//
-void CWPVccAdapter::VisitL( CWPCharacteristic& aCharacteristic )
- {
- RUBY_DEBUG_BLOCK( "CWPVccAdapter::VisitL char" );
-
- switch ( aCharacteristic.Type() )
- {
- case KWPApplication:
- {
- RUBY_DEBUG0( " - KWPApplication create new item" );
- iNewVccItem = CVccSPSettings::NewL();
-
- iCurrentCharacteristicType = aCharacteristic.Type() ;
- aCharacteristic.AcceptL( *this );
-
- if( iAppID && *iAppID == KVccAppID )
- {
- RUBY_DEBUG0( "- VCC AppId used" );
- delete iVccItem;
- iVccItem = iNewVccItem;
- }
- else
- {
- delete iNewVccItem;
- }
- iNewVccItem = NULL;
- }break;
- default:
- {
- }break;
- }
-
- }
-
-// ---------------------------------------------------------------------------
-// This "visit" method should be called by all params in CWPCharacteristic&
-// visitors invited welcome in VisitL( CWPCharacteristic& ) overload. The
-// information in visiting params are then stored to VccItem datastructure for
-// future use.
-// ---------------------------------------------------------------------------
-//
-void CWPVccAdapter::VisitL( CWPParameter& aParameter )
- {
- RUBY_DEBUG0( "VisitL param" );
-
- switch( aParameter.ID() )
- {
- case EWPParameterAppID:
- {
- RUBY_DEBUG0( "- got EWPParameterAppID");
- delete iAppID;
- iAppID = NULL;
- iAppID = aParameter.Value().AllocL();
-
-
- }break;
- case EWPNamedParameter:
- {
- RUBY_DEBUG0( "- got EWPNamedParameter populate VCC item" );
-
- if( !iNewVccItem )
- {
- RUBY_DEBUG0( "- NO VCC item " );
- return;
- }
-
- TPtrC value( aParameter.Value() );
-
- if ( aParameter.Name().Compare( KVdi ) == KErrNone )
- {
- RUBY_DEBUG1( "- got VDI:%S" ,
- &value );
- iNewVccItem->SetVdiL( value );
- }
- else if ( aParameter.Name().Compare( KVdn ) == KErrNone )
- {
- RUBY_DEBUG1( "- got VDN:%S" ,
- &value );
-#if defined( _DEBUG )
- TInt val = aParameter.Name().Compare( KVdn );
- TBool valb (!val);
-#endif
- RUBY_DEBUG1( "- got val:%d", val );
- RUBY_DEBUG1( "- got valb:%d", valb );
-
- iNewVccItem->SetVdnL( value );
- }
- else if ( aParameter.Name().Compare( KPreferredDomain ) == KErrNone )
- {
- RUBY_DEBUG1( "- got Preferred Domain:%S" ,
- &value );
- iNewVccItem->SetPreferredDomainL( value );
- }
- else if ( aParameter.Name().Compare( KImmediateDT ) == KErrNone )
- {
- RUBY_DEBUG1( "- got Immediate DT:%S" ,
- &value );
- iNewVccItem->SetImmediateDtL( value );
- }
- else if ( aParameter.Name().Compare( KDtCsToPsAllowed ) == KErrNone )
- {
- RUBY_DEBUG1( "- got DT from CS to PS allowed:%S" ,
- &value );
-
- iNewVccItem->SetDtCsToPsAllowedL( value );
- }
- else if ( aParameter.Name().Compare( KDtPsToCsAllowed ) == KErrNone )
- {
- RUBY_DEBUG1( "- got DT from CS to PS allowed:%S" ,
- &value );
-
- iNewVccItem->SetDtPsToCsAllowedL( value );
- }
- else if ( aParameter.Name().Compare(
- KDtHeldwaitingCallsAllowed ) == KErrNone )
- {
- RUBY_DEBUG1( "- got DT from CS to PS allowed:%S" ,
- &value );
-
- iNewVccItem->SetDtHeldWaitingCallsAllowedL( value );
- }
- else if ( aParameter.Name().Compare(
- KWlanHOTreshold ) == KErrNone )
- {
- RUBY_DEBUG1( "- got DT from WLAN HO Treshold value:%S" ,
- &value );
-
- iNewVccItem->SetDtWlanHoTresholdL( value );
- }
- else if ( aParameter.Name().Compare(
- KWlanHOHysteresis ) == KErrNone )
- {
- RUBY_DEBUG1( "- got DT from WLAN HO hysteresis value:%S" ,
- &value );
-
- iNewVccItem->SetDtWlanHoHysteresisL( value );
- }
- else if ( aParameter.Name().Compare(
- KWlanHysteresisTimerLow ) == KErrNone )
- {
- RUBY_DEBUG1( "- got DT from WLAN Hysteresis timer low:%S" ,
- &value );
-
- iNewVccItem->SetDtWlanHoHysteresisTimerLowL( value );
- }
- else if ( aParameter.Name().Compare(
- KWlanHysteresisTimerHigh ) == KErrNone )
- {
- RUBY_DEBUG1( "- got DT from WLAN Hysteresis timer high:%S" ,
- &value );
-
- iNewVccItem->SetDtWlanHoHysteresisTimerHighL( value );
- }
-
- else if ( aParameter.Name().Compare(
- KCSHOTreshold ) == KErrNone )
- {
- RUBY_DEBUG1( "- got DT from CS HO Treshold value:%S" ,
- &value );
-
- iNewVccItem->SetDtCsHoTresholdL( value );
- }
- else if ( aParameter.Name().Compare(
- KCSHOHysteresis ) == KErrNone )
- {
- RUBY_DEBUG1( "- got DT from CS HO hysteresis value:%S" ,
- &value );
-
- iNewVccItem->SetDtCsHoHysteresisL( value );
- }
- else if ( aParameter.Name().Compare(
- KCSHysteresisTimerLow ) == KErrNone )
- {
- RUBY_DEBUG1( "- got DT from CS Hysteresis timer low:%S" ,
- &value );
-
- iNewVccItem->SetDtCsHoHysteresisTimerLowL( value );
- }
- else if ( aParameter.Name().Compare(
- KCSHysteresisTimerHigh ) == KErrNone )
- {
- RUBY_DEBUG1( "- got DT from CS Hysteresis timer high:%S" ,
- &value );
-
- iNewVccItem->SetDtCsHoHysteresisTimerHighL( value );
- }
- else if( aParameter.Name().Compare(
- KDtAllowedWhenCsOriginated ) == KErrNone )
- {
- RUBY_DEBUG1( "- got DT allowed when CS originated:%S" ,
- &value );
- iNewVccItem->SetDtAllowedWhenCsOriginated( value );
- }
- else
- {
- RUBY_DEBUG0( "- no such VCC param" );
- }
- break;
- }
- case EWPParameterProviderID: // APPLICATION/PROVIDER-ID
- {
- if( iNewVccItem != NULL )
- {
- RUBY_DEBUG0( "- got EWPParameterProviderID" );
-
- iNewVccItem->SetProviderIdL( aParameter.Value() );
-
- }
-
- } break;
-
- case EWPParameterName: // APPLICATION/NAME
- {
- if( iNewVccItem != NULL )
- {
- RUBY_DEBUG0( "- got EWPParameterName" );
- iNewVccItem->SetServiceNameL( aParameter.Value() );
-
- }
-
- } break;
-
- case EWPParameterToAppRef:
- {
- RUBY_DEBUG1("-got EWPParameterToAppRef: %S", &aParameter.Value());
- iToAppReferences.Append(aParameter.Value());
- break;
- }
- default:
- {
- RUBY_DEBUG0( "- got unknown" );
-
- } break;
- }
- }
-
-// ---------------------------------------------------------------------------
-// This method is called when the provisioning framework finds a link to
-// special characteristic belonging to characteristics accepted by *this
-// plugin. The linked characteristics are stored to VccItem data structure
-// for future use in a need-to-store basis.
-// ---------------------------------------------------------------------------
-//
-void CWPVccAdapter::VisitLinkL( CWPCharacteristic& /*aLink*/ )
- {
- RUBY_DEBUG_BLOCK( "CWPVccAdapter::VisitLinkL" );
-
- RUBY_DEBUG0("Do nothing");
- }
-
-
-// -----------------------------------------------------------------------------
-// CWPVccAdapter::::SettingsSavedL
-//
-// -----------------------------------------------------------------------------
-void CWPVccAdapter::SettingsSavedL(const TDesC8& aAppIdOfSavingItem,
- const TDesC8& aAppRef,
- const TDesC8& aStorageIdValue)
- {
- RUBY_DEBUG_BLOCK( "CWPVccAdapter::SettingsSavedL" );
-
-#ifdef _DEBUG
- HBufC* tmp = HBufC::NewLC( aAppIdOfSavingItem.Length() );
- tmp->Des().Copy( aAppIdOfSavingItem );
- RUBY_DEBUG1( "aAppIdOfSavingItem = %S", &(*tmp) );
- CleanupStack::PopAndDestroy( tmp );
-
- tmp = HBufC::NewLC( aAppRef.Length() );
- tmp->Des().Copy( aAppRef );
- RUBY_DEBUG1( "aAppRef = %S", &(*tmp) );
- CleanupStack::PopAndDestroy( tmp );
-
- tmp = HBufC::NewLC( aStorageIdValue.Length() );
- tmp->Des().Copy( aStorageIdValue );
- RUBY_DEBUG1( "aStorageIdValue = %S", &(*tmp) );
- CleanupStack::PopAndDestroy( tmp );
-#endif
-
- // Check which application reference is being offered
- for(TInt j=0; j<iToAppReferences.Count(); j++)
- {
- const TDesC& toAppRef = iToAppReferences[j];
- HBufC* appRef16 = HBufC::NewLC(aAppRef.Length());
- appRef16->Des().Copy(aAppRef);
-
- RUBY_DEBUG1( "Checking toAppRef: %S", &toAppRef );
-
-
- if( toAppRef.Compare(*appRef16) == 0 )
- {
- RUBY_DEBUG0( "APPREF matched with TO-APPREF" );
-
- if( (aAppIdOfSavingItem.Compare( KVoIPAppID8 ) == 0) && iVccItem != NULL )
- {
- TLex8 temp( aStorageIdValue );
- User::LeaveIfError( temp.Val( iVoipProfileId ) );
- }
- }
- else
- {
- RUBY_DEBUG0( "APPREF did not match with TO-APPREF" );
-
- }
-
- CleanupStack::PopAndDestroy(appRef16);
- }
-
- }
-
-// ---------------------------------------------------------------------------
-// CWPVoIPAdapter::SavingFinalizedL()
-//
-// ---------------------------------------------------------------------------
-//
-void CWPVccAdapter::SavingFinalizedL()
- {
- RUBY_DEBUG0( "CWPVccAdapter::SavingFinalizedL IN" );
- if ( iVccItem )
- {
- CRCSEProfileRegistry* cRCSEProfileRegistry = CRCSEProfileRegistry::NewLC(); // CS:1
- CRCSEProfileEntry* foundEntry = CRCSEProfileEntry::NewLC(); // CS:2
- cRCSEProfileRegistry->FindL( iVoipProfileId, *foundEntry );
- RUBY_DEBUG1( "SavingFinalizedL::ServiceId=%d", foundEntry->iServiceProviderId );
-
- iVccItem->SetVoipServiceIdL( foundEntry->iServiceProviderId );
- iVccItem->StoreL();
-
- CleanupStack::PopAndDestroy( foundEntry ); // CS:1
- CleanupStack::PopAndDestroy( cRCSEProfileRegistry ); // CS:0
- }
-
- //Remove SNAP
- TRAP_IGNORE(RemoveNetworkDestinationL() );
-
- RUBY_DEBUG0( "CWPVccAdapter::SavingFinalizedL OUT" );
- }
-
-// ---------------------------------------------------------------------------
-// CWPVccAdapter::RemoveVCCSettingsL()
-//
-// ---------------------------------------------------------------------------
-//
-void CWPVccAdapter::RemoveVCCSettingsL()
- {
- RUBY_DEBUG_BLOCK( "CWPVccAdapter::RemoveVCCSettingsL" );
- // Get the Voip service id. Get it always to if the SP
- // settings are changed, we get updated values.
- TInt VoIPServiceId(KErrNotFound);
- TRAPD(error, VoIPServiceId = VccSettingsReader::VoIPServiceIdL() );
- RUBY_DEBUG1( " -VoIP service id: %d", VoIPServiceId );
-
- if ( error != KErrNone )
- {
- RUBY_DEBUG0( " -VoIP service not found - LEAVE" );
- User::Leave( KErrNotFound );
- }
-
- //Get current VCC enabled VoIP service name before saving new one
- //it will be used to delete the network destination
-
- CSPSettings* settings = CSPSettings::NewLC();
- CSPProperty* property = CSPProperty::NewLC();
-
- //Get VoIP service name store it
- error = settings->FindPropertyL( VoIPServiceId, EServiceName, *property );
-
- error = property->GetValue( iOldVoipServiceName );
- User::LeaveIfError( error );
-
- CleanupStack::PopAndDestroy( property );
- CleanupStack::PopAndDestroy( settings );
-
-
- CCchService* cchService;
- // Get the service
- CCch* cch = CCch::NewL();
- //ownership not transfered so no need to delete
- cchService = cch->GetService( VoIPServiceId );
-
- if( cchService )
- {
- RUBY_DEBUG0( " -Disable service" );
- (void) cchService->Disable( ECCHVoIPSub );
- }
- delete cch;
-
-
- // Get VoIP profile ID from VCC settings (use Service ID)
- // Convert Service Id to VoipProfileID
- CRCSEProfileRegistry* cRCSEProfileRegistry = CRCSEProfileRegistry::NewLC();
- RPointerArray<CRCSEProfileEntry> foundEntries;
- CleanupStack::PushL( TCleanupItem( ResetAndDestroyProfileEntries, &foundEntries ) );
-
- cRCSEProfileRegistry->FindByServiceIdL( VoIPServiceId, foundEntries );
-
- const TInt count( foundEntries.Count() );
- TSettingIds value;
-
- CSIPManagedProfileRegistry* SIPRegistry;
- SIPRegistry = CSIPManagedProfileRegistry::NewLC(*this);
-
- TInt err(0);
-
- //remove SIP settings
- if ( count > 0 )
- {
- // Check the existence of linked SIP profiles
- for ( TInt i( count-1 ); 0 <= i ; i-- )
- {
- value = foundEntries[0]->iIds[i];
-
- if ( CRCSEProfileEntry::EProtocolSIP == value.iProfileType )
- {
- CSIPProfile* profile = NULL;
- TRAP( err, profile = SIPRegistry->ProfileL( value.iProfileId ) );
- if ( KErrNotFound == err )
- {
- delete profile;
- profile = NULL;
- RUBY_DEBUG0 ("SIP profile not found");
- }
- else
- {
- SIPRegistry->DestroyL(*profile);
- RUBY_DEBUG0 ("Sip profile destroyed");
- delete profile;
- profile = NULL;
- }
- }
- }
-
- TInt voipId = foundEntries[0]->iId;
-
- // Remove VoIP settings
- cRCSEProfileRegistry->DeleteL(voipId);
- }
- CleanupStack::PopAndDestroy( SIPRegistry );
- CleanupStack::PopAndDestroy(); // foundEntries
- CleanupStack::PopAndDestroy( cRCSEProfileRegistry );
- }
-// ---------------------------------------------------------------------------
-// From MSIPProfileRegistryObserver
-// CWPVccAdapter::ProfileRegistryEventOccurred
-// SIP profile event
-// ---------------------------------------------------------------------------
-//
-void CWPVccAdapter::ProfileRegistryEventOccurred(
- TUint32 /*aSIPProfileId*/,
- TEvent /*aEvent*/ )
- {
- RUBY_DEBUG0( "CWPVccAdapter::ProfileRegistryEventOccurred" );
- // Have to be implemented because MSIPProfileRegistryObserver
- // is passed to CSIPManagedProfileRegistry.
- }
-
-// ---------------------------------------------------------------------------
-// From MSIPProfileRegistryObserver
-// CWPVccAdapter::ProfileRegistryErrorOccured
-// An asynchronous error has occurred related to SIP profile
-// ---------------------------------------------------------------------------
-//
-void CWPVccAdapter::ProfileRegistryErrorOccurred(
- TUint32 /*aProfileId*/,
- TInt /*aError*/ )
- {
- RUBY_DEBUG0( "CRCSEProfileRegistry::ProfileRegistryErrorOccurred" );
- // Have to be implemented because MSIPProfileRegistryObserver
- // is passed to CSIPManagedProfileRegistry.
- }
-
-// ---------------------------------------------------------------------------
-// CWPVccAdapter::RemoveNetworkDestinationL()
-//
-// ---------------------------------------------------------------------------
-//
-
-void CWPVccAdapter::RemoveNetworkDestinationL()
- {
- RUBY_DEBUG_BLOCK( "CWPVccAdapter::RemoveNetworkDestination" );
-
- //remove destination
- RCmManagerExt cmManager;
- cmManager.OpenL();
- CleanupClosePushL(cmManager);
-
- RArray<TUint32> destinations;
- CleanupClosePushL(destinations);
- cmManager.AllDestinationsL(destinations);
-
- RCmDestinationExt destination;
- HBufC *destinationName;
-
- for( TInt i = 0; i < destinations.Count(); i++)
- {
- destination = cmManager.DestinationL(destinations[i]);
- CleanupClosePushL(destination);
- destinationName = destination.NameLC();
-
- if (destinationName->Compare( iOldVoipServiceName ) == 0 )
- {
- CleanupStack::PopAndDestroy( destinationName ); // Ownership is transferred to item
- destinationName = NULL;
- CleanupStack::Pop(); // destination
- destination.DeleteLD();
- RUBY_DEBUG0( "deleted network destination");
- }
- else
- {
- RUBY_DEBUG0("destination NOT found");
- CleanupStack::PopAndDestroy( destinationName ); // Ownership is transferred to item
- destinationName = NULL;
- CleanupStack::PopAndDestroy(); // destination
- }
-
- }
- CleanupStack::PopAndDestroy(); // destinations
- CleanupStack::PopAndDestroy(); //cmManager
- }