cmmanager/cmmgr/Framework/Src/cmdestinationimpl.cpp
changeset 20 9c97ad6591ae
parent 18 fcbbe021d614
child 21 b8e8e15e80f2
child 23 7ec726f93df1
child 28 860702281757
--- a/cmmanager/cmmgr/Framework/Src/cmdestinationimpl.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3500 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Implementation of CCmDestinationImpl
-*
-*/
-
-#include "cmdestinationimpl.h"
-#include "cmmanagerimpl.h"
-#include <cmpluginbaseeng.h>
-#include <cmpluginbase.h>
-#include <cmmanager.h>
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <commsdattypeinfov1_1_internal.h>
-#include <commsdattypesv1_1_partner.h> 
-#endif
-#include "cmlogger.h"
-#include "cmmanager.hrh"
-#include <cmcommonconstants.h>
-#include "datamobilitycommsdattypes.h"
-#include <cmpluginembdestinationdef.h>
-#include <cmmanagerdef.h>
-#include <data_caging_path_literals.hrh>
-#include <cmmanager.rsg>
-#include <cmmanager.mbg>   // icons
-#include <AknsUtils.h>
-#include <e32cmn.h>
-
-// System includes
-#include <ecom/ecom.h>        // For REComSession
-#include <commsdattypesv1_1.h>
-
-#include <in_sock.h>
-
-using namespace CMManager;
-using namespace CommsDat;
-
-const TUint KDefaultTierManagerTagId = KAfInet;
-
-const TInt KDestinationIconConvTable[][4] = {
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnIndiSettProtectedAdd,
-      EMbmCmmanagerQgn_prop_set_conn_dest_internet, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_internet_mask },
-      
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_wap, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_wap_mask },                   
-      
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_mms, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_mms_mask },
-      
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_intranet, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_intranet_mask },          
-      
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_operator, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_operator_mask },
-      
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon1, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon1_mask },     
-      
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon2, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon2_mask },
-      
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon3, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon3_mask },            
-      
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon4, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon4_mask },       
-
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon5, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon5_mask }, 
-             
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon6, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_icon6_mask }, 
-      
-    { EAknsMajorGeneric, 
-      EAknsMinorGenericQgnPropWmlGprs,
-      EMbmCmmanagerQgn_prop_set_conn_dest_default, 
-      EMbmCmmanagerQgn_prop_set_conn_dest_default_mask },            
-    {0, 0, 0, 0}
-    };
-
-// ================= MEMBER FUNCTIONS =======================
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::NewL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CCmDestinationImpl* 
-                           CCmDestinationImpl::NewL( CCmManagerImpl& aCmMgr,
-                                                     const TDesC& aName )
-    {
-    CCmDestinationImpl* dest = 
-                    new (ELeave) CCmDestinationImpl( aCmMgr );
-    CleanupStack::PushL( dest );
-    
-    dest->ConstructL( aName );
-    
-    CleanupStack::Pop( dest );
-    return dest;        
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::NewL()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CCmDestinationImpl* 
-                        CCmDestinationImpl::NewL( CCmManagerImpl& aCmMgr,
-                                                  TUint aDestinationId )
-    {
-    CCmDestinationImpl* dest = 
-                    new (ELeave) CCmDestinationImpl( aCmMgr );
-    CleanupStack::PushL( dest );
-    
-    dest->ConstructL( aDestinationId );
-    
-    CleanupStack::Pop( dest );
-    return dest;        
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::NewL()
-// -----------------------------------------------------------------------------
-//
-CCmDestinationImpl* CCmDestinationImpl::NewL( CCmManagerImpl& aCmMgr,
-                                              CCmDestinationData* aData )
-    {
-    CCmDestinationImpl* dest = 
-                    new (ELeave) CCmDestinationImpl( aCmMgr );
-    dest->iData = aData;
-    return dest;        
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::NewL()
-// -----------------------------------------------------------------------------
-//
-CCmDestinationImpl* CCmDestinationImpl::NewL( CCmManagerImpl& aCmMgr,
-                                              const TDesC& aName,
-                                              TUint32 aDestId)
-    {
-    CCmDestinationImpl* dest = 
-                              new (ELeave) CCmDestinationImpl( aCmMgr );
-    CleanupStack::PushL( dest );
-
-    dest->ConstructL( aName, aDestId );
-
-    CleanupStack::Pop( dest );
-    return dest;        
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::NewLC()
-// -----------------------------------------------------------------------------
-//
-CCmDestinationImpl* CCmDestinationImpl::NewLC( CCmDestinationData* aData )
-    {
-    CCmDestinationImpl* dest = 
-                    new (ELeave) CCmDestinationImpl( aData->iCmMgr );
-    CleanupStack::PushL( dest );
-    dest->iData = aData;
-    return dest;        
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CCmDestinationImpl()
-// -----------------------------------------------------------------------------
-//
-CCmDestinationImpl::CCmDestinationImpl( CCmManagerImpl& aCmMgr )
-    : iCmMgr( aCmMgr )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationData::CCmDestinationData()
-// -----------------------------------------------------------------------------
-//
-CCmDestinationData::CCmDestinationData( CCmManagerImpl& aCmMgr )
-    : iCmMgr( aCmMgr ),
-    iNewWithId ( EFalse )
-    {
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationData::~CCmDestinationData()
-// -----------------------------------------------------------------------------
-//
-CCmDestinationData::~CCmDestinationData()
-    {
-    delete iMetaDataRec;
-    delete iNetworkRecord;
-    delete iDestAPRecord;
-
-    if (iConnMethodArray)
-        {
-        ResetAndDestroyArray( iConnMethodArray, ETrue );        
-        }
-    if (iDeleteCmArray)
-        {
-        ResetAndDestroyArray( iDeleteCmArray, ETrue );        
-        }
-    
-    CLOG_CLOSE;
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::~CCmDestinationImpl()
-// -----------------------------------------------------------------------------
-//
-CCmDestinationImpl::~CCmDestinationImpl()
-    {
-    if (iData)
-        {
-        if (GetRefCounter())
-            {
-            iCmMgr.RemoveDestFromPool(this);        
-            }
-        else //if leaves during construction refcounter is 0
-            {
-            delete iData; 
-            }        
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConstructL()
-// -----------------------------------------------------------------------------
-//    
-void CCmDestinationImpl::ConstructL( const TDesC& aName )
-    {
-    CLOG_CREATE;
-    CLOG_NAME_2( _L("Destination_0x%x_%S"), this, &aName );
-    
-    iData =  new (ELeave) CCmDestinationData(iCmMgr);
-    iData->iNetworkRecord = static_cast<CCDNetworkRecord *>(
-                         CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) );
-    
-    iData->iConnMethodArray = new (ELeave) CCmArray( KCmArrayBigGranularity );
-    iData->iDeleteCmArray = new (ELeave) CCmArray( KCmArrayBigGranularity );
-    
-    iData->iMetaDataRec = new (ELeave) CCDSNAPMetadataRecord( 
-                                       iCmMgr.IconTableId() );
-
-    iData->iDestAPRecord = static_cast<CCDAccessPointRecord *>(
-                    CCDRecordBase::RecordFactoryL( KCDTIdAccessPointRecord ) );
-
-    SetNameL( aName );
-
-    InitializeDestAPRecordL();
-
-    CPluginItem* item = new (ELeave) CPluginItem;
-    CleanupStack::PushL( item );
-
-    // create the new record
-    item->iDNRecord = iCmMgr.SNAPRecordL( 0 );
-    CleanupStack::PushL( item->iDNRecord );
-    
-    AddToArrayL( item );
-    
-    CleanupStack::Pop( 2, item );  // iDNRecord, item
-    iData->iIdIsValid = EFalse;// the Id is still zero here
-    } 
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConstructL()
-// -----------------------------------------------------------------------------
-//    
-void CCmDestinationImpl::ConstructL( const TDesC& aName, TUint32 aDestId )
-    {
-    CLOG_CREATE;
-    CLOG_NAME_2( _L("Destination_0x%x_%S"), this, &aName );
-
-    iData =  new (ELeave) CCmDestinationData(iCmMgr);
-    iData->iNetworkRecord = static_cast<CCDNetworkRecord *>(
-                    CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) );
-
-    iData->iConnMethodArray = new (ELeave) CCmArray( KCmArrayBigGranularity );
-    iData->iDeleteCmArray = new (ELeave) CCmArray( KCmArrayBigGranularity );
-
-    iData->iMetaDataRec = new (ELeave) CCDSNAPMetadataRecord( iCmMgr.IconTableId() );
-
-    iData->iDestAPRecord = static_cast<CCDAccessPointRecord *>(
-                    CCDRecordBase::RecordFactoryL( KCDTIdAccessPointRecord ) );
-
-    SetNameL( aName );
-    
-    TInt correctAPId = aDestId;
-    TInt correctNetworkId = aDestId;
-	
-    if ( aDestId > 0 && aDestId < 255 )
-        {
-        correctAPId = aDestId + KCmDefaultDestinationAPTagId;
-        }
-    else if ( aDestId > KCmDefaultDestinationAPTagId 
-              && ( aDestId < ( KCmDefaultDestinationAPTagId+255 ) ) )
-        {
-        correctNetworkId = aDestId - KCmDefaultDestinationAPTagId;
-        }
-    else
-        {
-        User::Leave( KErrArgument );
-        }
-    
-    SetIdL( correctAPId );
-
-    InitializeDestAPRecordL();
-
-    CPluginItem* item = new (ELeave) CPluginItem;
-    CleanupStack::PushL( item );
-
-    // create the new record
-    iData->iNetworkRecord->SetRecordId( correctNetworkId );
-    iData->iNewWithId = ETrue;
-    item->iDNRecord = iCmMgr.SNAPRecordL( 0 );
-    CleanupStack::PushL( item->iDNRecord );
-
-    AddToArrayL( item );
-
-    CleanupStack::Pop( 2, item );  // iDNRecord, item
-    iData->iIdIsValid = EFalse;// the Id is still zero here
-    } 
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetIdL()
-// -----------------------------------------------------------------------------
-//        
-void CCmDestinationImpl::SetIdL( TInt aDestId )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetIdL" );
-
-    TInt correctAPId( aDestId );
-    if ( aDestId > 0 && aDestId < 255 )
-        {
-        correctAPId = aDestId + KCmDefaultDestinationAPTagId;
-        }
-    else if ( aDestId < KCmDefaultDestinationAPTagId + 1
-             || aDestId > KCmDefaultDestinationAPTagId + 255 )
-        {
-        User::Leave( KErrArgument );
-        }
-        
-    CheckIfDestinationIdExistsL( correctAPId );
-
-    iData->iDestAPRecord->iRecordTag = correctAPId;
-    };
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CheckIfDestinationIdExistsL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::CheckIfDestinationIdExistsL( TUint32 aDestId )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CheckIfDestinationNameExistL" );
-
-    CMDBRecordSet<CCDAccessPointRecord>*  ptrRecordSet = 
-          new (ELeave) CMDBRecordSet<CCDAccessPointRecord>( KCDTIdAccessPointRecord );
-    CleanupStack::PushL( ptrRecordSet );    
-
-    // Prime record
-    CCDAccessPointRecord* record = static_cast<CCDAccessPointRecord *>
-                                   ( CCDRecordBase::RecordFactoryL( KCDTIdAccessPointRecord ) );
-    CleanupStack::PushL( record );
-
-    record->iRecordTag = ( TInt )aDestId;
-
-    ptrRecordSet->iRecords.AppendL( record );
-
-    CleanupStack::Pop( record );
-    record = NULL;
-
-    if ( ptrRecordSet->FindL( Session() ) )
-        {
-        User::Leave( KErrAlreadyExists );      
-        }
-
-    ptrRecordSet->iRecords.ResetAndDestroy();
-    CleanupStack::PopAndDestroy( ptrRecordSet );
-
-    iData->iDestAPRecord->iRecordTag = aDestId;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CheckIfDestinationNameExistL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::CheckIfDestinationNameExistL( const TDesC& aName )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CheckIfDestinationNameExistL" );
-    
-    CMDBRecordSet<CCDSnapRecord>*  ptrRecordSet = 
-                            new (ELeave) CMDBRecordSet<CCDSnapRecord>( 
-                                 iCmMgr.DestinationTableId() );
-    CleanupStack::PushL( ptrRecordSet );    
-    
-    // Prime record
-    CCDSnapRecord* record = iCmMgr.SNAPRecordL( 0 );
-    CleanupStack::PushL( record );
-    
-    record->iRecordName.SetL( aName );
-    
-    ptrRecordSet->iRecords.AppendL( record );
-
-    CleanupStack::Pop( record );
-    record = NULL;
-                
-    if ( ptrRecordSet->FindL( Session() ) )
-        {
-        User::Leave( KErrAlreadyExists );          
-        }
-        
-    ptrRecordSet->iRecords.ResetAndDestroy();
-    CleanupStack::PopAndDestroy( ptrRecordSet );            
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConstructL()
-// -----------------------------------------------------------------------------
-//    
-void CCmDestinationImpl::ConstructL( TUint aDestinationId )
-    {
-    CLOG_CREATE;
-    CLOG_NAME_2( _L("Destination_0x%x_%d"), this, aDestinationId );
-    iData =  new (ELeave) CCmDestinationData(iCmMgr);
-    OpenTransactionLC();
-    
-    iData->iNetworkRecord = static_cast<CCDNetworkRecord *>(
-                         CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) );
-
-    iData->iDestAPRecord = static_cast<CCDAccessPointRecord *>(
-                         CCDRecordBase::RecordFactoryL( KCDTIdAccessPointRecord ) );
-    
-    iData->iConnMethodArray = new (ELeave) CCmArray( KCmArrayBigGranularity );
-    iData->iDeleteCmArray = new (ELeave) CCmArray( KCmArrayBigGranularity );
-
-    TInt correctAPId = aDestinationId;
-    TInt correctNetworkId = aDestinationId;
-	
-    if ( aDestinationId > 0 && aDestinationId < 255 )
-        {
-        correctAPId = aDestinationId + KCmDefaultDestinationAPTagId;
-        }
-    else if ( aDestinationId > KCmDefaultDestinationAPTagId 
-              && ( aDestinationId < ( KCmDefaultDestinationAPTagId+255 ) ) )
-        {
-        correctNetworkId = aDestinationId - KCmDefaultDestinationAPTagId;
-        }
-    else
-        {
-        User::Leave( KErrArgument );
-        }
-        
-    LoadDestAPRecordL( correctAPId );
-    
-    LoadNetworkRecordL( correctNetworkId );
-
-    LoadConnectionMethodsL();
-    LoadSNAPMetadataTableL();
-    
-    RollbackTransaction();
-    
-    iData->iIdIsValid = ETrue;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::Session()
-// -----------------------------------------------------------------------------
-//        
-CMDBSession& CCmDestinationImpl::Session()const
-    {
-    return iCmMgr.Session();
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmDestinationImpl::OpenTransactionLC
-// ---------------------------------------------------------------------------
-//
-void CCmDestinationImpl::OpenTransactionLC()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::OpenTransactionL" );
-    // Do NOT call OpenTransactionLC() more then once!
-    iCmMgr.OpenTransactionLC( ETrue );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDestinationImpl::CommitTransactionL
-// ---------------------------------------------------------------------------
-//
-void CCmDestinationImpl::CommitTransactionL( TInt aError )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CommitTransactionL" );
-    
-    iCmMgr.CommitTransactionL( aError );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmDestinationImpl::RollbackTransaction
-// ---------------------------------------------------------------------------
-//
-void CCmDestinationImpl::RollbackTransaction()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::RollbackTransaction" );
-    
-    iCmMgr.RollbackTransaction();
-    }
-
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::NameLC()
-// -----------------------------------------------------------------------------
-//        
-EXPORT_C HBufC* CCmDestinationImpl::NameLC( )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::NameLC" );
-
-    HBufC* name = NULL;
-    const TUint32 KSnapMetadataNameMask = 0x0000000F;
-
-    TUint32 val = TUint32(iData->iMetaDataRec->iMetadata) & KSnapMetadataNameMask;
-    TUint32 val2 = (TUint32(iData->iMetaDataRec->iMetadata) & ESnapMetadataDestinationIsLocalised)
-                     >> 4;                   
-    
-    if( (val == ESnapMetadataInternet) ||
-        (val2 == ELocalisedDestInternet) )
-        {
-        name = iCmMgr.AllocReadL( R_CMMANAGERUI_DEST_INTERNET );
-        }
-    else if ( val2 == ELocalisedDestWap )
-        {
-        name = iCmMgr.AllocReadL( R_CMMANAGERUI_DEST_WAP );
-        }
-    else if ( val2 == ELocalisedDestMMS )
-        {
-        name = iCmMgr.AllocReadL( R_CMMANAGERUI_DEST_MMS );
-        }
-    else if ( val2 == ELocalisedDestIntranet )
-        {
-        name = iCmMgr.AllocReadL( R_CMMANAGERUI_DEST_INTRANET );
-        }
-    else
-        {
-        name = TPtrC(iData->iNetworkRecord->iRecordName).AllocL();
-        }
-        
-    CleanupStack::PushL( name );
-        
-    return name;
-    };
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetNameL()
-// -----------------------------------------------------------------------------
-//        
-EXPORT_C void CCmDestinationImpl::SetNameL( const TDesC& aName )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetNameL" );
-
-    // Destination cannot be renamed if it's
-    // - protected
-    // - Internet    
-    if ( ProtectionLevel() == EProtLevel1 ||
-         ProtectionLevel() == EProtLevel2 ||
-         MetadataL( ESnapMetadataInternet ) )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-
-    OpenTransactionLC();
-    CheckIfDestinationNameExistL( aName );
-    CommitTransactionL( KErrNone );        
-
-    iData->iNetworkRecord->iRecordName.SetL( aName );
-    iData->iDestAPRecord->iRecordName.SetL( aName );
-    };
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConnectionMethodCount()
-// -----------------------------------------------------------------------------
-//        
-TInt CCmDestinationData::ConnectionMethodCount()
-    {    
-    LOGGER_ENTERFN( "CCmDestinationImpl::ConnectionMethodCount" );
-
-    return iConnMethodArray->Count() - KCmInitIndex;
-    };
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConnectionMethodCount()
-// -----------------------------------------------------------------------------
-//        
-EXPORT_C TInt CCmDestinationImpl::ConnectionMethodCount()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::ConnectionMethodCount" );
-    
-    return iData->ConnectionMethodCount();
-    };
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConnectionMethodL
-// -----------------------------------------------------------------------------
-//     
-EXPORT_C CCmPluginBaseEng* CCmDestinationImpl::ConnectionMethodL( TInt /*aIndex*/ )
-    {
-    LOGGER_ENTERFN( "Error: Obsolete function CCmDestinationImpl::ConnectionMethodL used" );
-    User::Panic( _L("CMManager"), KErrNotSupported );
-    return NULL;    
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConnectionMethodL
-// -----------------------------------------------------------------------------
-//     
-EXPORT_C CCmPluginBase* CCmDestinationImpl::GetConnectionMethodL( TInt aIndex )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::ConnectionMethodL" );
-    // Initial entry!
-   
-    CCmPluginBase* retVal = NULL;    
-    TInt index = KCmInitIndex + aIndex;
-    CPluginItem* item = (*(iData->iConnMethodArray))[index];
-
-    LoadPluginL( *item );
-    retVal = item->iPlugin;
-    
-    return retVal;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConnectionMethodByIDL
-// -----------------------------------------------------------------------------
-//     
-CCmPluginBase* CCmDestinationImpl::ConnectionMethodByIDL( TUint32 aCmId )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::ConnectionMethodByIDL" );
-
-    TInt found = ConnectionMethodIndex( aCmId );
-
-    if( found == KErrNotFound )
-        {
-        User::Leave( KErrNotFound );
-        }
-        
-    CPluginItem* item = (*(iData->iConnMethodArray))[found];
-
-    LoadPluginL( *item );
-    
-    return item->iPlugin;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConnectMethodIdArrayL
-// -----------------------------------------------------------------------------
-//     
-void CCmDestinationImpl::ConnectMethodIdArrayL( RArray<TUint32>& aCmIds )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::ConnectMethodIdArrayL" );
-
-    TInt count = iData->iConnMethodArray->Count();    
-
-    for( TInt i = KCmInitIndex; i < count; ++i )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-
-        TUint32 elementId = item->iDNRecord->iIAP ?
-                          RECORD_FROM_ELEMENT_ID( TUint32(item->iDNRecord->iIAP) ) :
-                          TUint32( item->iDNRecord->iEmbeddedSNAP );
-                          
-        User::LeaveIfError( aCmIds.Append( elementId ) );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::AddToArrayL
-// -----------------------------------------------------------------------------
-// 
-TInt CCmDestinationImpl::AddToArrayL( CPluginItem* aItem )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::AddToArrayL" );
-
-    TInt count = iData->iConnMethodArray->Count();    
-    if ( 0 == count  )
-        {
-        iData->iConnMethodArray->AppendL( aItem );
-        CLOG_WRITE_1( "inserted: [%d]", count );
-        return count;
-        }
-        
-    // Fill in SNAP record with IAP/EmbSNAP/SNAP values    
-    TMDBElementId iapElemetid( 0 );
-    TInt embDestId( 0 );
-
-    // No plugin means this is the template record.
-    TBool isDestination = aItem->iPlugin->GetBoolAttributeL( ECmDestination );
-    if ( isDestination )
-        {
-        embDestId = aItem->iPlugin->Destination()->Id();    
-        }
-    else
-        {
-        iapElemetid = aItem->iPlugin->IAPRecordElementId();   
-        }
-        
-    aItem->iDNRecord->iIAP = iapElemetid;
-    aItem->iDNRecord->iEmbeddedSNAP = embDestId;
-
-    TUint32 prio = 0;
-    TUint32 bearerType = 0;
-    TUint32 extLevel = 0;
-    
-    TBool isVirtual( EFalse );
-    
-    if ( count == KCmInitIndex )
-        {
-        if( !aItem->iDNRecord->iIAP && !aItem->iDNRecord->iEmbeddedSNAP )
-            {
-            iData->iConnMethodArray->AppendL( aItem );
-            }
-        else
-            {
-            isVirtual = PrioDataL( aItem, prio, bearerType, extLevel );
-            aItem->iDNRecord->iPriority = prio;
-            iData->iConnMethodArray->AppendL( aItem );
-            }
-        return count;
-        }
-    
-    TInt insertedAt( -1 );
-
-    if ( !isDestination )
-        {
-        // This function returns the info necessary for determining the priority
-        // It is the cm data in none VPN case 
-        // It is the data of the underlying cm in case of VPN over cm
-        // It is wildcard prio in case of VPN over destination
-        isVirtual = PrioDataL( aItem, prio, bearerType, extLevel );
-
-        CLOG_WRITE_3( "inserted item prio: [%d], bearer: [%x] ext: [%d]", 
-                       prio, bearerType, extLevel );
-
-        // wildcard priority goes to back
-        if ( KDataMobilitySelectionPolicyPriorityWildCard == prio ) 
-            {
-            // Set the default priority of a wildcard bearer
-            aItem->iDNRecord->iPriority = prio;
-            }   
-        else 
-            {
-            insertedAt = InsertSameMethodL( bearerType, isVirtual );
-            if( insertedAt == -1 )
-                {
-                insertedAt = InsertPriorityMethodL( prio, extLevel );
-                }
- 
-            } // if wildcard
-        } // if !destination
-   
-    if( insertedAt == -1 )
-        {
-        //Add to the end of the list        
-        iData->iConnMethodArray->AppendL( aItem );
-        insertedAt = iData->iConnMethodArray->Count()-1;
-        CLOG_WRITE_1( "inserted as last: [%d]", insertedAt );
-        }
-    else
-        {
-        iData->iConnMethodArray->InsertL( insertedAt, aItem );
-        }    
-
-    CLOG_WRITE_1( "inserted at: [%d]", insertedAt );
-        
-    return insertedAt;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::PrioDataL
-// -----------------------------------------------------------------------------
-// 
-TBool CCmDestinationImpl::PrioDataL( CPluginItem* aItem,  TUint32& aRetPrio, 
-                                     TUint32& aRetBearer, TUint32& aRetExtLevel )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::PrioDataL" );
-
-    // Gets the data affecting the priority of the plugin in the list.
-    // It means the VPN priory based on the barer priority of the underlying cm
-    // or "wildcard" if VPN points to a destination      
-    aRetPrio   = aItem->iPlugin->GetIntAttributeL( ECmDefaultPriority );
-    aRetBearer = aItem->iPlugin->GetIntAttributeL( ECmBearerType );
-    aRetExtLevel = aItem->iPlugin->GetIntAttributeL( ECmExtensionLevel );
-    
-    TBool isVirtual = aItem->iPlugin->GetBoolAttributeL( ECmVirtual );
-    if( isVirtual )
-        {
-        // Embeded destination is also virtual but further checking should
-        // not be done. 
-        TBool isDestination = aItem->iPlugin->GetBoolAttributeL( ECmDestination );
-        if( !isDestination )
-            {
-            TUint32 underlying = aItem->iPlugin->GetIntAttributeL( 
-                                                           ECmNextLayerIapId );
-            if ( underlying != 0 )
-                {
-                // Gets the bearer of the underlying cm
-                aRetBearer = iCmMgr.BearerTypeFromCmIdL( underlying );
-                // Gets the prio of the bearer
-                aRetPrio = 
-                iCmMgr.GetBearerInfoIntL( aRetBearer, ECmDefaultPriority );
-                aRetExtLevel = 
-                iCmMgr.GetBearerInfoIntL( aRetBearer, ECmExtensionLevel );
-                }
-            else
-                {
-                // VPN points to a destination so its priority is "wildcard"
-                aRetPrio = KDataMobilitySelectionPolicyPriorityWildCard;
-                }    
-            }
-        }
-
-    return isVirtual;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::InsertSameMethodL
-// -----------------------------------------------------------------------------
-// 
-TInt CCmDestinationImpl::InsertSameMethodL( TUint32 aBearerType, TBool aIsVirtual )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::InsertSameMethodL" );
-
-    TInt insertedAt( -1 );
-    TUint32 bearerInList( 0 );
-    TUint32 prioInList( 0 );
-    TUint32 extLevelInList( 0 ); 
-    TBool isVirtualInList( EFalse );
-     
-    TInt count = iData->iConnMethodArray->Count();    
-    // Loops throught the items in the list
-    for ( TInt i = count-1; ( i >= KCmInitIndex ) && ( insertedAt == -1) ; i-- )
-        {
-        // Loads the plugin
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        LoadPluginL( *item );
-        
-        // Gets the data of the list item    
-        isVirtualInList = PrioDataL( item, 
-                                    prioInList, bearerInList, extLevelInList );
-
-        CLOG_WRITE_4( "actual item [%d] prio: [%d], bearer: [%x] ext: [%d]", 
-                            i, prioInList, bearerInList, extLevelInList );
-          
-        // Bearer type the same
-        if( aBearerType == bearerInList )
-            {
-            // puts Virt/Virt or !Virt/!Virt or !Virt/Virt
-            if( ( aIsVirtual == isVirtualInList ) || ( aIsVirtual && !isVirtualInList ))
-                {
-                insertedAt = i+1;
-                CLOG_WRITE_1( "inserted same bearer: [%d]", insertedAt );
-                }
-            } // if bearer
-        } // for
-        return insertedAt;
-    }
-    
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::InsertPriorityMethodL
-// -----------------------------------------------------------------------------
-// 
-TInt CCmDestinationImpl::InsertPriorityMethodL( TUint32 aPrio, TUint32 aExtLevel )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::InsertPriorityMethodL" );
-
-    TInt insertedAt = -1;
-    TUint32 bearerInList( 0 );
-    TUint32 prioInList( 0 );
-    TUint32 extLevelInList( 0 );
-
-    TInt count = iData->iConnMethodArray->Count();    
-    // Loops throught the items in the list
-    ////for ( TInt i = KCmInitIndex; ( i < count ) && ( insertedAt == -1) ; i++ )
-    TInt i ( count-1 );
-    for ( ; ( i >= KCmInitIndex ) && ( insertedAt == -1) ; i-- )
-        {
-        // Loads the plugin
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        LoadPluginL( *item );
-
-        // Gets the data of the list item    
-        PrioDataL( item, prioInList, bearerInList, extLevelInList );
-
-        CLOG_WRITE_4( "actual item [%d] prio: [%d], bearer: [%x] ext: [%d]", 
-                        i, prioInList, bearerInList, extLevelInList );
-        
-        // If the priority is the same then it should be inserted near here
-        if ( aPrio == prioInList )
-            {
-            if( aExtLevel <= extLevelInList )
-                {
-                insertedAt = i+1;
-                CLOG_WRITE_1( "inserted same bearer non virtual: [%d]", insertedAt );
-                }
-            }
-        // Insert in front of the higher priority (prio 1 is the highest ...)    
-        else if ( aPrio > prioInList )
-            {
-            insertedAt = i+1;
-            CLOG_WRITE_1( "inserted higher prio: [%d]", insertedAt );
-            } // if same prio
-            
-        } // for
-        
-    // This is the highest priority one. It should be inserted at the first pos. 
-    if( -1 == insertedAt )
-        {
-        insertedAt = KCmInitIndex;
-        CLOG_WRITE_1( "inserted first position: [%d]", insertedAt );
-        } // if same prio
-
-    return insertedAt;
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationData::ProtectionLevel()
-// -----------------------------------------------------------------------------
-//  
-TProtectionLevel CCmDestinationData::ProtectionLevel()
-    {
-    TInt protection = TUint32(iMetaDataRec->iMetadata) & 
-                      KSnapMetadataProtecionLevelMask;
-    return TProtectionLevel(protection >> 28);
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ProtectionLevel()
-// -----------------------------------------------------------------------------
-//  
-EXPORT_C 
-    TProtectionLevel CCmDestinationImpl::ProtectionLevel()
-    {
-    return iData->ProtectionLevel();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetAttributeL()
-// -----------------------------------------------------------------------------
-//  
-EXPORT_C void CCmDestinationImpl::SetProtectionL( TProtectionLevel aProtectionLevel )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetProtectionL" );
-    
-    CLOG_WRITE_1( "Level: [%d]", aProtectionLevel );
-
-    CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-    
-    // Make a destination protected.
-    TUint32 mask = ~KSnapMetadataProtecionLevelMask;
-    TUint32 temp = TUint32(iData->iMetaDataRec->iMetadata) & mask;    
-    iData->iMetaDataRec->iMetadata = aProtectionLevel << 28;
-    iData->iMetaDataRec->iMetadata = temp | TUint32(iData->iMetaDataRec->iMetadata);
-    
-    iData->iProtectionChanged = ETrue;
-    }
-        
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CreateConnectionMethodL()
-// -----------------------------------------------------------------------------
-//  
-CCmPluginBase* CCmDestinationImpl::CreateConnectionMethodL( 
-                                                   TUint32 aImplementationUid )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CreateConnectionMethodL" );
-
-    CCmPluginBase* retval = NULL;
-    if( ProtectionLevel() == EProtLevel1 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-    retval = iCmMgr.CreateConnectionMethodL(aImplementationUid, this);
-    CleanupStack::PushL(retval); 
-    AddConnectionMethodL(*retval);
-    CleanupStack::Pop(retval);
-    return retval;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CreateConnectionMethodL()
-// -----------------------------------------------------------------------------
-//  
-CCmPluginBase* CCmDestinationImpl::CreateConnectionMethodL( 
-    TUint32 aImplementationUid,
-    TUint32 aConnMthId )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CreateConnectionMethodL" );
-
-    CCmPluginBase* retval = NULL;
-    if( ProtectionLevel() == EProtLevel1 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-
-    retval = iCmMgr.CreateConnectionMethodL( aImplementationUid,
-                                             aConnMthId,
-                                             this );
-    CleanupStack::PushL(retval);
-    AddConnectionMethodL(*retval);
-    CleanupStack::Pop(retval);
-    return retval;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::AddConnectionMethodL()
-// -----------------------------------------------------------------------------
-//
-TInt CCmDestinationImpl::AddConnectionMethodL( 
-                                           CCmPluginBase& aConnectionMethod )
-    {    
-    LOGGER_ENTERFN( "CCmDestinationImpl::AddConnectionMethodL" );
-
-    if( ProtectionLevel() == EProtLevel1 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    TUint cmId = aConnectionMethod.GetIntAttributeL( ECmId );
-    
-    CPluginItem* item = new (ELeave) CPluginItem;
-    CleanupStack::PushL( item ); // 1
-    
-    // get the plugin
-    CCmPluginBase* connMethod = new (ELeave) 
-                            CCmPluginBase(aConnectionMethod.Plugin());
-    CleanupStack::PushL( connMethod );// 2           
-    connMethod->IncrementRefCounter();    
-    item->iPlugin = connMethod;
-        
-    CleanupStack::PushL( item->iPlugin ); // 3         
-    // create the new record
-    item->iDNRecord = iCmMgr.SNAPRecordL( 0 );
-
-    CleanupStack::PushL( item->iDNRecord ); // 4
-    
-    // if the destination is protection level 1, the connection method must be protected
-    if ( ProtectionLevel() == EProtLevel1 )
-        {
-        item->iPlugin->SetBoolAttributeL( ECmProtected, ETrue );
-        }
-    
-    TInt index = AddToArrayL( item );
-    index = index - KCmInitIndex; //the array contains one initial item, so subtract KCmInitIndex from the index to get cm index!
-    
-    CleanupStack::Pop( 4, item ); // item, connMethod, iDNRecord, iPlugin
-    
-    return index;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::AddEmbeddedDestinationL()
-// -----------------------------------------------------------------------------
-//
-TInt CCmDestinationImpl::AddEmbeddedDestinationL( 
-                                             CCmDestinationImpl& aDestination )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::AddEmbeddedDestinationL" );
-    
-    if( ProtectionLevel() == EProtLevel1 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    //Check to avoid multiple levels of embedding
-    CheckIfEmbeddedL( Id() );
-    
-    //Check to avoid multiple levels of embedding
-    if ( aDestination.HasEmbeddedL() )
-        {
-        User::Leave( KErrNotSupported );
-        }
-        
-    // Only one embedded destination per destination is allowed
-    if ( HasEmbeddedL() )
-        {
-        User::Leave( KErrNotSupported );
-        }
-           
-    CPluginItem* item = new (ELeave) CPluginItem;
-    CleanupStack::PushL( item ); // 1
-
-    CreateEmbeddedDestinationPluginL( *item, aDestination.Id() );
-     // create the new record
-    item->iDNRecord = iCmMgr.SNAPRecordL( 0 );
-    item->iDNRecord->iPriority = KDataMobilitySelectionPolicyPriorityWildCard;
-
-    CleanupStack::PushL( item->iDNRecord ); // 2    
-    TInt index = AddToArrayL( item );
-    index = index - KCmInitIndex; //the array contains one initial item, so subtract KCmInitIndex from the index to get cm index!
-    
-    CleanupStack::Pop( 2, item ); // item, iDNRecord
-    
-    return index;   
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::DeleteConnectionMethodL()
-// -----------------------------------------------------------------------------
-// 
-void CCmDestinationImpl::DeleteConnectionMethodL( 
-                                        CCmPluginBase& aConnectionMethod )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::DeleteConnectionMethodL" );
-    
-    if( ProtectionLevel() == EProtLevel1 ||
-        ProtectionLevel() == EProtLevel3 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    if ( aConnectionMethod.GetBoolAttributeL( ECmConnected ) )
-        {
-        User::Leave( KErrInUse );
-        }
-        
-    TInt index = FindConnectionMethodL( aConnectionMethod );
-
-    // move this method to the 'to be deleted' array         
-    CPluginItem* item = (*(iData->iConnMethodArray))[index];
-    
-    LoadPluginL( *item );
-    
-    if( item->iPlugin->GetBoolAttributeL( ECmIsLinked ) )
-        {
-        User::Leave( KErrLocked );
-        }
-
-    if ( ConnectionMethodCount() == 1 )
-        {
-        // Check if this destination is referenced by Virtual CM 
-        CheckIfReferencedByVirtualCML();
-        }
-
-    iData->iDeleteCmArray->AppendL( item );
-    iData->iConnMethodArray->Delete( index );
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::RemoveConnectionMethodL()
-// -----------------------------------------------------------------------------
-// 
-void CCmDestinationImpl::RemoveConnectionMethodL( 
-                                     const CCmPluginBase& aConnectionMethod )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::DeleteConnectionMethodL" );
-
-    if( ProtectionLevel() == EProtLevel1 ||
-        ProtectionLevel() == EProtLevel3 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-    
-    if ( ConnectionMethodCount() == 1 )
-        {
-        // Check if this destination is referenced by Virtual CM 
-        CheckIfReferencedByVirtualCML();
-        }
-        
-    TInt index = FindConnectionMethodL( aConnectionMethod );
-
-    // move this method to the 'to be deleted' array, but
-    // set remove only from, not to delete it on update.
-    CPluginItem* item = (*(iData->iConnMethodArray))[index];
-    
-    item->iFlags |= CPluginItem::ERemoveCm;
-   
-    iData->iDeleteCmArray->AppendL( item );
-    iData->iConnMethodArray->Delete( index );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CheckIfReferencedByVirtualCML()
-// -----------------------------------------------------------------------------
-// 
-void CCmDestinationImpl::CheckIfReferencedByVirtualCML()
-    {
-    // for each IAP in CM manager
-    //   1. check if it is virtual
-    //      if not => goto 1.
-    //      if yes:
-    //      2. check if it links to the destination of this CM
-    //         if yes => carryOn = EFalse, ERROR
-    //         if not: carryOn = ETrue
-    CommsDat::CMDBRecordSet<CommsDat::CCDIAPRecord>* iaps = iCmMgr.AllIapsL();
-    CleanupStack::PushL( iaps );
-
-    TBool carryOn = ETrue;
-    TUint32 destId = Id();
-
-    // for each IAP in CM manager
-    for ( TInt i = KCmInitIndex; carryOn && i < iaps->iRecords.Count(); ++i )
-        {
-        CommsDat::CCDIAPRecord* rec = (*iaps)[i];
-        TUint32 bearerType = 0;
-
-        TRAP_IGNORE( bearerType = iCmMgr.BearerTypeFromIapRecordL( rec ) );
-        if ( !bearerType )
-            {
-            continue;
-            }
-
-        // check if it is virtual
-        if ( iCmMgr.GetBearerInfoBoolL( bearerType, ECmVirtual ) )
-            {
-            // check if it links to the current destination
-            CCmPluginBase* plugin = NULL;            
-            TRAP_IGNORE( plugin = iCmMgr.GetConnectionMethodL( rec->RecordId() ) );
-
-            if ( !plugin )
-                {
-                continue;
-                }
-
-            if ( plugin->IsLinkedToSnap( destId ) )
-                {
-                // the CM links to this destination, deletion not allowed
-                carryOn = EFalse;
-                }
-
-            delete plugin;
-            }
-        }
-
-    CleanupStack::PopAndDestroy( iaps );
-
-    if ( !carryOn )
-        {
-        User::Leave( KErrLocked );
-        }
-    }
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::RemoveConnectionMethodL()
-// -----------------------------------------------------------------------------
-// 
-void CCmDestinationImpl::RemoveConnectionMethodL( 
-                                     const CCmPluginBaseEng& aConnectionMethod )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::DeleteConnectionMethodL" );
-
-    if( ProtectionLevel() == EProtLevel1 ||
-        ProtectionLevel() == EProtLevel3 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    TInt index = FindConnectionMethodL( aConnectionMethod );
-
-    // move this method to the 'to be deleted' array, but
-    // set remove only from, not to delete it on update.
-    CPluginItem* item = (*(iData->iConnMethodArray))[index];
-    
-    item->iFlags |= CPluginItem::ERemoveCm;
-   
-    iData->iDeleteCmArray->AppendL( item );
-    iData->iConnMethodArray->Delete( index );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConnectionMethodDeletedL()
-// -----------------------------------------------------------------------------
-// 
-void CCmDestinationImpl::ConnectionMethodDeletedL( 
-                                    const CCmPluginBase& aConnectionMethod )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::ConnectionMethodDeletedL" );
-
-    TInt found( KErrNotFound );
-    TUint32 aCmId = aConnectionMethod.GetIntAttributeL( ECmId );
-
-    found = ConnectionMethodIndex( aCmId );
-
-    if( found != KErrNotFound )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[found];
-        
-        (*(iData->iConnMethodArray))[found] = NULL;
-        iData->iConnMethodArray->Delete( found );
-        iData->iConnMethodArray->Compress();
-        
-        // The iPlugin is deleted in plugin interface function
-        // that called this function.
-        delete item->iDNRecord;
-        delete item;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::FindConnectionMethodL()
-// -----------------------------------------------------------------------------
-// 
-TInt CCmDestinationImpl::FindConnectionMethodL( 
-                                     const CCmPluginBase& aConnectionMethod )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::FindConnectionMethodL" );
-
-    TInt cmId = aConnectionMethod.GetIntAttributeL( ECmId );
-    TBool embeded = aConnectionMethod.GetBoolAttributeL( ECmDestination ) ?
-                      ETrue :
-                      EFalse;
-
-    CLOG_WRITE_2( "ID: [%d], embDest: [%d]", 
-                  cmId, 
-                  aConnectionMethod.GetBoolAttributeL( ECmDestination ) );
-    
-    for ( TInt i = KCmInitIndex; i < iData->iConnMethodArray->Count(); ++i )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        if( embeded )
-            {
-            if( item->iDNRecord->iEmbeddedSNAP == cmId )
-                {
-                return i;
-                }        
-            }
-        else
-            {
-            if( RECORD_FROM_ELEMENT_ID(item->iDNRecord->iIAP) == cmId )
-                {
-                return i;
-                }
-            }
-        }
-        
-    CLOG_WRITE( "Not found" );
-    User::Leave( KErrNotFound );
-    
-    // dummy return value. never used.
-    return -1;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::FindConnectionMethodL()
-// -----------------------------------------------------------------------------
-// 
-TInt CCmDestinationImpl::FindConnectionMethodL( 
-                                     const CCmPluginBaseEng& aConnectionMethod )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::FindConnectionMethodL" );
-
-    TInt cmId = aConnectionMethod.GetIntAttributeL( ECmId );
-    TBool embeded = aConnectionMethod.GetBoolAttributeL( ECmDestination ) ?
-                      ETrue :
-                      EFalse;
-
-    CLOG_WRITE_2( "ID: [%d], embDest: [%d]", 
-                  cmId, 
-                  aConnectionMethod.GetBoolAttributeL( ECmDestination ) );
-    
-    for ( TInt i = KCmInitIndex; i < iData->iConnMethodArray->Count(); ++i )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        if( embeded )
-            {
-            if( item->iDNRecord->iEmbeddedSNAP == cmId )
-                {
-                return i;
-                }        
-            }
-        else
-            {
-            if( RECORD_FROM_ELEMENT_ID(item->iDNRecord->iIAP) == cmId )
-                {
-                return i;
-                }
-            }
-        }
-        
-    CLOG_WRITE( "Not found" );
-    User::Leave( KErrNotFound );
-    
-    // dummy return value. never used.
-    return -1;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ModifyPriorityL()
-// -----------------------------------------------------------------------------
-//      
-void CCmDestinationImpl::ModifyPriorityL( CCmPluginBase& aCCMItem, 
-                                          TUint aIndex )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::ModifyPriorityL" );
-    
-    if (aCCMItem.GetBoolAttributeL(ECmDestination) ||
-        (aCCMItem.GetBoolAttributeL(ECmVirtual) &&
-         aCCMItem.GetIntAttributeL(ECmNextLayerSNAPId)))
-        {
-        // Priority can not be changed for this cm
-        return;
-        }
-        
-    if( ProtectionLevel() == EProtLevel1 ||
-        ProtectionLevel() == EProtLevel3 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    TBool found( EFalse );
-    TInt cm2 = aCCMItem.GetIntAttributeL( ECmId );
-    
-    if ( aIndex >= ( iData->iConnMethodArray->Count() - KCmInitIndex ) )
-        {
-        User::Leave( KErrArgument );
-        }
-    
-    for ( TInt i = KCmInitIndex; i < iData->iConnMethodArray->Count(); i++ )
-        {
-        LoadPluginL( *(*(iData->iConnMethodArray))[i] );
-            
-        // Compare the IAP IDs
-        TInt cm1 = (*(iData->iConnMethodArray))[i]->iPlugin->GetIntAttributeL( ECmId );        
-        
-        if ( cm1 == cm2 )
-            {
-            CPluginItem* item = (*(iData->iConnMethodArray))[i];
-            
-            TInt pri = (*(iData->iConnMethodArray))[i]->iDNRecord->iPriority;
-            if ( pri == KDataMobilitySelectionPolicyPriorityWildCard )
-                {
-                TUint32 prio = 0;
-                TUint32 bearerType = 0;
-                TUint32 extLevel = 0;
-                
-                TBool isVirtual = PrioDataL( item, prio, bearerType, extLevel );
-                if (prio != KDataMobilitySelectionPolicyPriorityWildCard)
-                    {
-                    // The priority will be changed later when UpdateL is called
-                    // So, the priority will simply be chnaged from
-                    // KDataMobilitySelectionPolicyPriorityWildCard to value i
-                    (*(iData->iConnMethodArray))[i]->iDNRecord->iPriority = i; 
-                    }
-                }
-            
-            (*(iData->iConnMethodArray))[i] = NULL;
-            
-            // remove from array
-            iData->iConnMethodArray->Delete( i );
-            iData->iConnMethodArray->Compress();
-            iData->iConnMethodArray->InsertL( KCmInitIndex + aIndex, item );
-            
-            found = ETrue;           
-            break;
-            }
-        }
-        
-    if ( !found )
-        {
-        User::Leave( KErrArgument );
-        }
-        
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::PriorityL()
-// -----------------------------------------------------------------------------
-//          
-TUint CCmDestinationImpl::PriorityL( CCmPluginBaseEng& aCCMItem )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::PriorityL" );
-
-    TInt index = FindConnectionMethodL( aCCMItem );
-    
-    return (*(iData->iConnMethodArray))[index]->iDNRecord->iPriority;
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::PriorityL()
-// -----------------------------------------------------------------------------
-//          
-TUint CCmDestinationImpl::PriorityL( CCmPluginBase& aCCMItem )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::PriorityL" );
-
-    TInt index = FindConnectionMethodL( aCCMItem );
-    
-    return (*(iData->iConnMethodArray))[index]->iDNRecord->iPriority;
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::UpdateL()
-// -----------------------------------------------------------------------------
-//          
-EXPORT_C void CCmDestinationImpl::UpdateL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::UpdateL" );
-
-    // Connection methods and destination records are updated in 
-    // one transaction.
-    OpenTransactionLC();
-    
-    DeleteConnectionMethodsL();
-
-    // Update protection level of connection methods if it's changed in 
-    // the destination
-    UpdateProtectionL();
-    // Updates all modified connection methods.
-    UpdateConnectionMethodsL();
-    UpdateNetworkRecordL();
-    UpdateDestAPRecordL();
-    UpdateSNAPTableL();
-    UpdateSNAPMetadataTableL();
-        
-    CommitTransactionL( KErrNone );
-    
-    // set the last updated protection level of the destination
-    iData->iLastProtectionLevel = ProtectionLevel();
-
-    // Clear the modified flag
-    iData->iProtectionChanged = EFalse;
-
-    // empty the array, but do not delete it
-    iData->ResetAndDestroyArray( iData->iDeleteCmArray, EFalse );
-        
-    iCmMgr.DestinationUpdated(this);
-    iData->iIdIsValid = ETrue;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::DeleteLD()
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CCmDestinationImpl::DeleteLD()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::DeleteLD" );
-
-    if( ProtectionLevel() == EProtLevel1 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    TInt count = iData->iConnMethodArray->Count();
-
-    if( IsConnectedL() )
-        {
-        User::Leave( KErrInUse );
-        }
-
-    // Check first that any of the CMs in this Destination is not
-    // referenced by Virtual CM
-    TInt i( 0 );
-    
-    for( i = KCmInitIndex; i < count; ++i )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        
-        LoadPluginL( *item );
-            
-        if( item->iPlugin->GetBoolAttributeL( ECmIsLinked ) )
-            {
-            User::Leave( KErrLocked );
-            }
-        }
-    // Check that this Destination is not referenced by any Virtual CM
-    if ( ConnectionMethodCount() > 0 )
-        {
-        CheckIfReferencedByVirtualCML();
-        }
-
-    OpenTransactionLC();
-    TRAPD( err, DeleteRelatedRecordsL( count ) );
-    if ( err )
-        {
-        RollbackTransaction();
-        User::Leave( err );
-        }
-    CommitTransactionL(KErrNone);
-
-    delete this;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::DeleteRelatedRecordsL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::DeleteRelatedRecordsL( TInt aCount )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::DeleteRelatedRecordsL" );
-
-    CleanUpEmbeddedL( Id() );
-
-    TCmDefConnValue deletedItem;
-    deletedItem.iType = ECmDefConnDestination;
-    deletedItem.iId = Id();
-    iCmMgr.HandleDefConnDeletedL( deletedItem );       
-    CMDBRecordBase* dnIapRecord;
-    TInt i;
-    
-    // Here we don't use KCmInitIndex becouse initial entry should be deleted
-    // too!
-    for ( i = 0; i < aCount; i++ )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        
-        // Delete the plugin
-        if ( i >= KCmInitIndex )
-            {
-            if ( !item->iPlugin->Plugin()->IdIsValid() )
-                {
-                // Delete incomplete plugin 
-                delete item->iPlugin;
-                item->iPlugin = NULL;
-                }
-            else
-                {
-                TRAPD( err, item->iPlugin->DeleteL( EFalse ) );
-                
-                if( err != KErrLocked &&
-                    err != KErrNotReady )
-                    {
-                    User::LeaveIfError( err );
-                    }
-                    
-                delete item->iPlugin;
-                item->iPlugin = NULL;
-                }
-            }  
-        
-        // Delete the DN-IAP record
-        dnIapRecord = item->iDNRecord;
-        
-        if ( dnIapRecord->RecordId() )
-            // If we have record Id, this record is already in CommsDat
-            {
-            dnIapRecord->DeleteL( Session() );
-            }   
-        delete item->iDNRecord;
-        item->iDNRecord = NULL;
-        }
-
-    iData->iDestAPRecord->DeleteL( Session() ); // deletes a record
-    iData->iNetworkRecord->DeleteL( Session() ); // deletes a record
-    
-    // Delete SNAPMetadata table    
-    CMDBRecordSet<CCDSNAPMetadataRecord>*  ptrRecordSet = 
-                    new (ELeave) CMDBRecordSet<CCDSNAPMetadataRecord>( 
-                                                 iCmMgr.IconTableId() );
-    CleanupStack::PushL( ptrRecordSet );
-
-    // Prime record
-    CCDSNAPMetadataRecord* record = 
-        new (ELeave) CCDSNAPMetadataRecord( iCmMgr.IconTableId() );
-    CleanupStack::PushL( record );
-    record->iSNAP = Id();
-    ptrRecordSet->iRecords.AppendL( record );
-
-    CleanupStack::Pop( record );
-    record = NULL;
-                
-    if ( ptrRecordSet->FindL( Session() ) )
-        {
-        (*ptrRecordSet)[0]->DeleteL( Session() );          
-        }
-        
-    ptrRecordSet->iRecords.ResetAndDestroy();
-    CleanupStack::PopAndDestroy( ptrRecordSet );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CheckIfEmbeddedL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::CheckIfEmbeddedL( TInt aId )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CheckIfEmbeddedL" );
-    
-    CMDBRecordSet<CCDSnapRecord>*  ptrRecordSet = 
-                    new (ELeave) CMDBRecordSet<CCDSnapRecord>( 
-                                          iCmMgr.DestinationTableId() );
-    CleanupStack::PushL( ptrRecordSet );
-
-    // Prime record
-    CCDSnapRecord* record = iCmMgr.SNAPRecordL( 0 );
-    CleanupStack::PushL( record );
-    record->iEmbeddedSNAP = aId;
-    ptrRecordSet->iRecords.AppendL( record );
-
-    CleanupStack::Pop( record );
-    record = NULL;
-        
-    OpenTransactionLC();    
-    if( ptrRecordSet->FindL( Session() ) )
-        // Match found - it's embedded
-        {
-        User::Leave( KErrNotSupported );          
-        }
-    RollbackTransaction();
-
-    ptrRecordSet->iRecords.ResetAndDestroy();
-    
-    CleanupStack::PopAndDestroy( ptrRecordSet );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::HasEmbeddedL
-// -----------------------------------------------------------------------------
-//
-TBool CCmDestinationImpl::HasEmbeddedL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::HasEmbeddedL" );
-
-    return ( EmbeddedL() != NULL )? ETrue : EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::EmbeddedL
-// -----------------------------------------------------------------------------
-//
-CCmDestinationImpl* CCmDestinationImpl::EmbeddedL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::EmbeddedL" );
-
-    CCmDestinationImpl* retVal = NULL;
-    // Check if the destination contains embedded destinations
-    for ( TInt i = KCmInitIndex; i < iData->iConnMethodArray->Count(); i++ )
-        {
-        LoadPluginL( *(*(iData->iConnMethodArray))[i] );
-        // It's an embedded destination ( this is also true for VPN CMs )
-        retVal = (*(iData->iConnMethodArray))[i]->iPlugin->Destination();
-        if ( retVal )
-            {
-            // as there can be only one
-            // embedded destination, the first one is enough
-            break;
-            }
-        }
-    
-    return retVal;
-    }
- 
- // -----------------------------------------------------------------------------
-// CCmDestinationImpl::CanUseToConnectL
-// -----------------------------------------------------------------------------
-//
-TBool CCmDestinationImpl::CanUseToConnectL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CanUseToConnectL" );
-
-    const TInt KZeroItem = 0;
-    const TInt KOneItem = 1;
-    TInt cmCount = ConnectionMethodCount(); //without KCmInitIndex !!!
-    switch ( cmCount )
-        {
-        case KZeroItem:// no items at all
-            {
-            return EFalse;
-            }
-        case KOneItem:// One item, a possible empty embedded destination!
-            {
-            CCmDestinationImpl* embeddedDest = EmbeddedL();
-            if ( embeddedDest )
-                {
-                // If embeddedDest->ConnectionMethodCount() is not zero,
-                // we have something in the embedded destination
-                // which cannot be another embedded destination, 
-                // since multiple embedding is not allowed.
-                return embeddedDest->ConnectionMethodCount();
-                }
-             else
-                {
-                return ETrue; //not an embedded destination
-                }
-            }
-        default: // more than one item, only one can be an empty embedded
-                 // destination, so we surely contain a valid cm
-            {
-            return ETrue;
-            }
-            
-        }
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::UpdateNetworkRecordL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::UpdateNetworkRecordL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::UpdateNetworkRecordL" );
-
-    if ( !iData->iNetworkRecord->RecordId() || iData->iNewWithId )
-        {
-        CLOG_WRITE( "New Destination, create it!" );
-        //Create a network record, set the host name and add it to the database    
-
-        if ( !iData->iNewWithId )
-        	{
-        	iData->iNetworkRecord->SetRecordId(KCDNewRecordRequest);
-        	}
-
-        SetAttribute( iData->iNetworkRecord, 
-                      ECDProtectedWrite, 
-                      ProtectionLevel() == EProtLevel1 );
-
-        iData->iNetworkRecord->StoreL( Session() ); //adds a new record
-        iData->iNewWithId = EFalse;
-        }
-    else
-        {
-        SetAttribute( iData->iNetworkRecord, 
-                      ECDProtectedWrite, 
-                      ProtectionLevel() == EProtLevel1 );
-
-        iData->iNetworkRecord->ModifyL( Session() );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::UpdateDestAPRecordL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::UpdateDestAPRecordL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::UpdateDestAPRecordL" );
-
-    if ( !iData->iDestAPRecord->RecordId() )
-        {
-        CLOG_WRITE( "New Destination, create AP for it!" );
-        //Create an AP record, set the selection policy(network id)
-        //and add it to the database
-        iData->iDestAPRecord->SetRecordId(KCDNewRecordRequest);
-        iData->iDestAPRecord->iRecordTag = CreateDestinationAPTagIdL();
-        iData->iDestAPRecord->iCustomSelectionPolicy = iData->iNetworkRecord->RecordId();
-        iData->iDestAPRecord->iRecordName.SetL(iData->iNetworkRecord->iRecordName);
-        iData->iDestAPRecord->StoreL( Session() ); //adds a new record
-        }
-    else
-        {
-        iData->iDestAPRecord->iCustomSelectionPolicy = iData->iNetworkRecord->RecordId();
-        iData->iDestAPRecord->iRecordName.SetL(iData->iNetworkRecord->iRecordName);
-        iData->iDestAPRecord->ModifyL( Session() ); //modifies the existing
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CreateDestinationAPTagId()
-// -----------------------------------------------------------------------------
-//
-TUint32 CCmDestinationImpl::CreateDestinationAPTagIdL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CreateDestinationAPTagId" );
-
-    return KCmDefaultDestinationAPTagId + iData->iNetworkRecord->RecordId();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::GetDestinationAPTagId()
-// -----------------------------------------------------------------------------
-//
-TUint32 CCmDestinationImpl::GetDestinationAPTagId( )
-    {
-    return iData->iNetworkRecord->RecordId() + KCmDefaultDestinationAPTagId;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::UpdateProtectionL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::UpdateProtectionL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::UpdateProtectionL" );
-
-    if( !iData->iProtectionChanged )
-        // protection level not changed -> nothing to update here
-        {
-        return;
-        }
-        
-    for ( TInt i = KCmInitIndex; i < iData->iConnMethodArray->Count(); i++ )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        
-        LoadPluginL( *item );
-        
-        switch ( ProtectionLevel() ) 
-            {
-            case EProtLevel0:
-            case EProtLevel2:
-                {
-                // from the protection level 0 to 2 and vice versa 
-                // the ECmProtected value of the CM is not changed                
-                if( iData->iLastProtectionLevel == EProtLevel1 ||
-                    iData->iLastProtectionLevel == EProtLevel3 )
-                    {
-                    item->iPlugin->SetBoolAttributeL( ECmProtected, EFalse );
-                    }
-                }
-              break;
-            case EProtLevel1:
-            case EProtLevel3:
-                {
-                item->iPlugin->SetBoolAttributeL( ECmProtected, ETrue );
-                }
-              break;
-            default:
-                {
-                //
-                }
-              break;              
-             }                      
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::UpdateConnectionMethodsL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::UpdateConnectionMethodsL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::UpdateConnectionMethodsL" );
-
-    for( TInt i = KCmInitIndex; i < iData->iConnMethodArray->Count(); ++i )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        
-        // If the plugin is not loaded, it means that this a old one, or nothing
-        // modified in it -> there's no need to update it.
-        if( item->iPlugin )
-            {
-            item->iPlugin->UpdateL();
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetAttribute()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::SetAttribute( CMDBRecordBase* aRecord, 
-                                       TUint32 aAttribute, TBool aSet )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetAttribute" );
-    
-    if ( aSet && !aRecord->IsSetAttribute( aAttribute ) )
-        {
-        aRecord->SetAttributes( aAttribute );
-        }
-    else if( !aSet && aRecord->IsSetAttribute( aAttribute ) )
-        {
-        aRecord->ClearAttributes( aAttribute );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::UpdateSNAPTableL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::UpdateSNAPTableL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::UpdateSNAPTableL" );
-    
-    TInt i;
-    CCDSnapRecord* dnIapRecord;
-
-    // Now we have only records of which are new or needs to be updated
-    for ( i = KCmInitIndex; i < iData->iConnMethodArray->Count(); ++i )
-        {
-        TInt pri = (*(iData->iConnMethodArray))[i]->iDNRecord->iPriority;
-
-        if ( pri != i &&
-             pri != KDataMobilitySelectionPolicyPriorityWildCard )
-            // wildcard priority CM have to be the last one in the array.
-            // In theory they cannot be re-prioritized.
-            {
-            (*(iData->iConnMethodArray))[i]->iDNRecord->iPriority = i;
-            }
-        }
-
-    // Here we don't use KCmInitIndex becouse initial entry should be updated 
-    // too!
-    for ( i = 0; i < iData->iConnMethodArray->Count(); ++i )
-        {
-        dnIapRecord = (*(iData->iConnMethodArray))[i]->iDNRecord;
-        
-        if( dnIapRecord->iIAP )
-            {
-            if( !RECORD_FROM_ELEMENT_ID( dnIapRecord->iIAP ) )
-                {
-                dnIapRecord->iIAP = (*(iData->iConnMethodArray))[i]->iPlugin->IAPRecordElementId();
-                }
-            }
-        
-        // Set protection on connection methods 
-        SetAttribute( dnIapRecord, 
-                      ECDProtectedWrite, 
-                      ProtectionLevel() == EProtLevel1 ? ETrue : EFalse );
-        // Metadata is used instead of ECDHidden Attribute                      
-        //SetAttribute( dnIapRecord, ECDHidden, iData->iNetworkRecord->Attributes() & ECDHidden );
-        CheckIfNameModifiedL( dnIapRecord );
-             
-        if ( dnIapRecord->RecordId() )
-            {           
-            dnIapRecord->ModifyL( Session() );
-            }
-        else
-            // this is a new record
-            {
-            dnIapRecord->SetRecordId(KCDNewRecordRequest);
-            dnIapRecord->iSNAP = Id();
-            dnIapRecord->StoreL( Session() );
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::UpdateSNAPMetadataTableL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::UpdateSNAPMetadataTableL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::UpdateSNAPMetadataTableL" );
-    
-    if( !iData->iMetaDataRec->RecordId() )
-        // new record
-        {
-        iData->iMetaDataRec->iSNAP = Id();
-        iData->iMetaDataRec->SetRecordId( KCDNewRecordRequest );
-        iData->iMetaDataRec->StoreL( Session() );
-        }
-    else
-        {
-        iData->iMetaDataRec->ModifyL( Session() );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::LoadSNAPMetadataTableL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::LoadSNAPMetadataTableL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::LoadSNAPMetadataTableL" );
-
-    iData->iMetaDataRec = new (ELeave) CCDSNAPMetadataRecord( 
-                                            iCmMgr.IconTableId() );
-
-    iData->iMetaDataRec->iSNAP = Id();
-                
-    if ( !iData->iMetaDataRec->FindL( Session() ) )
-        // Not found -> fill in with default values
-        {
-        iData->iMetaDataRec->iSNAP = Id();
-        iData->iMetaDataRec->iIcon = 0;
-        iData->iMetaDataRec->iMetadata = 0;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::LoadNetworkRecordL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::LoadNetworkRecordL( TUint32 /*aDestinationId*/ )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::LoadNetworkRecordL" );
-
-    // set the record ID
-    iData->iNetworkRecord->SetRecordId( iData->iDestAPRecord->iCustomSelectionPolicy );
-  
-    // load the record ID
-    iData->iNetworkRecord->LoadL( Session() );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::LoadDestAPRecordL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::LoadDestAPRecordL( TUint32 aDestinationId )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::LoadDestAPRecordL" );
-
-    if ( aDestinationId > KCmDefaultDestinationAPTagId )
-        {
-        // set the record ID
-        iData->iDestAPRecord->iRecordTag = aDestinationId;
-        // load the record ID
-        if ( iData->iDestAPRecord->FindL( Session() ) )
-            {
-            iData->iDestAPRecord->LoadL( Session() );
-            }
-        else
-            {
-            User::Leave( KErrNotFound );
-            }
-        }
-    else
-        {
-        User::Leave( KErrArgument );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::LoadConnectionMethodsL()
-// -----------------------------------------------------------------------------
-//    
-void CCmDestinationImpl::LoadConnectionMethodsL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::LoadConnectionMethodsL" );
-    
-    CMDBRecordSet<CCDSnapRecord>*  ptrRecordSet = 
-                        new (ELeave) CMDBRecordSet<CCDSnapRecord>( 
-                                          iCmMgr.DestinationTableId() );
-    CleanupStack::PushL( ptrRecordSet );
-
-    // Prime record
-    CCDSnapRecord* snapRec = iCmMgr.SNAPRecordL( 0 );
-    CleanupStack::PushL( snapRec );
-    snapRec->iSNAP = Id();
-    ptrRecordSet->iRecords.AppendL( snapRec );
-
-    CleanupStack::Pop( snapRec );
-    snapRec = NULL;
-
-    OpenTransactionLC();            
-    if ( !ptrRecordSet->FindL(Session()) )
-        // no conn method is to this destination -> it was not us who made it
-        {
-        CLOG_WRITE( "Empty destination" );
-        User::Leave( KErrUnderflow );
-        }
-
-    TLinearOrder<CMDBRecordBase> orderbyId( 
-                                    CCmDestinationImpl::SortRecordsByPriority );
-    ptrRecordSet->iRecords.Sort(orderbyId);
-
-    TInt count = ptrRecordSet->iRecords.Count();
-    
-    //Load IAP records to be used to check if the IAPs are existing
-    CMDBRecordSet<CCDIAPRecord>*  ptrIapSet = 
-                    new (ELeave) CMDBRecordSet<CCDIAPRecord>( KCDTIdIAPRecord );
-    CleanupStack::PushL( ptrIapSet );
-    
-    TRAPD( err, ptrIapSet->LoadL( Session() ) );
-
-    if( !err )
-        {
-        CLOG_WRITE_1_PTR( NULL, "Record num [%d]", ptrIapSet->iRecords.Count() );
-        
-        // Here we don't use CM_INIT_INDEX because initial entry should be 
-        // loaded too!
-        for ( TInt i = 0; i < count; i++ )
-            {
-            snapRec = (*ptrRecordSet)[i];
-            TBool exist( EFalse );
-            
-            // Check if CM really exists, if not 
-            // it should be cleared from selection policy table
-            TInt32 embedded = QUERY_INT_FIELD( 
-                                snapRec, 
-                                KCDTIdDataMobilitySelectionPolicyEmbeddedSNAP );
-            TInt32 iap = RECORD_FROM_ELEMENT_ID( 
-                            QUERY_INT_FIELD( 
-                                       snapRec, 
-                                       KCDTIdDataMobilitySelectionPolicyIAP ) );
-            // Item could be embedded destination or iap
-            if ( embedded )
-                {
-                CCDAccessPointRecord * destAPRecord = static_cast<CCDAccessPointRecord *>(
-                                CCDRecordBase::RecordFactoryL( KCDTIdAccessPointRecord ) );
-                CleanupStack::PushL( destAPRecord );
-                destAPRecord->iRecordTag = embedded;
-                if ( !destAPRecord->FindL( Session() ) )
-                    {
-                    CleanUpSnapMetadataTableL( embedded );
-                    (*ptrRecordSet)[i]->DeleteL( Session() );
-                    }
-                else
-                    {
-                    exist = ETrue;
-                    }
-                    
-                CleanupStack::PopAndDestroy( destAPRecord );
-                }                
-            else if ( iap )
-                // This is an AP
-                {
-                for ( TInt iapInd = 0; iapInd < ptrIapSet->iRecords.Count(); ++iapInd )
-                    {
-                    CMDBRecordBase* iapRec = (*ptrIapSet)[iapInd];
-
-                    if ( iap == iapRec->RecordId() )
-                        {
-                        exist = ETrue;
-                        delete iapRec;
-                        // this way we can filter out duplicated CMs
-                        ptrIapSet->iRecords.Remove( iapInd );
-                        break;
-                        }
-                    }
-                if ( !exist )
-                    {
-                    DeleteIAPRecordsL( snapRec );
-                    }
-                }
-            
-            // The first record is a dummy one where iap and snap are zero
-            if ( exist || ( !embedded && !iap ) )
-                {
-                // The item may have to be loaded at this stage so that the supported can be checked 
-                // before it is put into iData->iConnMethodArray for the item may be unsupported.
-                TInt err( 0 );
-                
-                if ( i != 0 )
-                    {
-                    if ( embedded )
-                        {
-                        TRAP( err, TUint32 bearerType = iCmMgr.BearerTypeFromCmIdL( embedded ) );
-                        }
-                    else if ( iap )
-                        {
-                        TRAP( err, TUint32 bearerType = iCmMgr.BearerTypeFromCmIdL( iap ) );
-                        }
-                    }
-               
-                if ( !err )
-                    {
-                    CPluginItem* item = new (ELeave) CPluginItem;
-                    CleanupStack::PushL( item );
-                    
-                    item->iDNRecord = iCmMgr.SNAPRecordL( snapRec->RecordId() );
-                    item->iPlugin = NULL;
-
-                    iData->iConnMethodArray->AppendL( item );
-                
-                    CleanupStack::Pop( item );
-                    }
-                }
-            }
-        }
-    else
-        // There's no connection method in the phone
-        {
-        CPluginItem* item = new (ELeave) CPluginItem;
-        
-        CleanupStack::PushL( item );
-        
-        item->iDNRecord = iCmMgr.SNAPRecordL( (*ptrRecordSet)[0]->RecordId() );
-
-        iData->iConnMethodArray->AppendL( item );       
-        
-        CleanupStack::Pop( item );                 
-        }
-        
-    CleanupStack::PopAndDestroy( ptrIapSet );
-    RollbackTransaction();
-        
-    ptrRecordSet->iRecords.ResetAndDestroy();
-    CleanupStack::PopAndDestroy( ptrRecordSet );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ReLoadConnectionMethodsL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::ReLoadConnectionMethodsL()
-    {
-    TInt count = iData->iConnMethodArray->Count();
-    //TInt index = KCmInitIndex;
-    TInt index = 0;
-    
-    while ( index < count )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[index];
-        item->iFlags |= CPluginItem::ERemoveCm;
-        
-        iData->iDeleteCmArray->AppendL( item );
-        iData->iConnMethodArray->Delete( index );
-        iData->iConnMethodArray->Compress();
-        
-        count = iData->iConnMethodArray->Count();
-        }
-    
-    // Empty the array, but do not delete it
-    iData->ResetAndDestroyArray( iData->iDeleteCmArray, EFalse );
-    
-    LoadConnectionMethodsL();
-    }
-    
-// ---------------------------------------------------------
-// CCmDestinationImpl::CleanUpEmbeddedL
-// ---------------------------------------------------------
-//
-void CCmDestinationImpl::CleanUpEmbeddedL(TUint32 aDestId)
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CleanUpEmbeddedL" );
-
-    TBool found = EFalse;
-    CMDBRecordSet<CCDSnapRecord>*  ptrRecordSet = 
-                        new (ELeave) CMDBRecordSet<CCDSnapRecord>( 
-                                          iCmMgr.DestinationTableId() );
-    CleanupStack::PushL( ptrRecordSet );
-    // Prime record
-    CCDSnapRecord* snapRec = iCmMgr.SNAPRecordL( 0 );
-    CleanupStack::PushL( snapRec );
-    snapRec->iEmbeddedSNAP = aDestId;
-    ptrRecordSet->iRecords.AppendL( snapRec );
-    CleanupStack::Pop( snapRec );
-    snapRec = NULL;
-
-    if ( ptrRecordSet->FindL(Session()) )
-        {
-        for ( TInt i = 0; i <ptrRecordSet->iRecords.Count(); i++ )
-            {
-            (*ptrRecordSet)[i]->DeleteL( Session() );
-            }
-        found = ETrue;
-        }
-    CleanupStack::PopAndDestroy( ptrRecordSet );
-    if (found)
-        {
-        CleanUpSnapMetadataTableL(aDestId);    
-        }
-    }
-// ---------------------------------------------------------
-// CCmDestinationImpl::CleanUpSnapMetadataTableL
-// ---------------------------------------------------------
-//
-void CCmDestinationImpl::CleanUpSnapMetadataTableL( TUint32 aSnap )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CleanUpSnapMetadataTableL" );
-    
-    // Just to test how many record we have
-    CMDBRecordSet<CCDSNAPMetadataRecord>*  ptrRecordSet 
-                = new (ELeave) CMDBRecordSet<CCDSNAPMetadataRecord>( 
-                                                iCmMgr.IconTableId() );
-    CleanupStack::PushL( ptrRecordSet );
-        
-    // Prime record
-    CCDSNAPMetadataRecord* record = 
-            new (ELeave) CCDSNAPMetadataRecord( iCmMgr.IconTableId() );
-    CleanupStack::PushL( record );
-    
-    record->iSNAP = aSnap;
-    ptrRecordSet->iRecords.AppendL( record );
-    
-    CleanupStack::Pop( record );
-    record = NULL;
-    
-    if ( ptrRecordSet->FindL( Session() ) )
-        {
-        for ( TInt i = 0; i <ptrRecordSet->iRecords.Count(); i++ )
-            {
-            (*ptrRecordSet)[i]->DeleteL( Session() );
-            }
-        }
-        
-    CleanupStack::PopAndDestroy( ptrRecordSet );    //ptrRecordSet 
-    }
-
-// ---------------------------------------------------------
-// CCmDestinationImpl::CleanUpSeamlessnessTableL
-// ---------------------------------------------------------
-//
-void CCmDestinationImpl::CleanUpSeamlessnessTableL( TUint32 aIapId )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CleanUpSeamlessnesstableL" );
-    
-    // Just to test how many record we have
-    CMDBRecordSet<CCDIAPMetadataRecord>*  ptrRecordSet 
-        = new (ELeave) CMDBRecordSet<CCDIAPMetadataRecord>( 
-                                        iCmMgr.SeamlessnessTableId() );
-    CleanupStack::PushL( ptrRecordSet );
-        
-    // Prime record
-    CCDIAPMetadataRecord* record = 
-      new (ELeave) CCDIAPMetadataRecord( iCmMgr.SeamlessnessTableId() );
-    CleanupStack::PushL( record );
-    
-    TMDBElementId elementid = iCmMgr.SeamlessnessTableId() & 
-                              KCDTIdIAPMetadataIAP & 
-                              aIapId;
-    record->iSeamlessness = elementid;
-    ptrRecordSet->iRecords.AppendL( record );
-    
-    CleanupStack::Pop( record );
-    record = NULL;
-    
-    if ( ptrRecordSet->FindL( Session() ) )
-        {
-        for ( TInt i = 0; i <ptrRecordSet->iRecords.Count(); i++ )
-            {
-            (*ptrRecordSet)[i]->DeleteL( Session() );
-            }
-        }
-        
-    CleanupStack::PopAndDestroy( ptrRecordSet );
-    }
-    
-// ---------------------------------------------------------
-// CCmDestinationImpl::SortRecordsByPriority
-// ---------------------------------------------------------
-//
-TInt CCmDestinationImpl::SortRecordsByPriority( const CMDBRecordBase& aLeft, 
-                                                const CMDBRecordBase& aRight )
-    {
-    TUint left = QUERY_INT_FIELD( const_cast<CMDBRecordBase*>(&aLeft), 
-                                  KCDTIdDataMobilitySelectionPolicyPriority );
-    TUint right = QUERY_INT_FIELD( const_cast<CMDBRecordBase*>(&aRight),
-                                   KCDTIdDataMobilitySelectionPolicyPriority );
-
-    /*
-    *   - negative value, if aLeft is less than aRight;
-    *   - 0,              if aLeft equals to aRight;
-    *   - positive value, if aLeft is greater than aRight.
-    */
-    if ( left == right )
-        {
-        return 0;
-        }
-    
-    return ( left < right ) ? -1 : 1;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::IconL()
-// -----------------------------------------------------------------------------
-//      
-EXPORT_C CGulIcon* CCmDestinationImpl::IconL() 
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::IconL" );
-
-    return IconL( iData->iMetaDataRec->iIcon );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetIconL()
-// -----------------------------------------------------------------------------
-//      
-void CCmDestinationImpl::SetIconL( TUint32 anIndex )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetIconL" )
-    
-    if( ProtectionLevel() == EProtLevel1 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    iData->iMetaDataRec->iIcon = anIndex;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationData::MetadataL()
-// -----------------------------------------------------------------------------
-//
-TUint32 CCmDestinationData::MetadataL( TSnapMetadataField aMetaField ) const
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::MetadataL" )
-
-    TUint retVal( 0 );
-
-    switch( aMetaField )
-        {
-        case ESnapMetadataInternet:
-            {
-            retVal = TUint32(iMetaDataRec->iMetadata) & 
-                     ESnapMetadataInternet;
-            }
-            break;
-            
-        case ESnapMetadataHighlight:
-            {
-            retVal = TUint32(iMetaDataRec->iMetadata) & 
-                     ESnapMetadataHighlight;
-            }
-            break;
-            
-        case ESnapMetadataHiddenAgent:
-            {
-            retVal = TUint32(iMetaDataRec->iMetadata) &
-                     ESnapMetadataHiddenAgent;
-            }
-            break;
-
-        case ESnapMetadataDestinationIsLocalised:
-            {
-            retVal = (TUint32(iMetaDataRec->iMetadata) &
-                      ESnapMetadataDestinationIsLocalised) >> 4;
-            }
-            break;
-            
-        case ESnapMetadataPurpose:
-            {
-            retVal = (TUint32(iMetaDataRec->iMetadata) &
-                     ESnapMetadataPurpose) >> 8;
-            }
-            break;
-
-        default:
-            {
-            User::Leave( KErrArgument );
-            }
-        }
-    
-    return retVal;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::MetadataL()
-// -----------------------------------------------------------------------------
-//
-TUint32 CCmDestinationImpl::MetadataL( TSnapMetadataField aMetaField ) const
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::MetadataL" )
-    return iData->MetadataL(aMetaField);
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetMetadataL()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::SetMetadataL( TSnapMetadataField aMetaField, 
-		                               TUint32 aValue )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetMetadata" );
-    
-    if( ProtectionLevel() == EProtLevel1 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-        
-    switch( aMetaField )
-        {
-        case ESnapMetadataInternet:
-            {
-            if( aValue )
-                {
-                CheckIfInternetExistsL();
-                
-                iData->iMetaDataRec->iMetadata = 
-                        ESnapMetadataInternet | iData->iMetaDataRec->iMetadata;
-
-                // Set the new way, too!!!
-                SetMetadataL( ESnapMetadataDestinationIsLocalised, 
-                              ELocalisedDestInternet );
-                }
-            else
-                {
-                iData->iMetaDataRec->iMetadata =
-                        ~ESnapMetadataInternet & iData->iMetaDataRec->iMetadata;
-                // Clear the new way, too!!!
-                SetMetadataL( ESnapMetadataDestinationIsLocalised, 
-                              ENotLocalisedDest );                
-                }
-            }
-            break;
-
-        case ESnapMetadataDestinationIsLocalised:
-            {
-            // Check that aValue is within valid range.
-            if ( aValue > ELocalisedDestIntranet )
-                {
-                User::Leave( KErrArgument );
-                }
-            
-            TUint32 oldVal = TUint32(iData->iMetaDataRec->iMetadata) & 
-                             ESnapMetadataInternet;
-            if ( aValue != ENotLocalisedDest )
-                {
-                // check if already exists...
-                CheckIfLocalisedDestExistL( aValue );
-                // does not exists, first clear original value
-                // if old one was Internet, clear that, too:
-                if ( oldVal )
-                    {
-                    // copied here to avoid recursivity!!!
-                    // SetMetadataL(ESnapMetadataInternet, 0 );
-                    iData->iMetaDataRec->iMetadata =
-                        ~ESnapMetadataInternet & iData->iMetaDataRec->iMetadata;
-                    }
-                // clearing
-                iData->iMetaDataRec->iMetadata =
-                                                ~ESnapMetadataDestinationIsLocalised &
-                                                iData->iMetaDataRec->iMetadata;
-                // set new value
-                TUint32 mask = aValue << 4; 
-                iData->iMetaDataRec->iMetadata = 
-                                                mask | 
-                                                iData->iMetaDataRec->iMetadata;
-                // for backward compatibility, if it is internet, 
-                // set it the old way, too
-                if ( aValue == ELocalisedDestInternet )
-                    {
-                    // copied here to avoid recursivity!!!
-                    iData->iMetaDataRec->iMetadata = 
-                        ESnapMetadataInternet | iData->iMetaDataRec->iMetadata;
-                    // SetMetadataL(ESnapMetadataInternet, 1 );
-                    }
-                }
-            else
-                {
-                // not localised, set to ENotLocalisedDest = 0
-                // for backward compatibility, if it was internet, 
-                // set it the old way, too
-                if ( oldVal )
-                    {
-                    SetMetadataL(ESnapMetadataInternet, 0 );
-                    }
-                // clear the new way...
-                iData->iMetaDataRec->iMetadata =
-                                                ~ESnapMetadataDestinationIsLocalised &
-                                                iData->iMetaDataRec->iMetadata;
-                }
-
-            break;
-            }
-
-        case ESnapMetadataPurpose:
-            {
-            // Check that aValue is within valid range.
-            if ( aValue > ESnapPurposeIntranet )
-                {
-                User::Leave( KErrArgument );
-                }
-            
-            // Check if destination with the given purpose already
-            // exists
-            CheckIfPurposeExistL( aValue );
-            
-            // ESnapPurposeInternet and ESnapPurposeMMS need special
-            // handling
-            switch( aValue )
-                {
-                case ESnapPurposeUnknown:
-                    {
-                    // This also clears ESnapMetadataInternet
-                    SetMetadataL( ESnapMetadataDestinationIsLocalised, ENotLocalisedDest );
-                    break;
-                    }
-                case ESnapPurposeInternet:
-                    {
-                    // This sets ESnapMetadataInternet and
-                    // ELocalisedDestInternet
-                    SetMetadataL( ESnapMetadataInternet, 1 );
-                    }
-                    break;
-                case ESnapPurposeOperator:
-                    {
-                    SetMetadataL( ESnapMetadataDestinationIsLocalised, 
-                                  ELocalisedDestWap );
-                    }
-                	break;
-                case ESnapPurposeMMS:
-                    {
-                    SetMetadataL( ESnapMetadataDestinationIsLocalised, 
-                                  ELocalisedDestMMS );
-                    iData->iMetaDataRec->iMetadata = 
-                        ESnapMetadataHiddenAgent | iData->iMetaDataRec->iMetadata;
-                    }
-                    break;
-                case ESnapPurposeIntranet:
-                    {
-                    SetMetadataL( ESnapMetadataDestinationIsLocalised,
-                                  ELocalisedDestIntranet );
-                    }
-                    break;
-                default:
-                    break;
-                }
-            
-            TUint32 value = aValue << 8;
-            // reset the purpose bit
-            iData->iMetaDataRec->iMetadata = ~ESnapMetadataPurpose & iData->iMetaDataRec->iMetadata;
-            // set the purpose bit
-            iData->iMetaDataRec->iMetadata = value | iData->iMetaDataRec->iMetadata;
-            }
-            break;
-
-        case ESnapMetadataHighlight:
-            {
-            if( aValue )
-                {
-                iData->iMetaDataRec->iMetadata = 
-                        ESnapMetadataHighlight | iData->iMetaDataRec->iMetadata;
-                }
-            else
-                {
-                iData->iMetaDataRec->iMetadata =
-                        ~ESnapMetadataHighlight & iData->iMetaDataRec->iMetadata;
-                }
-            }
-            break;
-            
-        case ESnapMetadataHiddenAgent:
-            {
-            TUint32 internet = iData->iMetaDataRec->iMetadata & ESnapMetadataInternet;
-            TUint32 internetLocal = ( iData->iMetaDataRec->iMetadata & ESnapMetadataDestinationIsLocalised ) >> 4;
-            TUint32 internetPurpose = ( iData->iMetaDataRec->iMetadata & ESnapMetadataPurpose ) >> 8;
-            if( aValue )
-                {
-                if ( internet
-                     || ( internetLocal == ELocalisedDestInternet )
-                     || ( internetPurpose == ESnapPurposeInternet ) )
-                    {
-                    User::Leave( KErrArgument );
-                    }
-
-                iData->iMetaDataRec->iMetadata = 
-                        ESnapMetadataHiddenAgent | iData->iMetaDataRec->iMetadata;
-                }
-            else
-                {
-                iData->iMetaDataRec->iMetadata = 
-                        ~ESnapMetadataHiddenAgent & iData->iMetaDataRec->iMetadata;
-                }
-            }
-            break;
-            
-        default:
-            {
-            User::Leave( KErrArgument );
-            }
-        }
-    }
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CreateEmbeddedDestinationPluginL()
-// -----------------------------------------------------------------------------
-//      
-void CCmDestinationImpl::CreateEmbeddedDestinationPluginL( 
-                                                        CPluginItem& aItem, 
-                                                        TInt aDestinationId )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CreateEmbeddedDestinationPluginL" );
-
-    aItem.iPlugin = iCmMgr.CreateConnectionMethodL(KUidEmbeddedDestination, this); 
-    CleanupStack::PushL( aItem.iPlugin );
-    // Load this destination
-    aItem.iPlugin->LoadL( aDestinationId );
-    CleanupStack::Pop( aItem.iPlugin );        
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::LoadEmbeddedDestinationPluginL()
-// -----------------------------------------------------------------------------
-//      
-void CCmDestinationImpl::LoadEmbeddedDestinationPluginL( 
-                                                        CPluginItem& aItem )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::LoadEmbeddedDestinationPluginL" );
-
-    CreateEmbeddedDestinationPluginL(aItem, aItem.iDNRecord->ElementId());
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::LoadPluginL()
-// -----------------------------------------------------------------------------
-//      
-void CCmDestinationImpl::LoadPluginL( CPluginItem& aItem )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::LoadPluginL" );
-    
-    if( aItem.iPlugin )
-        {
-        return;
-        }
-        
-    TUint32 cmId;
-    if ( aItem.iDNRecord->iEmbeddedSNAP )
-        // This is an embedded destination
-        {
-        cmId = aItem.iDNRecord->iEmbeddedSNAP;
-        
-        }
-    else
-        // Normal IAP id
-        {
-        cmId = RECORD_FROM_ELEMENT_ID( aItem.iDNRecord->iIAP );
-        }
-
-    aItem.iPlugin = iCmMgr.DoFindConnMethodL( 
-                        cmId, 
-                        this );
-                        
-    CLOG_ATTACH( aItem.iPlugin, this );
-    }    
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::PluginClosed()
-// -----------------------------------------------------------------------------
-//
-void CCmDestinationImpl::PluginClosed( CCmPluginBase* aPlugin )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::PluginClosed" );
-
-    if (iData->iConnMethodArray)
-        {
-        for ( TInt i = 0; i < iData->iConnMethodArray->Count(); ++i )
-            {
-            if ( (*(iData->iConnMethodArray))[i]->iPlugin == aPlugin )
-                {
-                // Must NOT delete it here. Simply forget that
-                // we had this plugin instance.
-                (*(iData->iConnMethodArray))[i]->iPlugin = NULL;
-                
-                break;
-                }
-            }        
-        }
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationData::IsHiddenL()
-// -----------------------------------------------------------------------------
-//          
-TBool CCmDestinationData::IsHiddenL()
-    {
-    TSnapMetadataField hiddenValue = ( TSnapMetadataField )MetadataL( ESnapMetadataHiddenAgent );
-    if ( hiddenValue == ESnapMetadataHiddenAgent )
-        {
-    	return ETrue;
-        }
-    else
-        {
-    	return EFalse;
-        }
-    }    
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::IsHiddenL()
-// -----------------------------------------------------------------------------
-//          
-EXPORT_C TBool CCmDestinationImpl::IsHidden()
-    {
-    TBool hidden( EFalse );
-    TRAPD( err, hidden = iData->IsHiddenL() );
-    __ASSERT_ALWAYS( err == KErrNone, User::Panic(_L( "CMManager" ), err ) );
-    
-    return hidden;
-    }    
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetHiddenL()
-// -----------------------------------------------------------------------------
-//          
-EXPORT_C void CCmDestinationImpl::SetHiddenL( TBool aHidden )
-    {
-    if( ProtectionLevel() == EProtLevel1 )
-        {
-        CCmManagerImpl::HasCapabilityL( ECapabilityNetworkControl );
-        }
-    SetMetadataL( ESnapMetadataHiddenAgent, aHidden );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::DeleteConnectionMethodsL
-//
-// Can be called only during opened transaction. 
-// Array is emptied only after transaction commited!
-//
-// -----------------------------------------------------------------------------
-//          
-void CCmDestinationImpl::DeleteConnectionMethodsL()
-    {
-    LOGGER_ENTERFN( "DeleteConnectionMethodsL" );
-    
-    TInt i;
-    
-    for ( i = 0; i < iData->iDeleteCmArray->Count(); ++i )
-        {
-        CPluginItem* item = (*iData->iDeleteCmArray)[i];
-        
-        LoadPluginL( *item );   
-
-        if( !(item->iFlags & CPluginItem::ERemoveCm) )
-            {
-            item->iPlugin->DeleteL( EFalse );
-            }
-            
-        item->iDNRecord->DeleteL( Session() );
-        }
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationData::ResetAndDestroyArray
-// -----------------------------------------------------------------------------
-//          
-void CCmDestinationData::ResetAndDestroyArray( CCmArray* &aArray, TBool aDestroy )
-    {
-    if( aArray )
-        {
-        for ( TInt i = 0; i < aArray->Count(); ++i )
-            {
-            CPluginItem* item = (*aArray)[i];
-            
-            delete item->iPlugin;
-            delete item->iDNRecord;
-            }
-            
-        aArray->ResetAndDestroy();
-        
-        if( aDestroy )
-            {
-            delete aArray; aArray = NULL;
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::DeleteIAPRecordsL
-// -----------------------------------------------------------------------------
-//          
-void CCmDestinationImpl::DeleteIAPRecordsL( CMDBRecordBase* aSnapRecord )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::DeleteIAPRecordsL" );
-
-    // First delete the metadata record
-    CCDIAPMetadataRecord* metaRec = new (ELeave) CCDIAPMetadataRecord( 
-                                        iCmMgr.SeamlessnessTableId() );
-                                        
-    CleanupStack::PushL( metaRec );
-
-    metaRec->iIAP = RECORD_FROM_ELEMENT_ID( 
-                                QUERY_INT_FIELD( 
-                                       aSnapRecord, 
-                                       KCDTIdDataMobilitySelectionPolicyIAP ) );
-
-    if( metaRec->FindL( Session() ) )
-        {
-        metaRec->DeleteL( Session() );
-        }
-        
-    CleanupStack::PopAndDestroy( metaRec );
-    
-    // and now delete the SNAP record
-    aSnapRecord->DeleteL( Session() );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CheckIfNameModifiedL
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::CheckIfNameModifiedL( CCDSnapRecord* aRecord )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CheckIfNameModifiedL" );
-            
-    if ( !TPtrC(iData->iDestAPRecord->iRecordName).CompareF( TPtrC(aRecord->iRecordName) ) )
-        // names matches
-        {
-        return;
-        }
-    
-    aRecord->iRecordName.SetL( TPtrC(iData->iDestAPRecord->iRecordName) );
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::IsConnectedL
-// -----------------------------------------------------------------------------
-EXPORT_C TBool CCmDestinationImpl::IsConnectedL() const
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::IsConnectedL" );
-
-    CCmDestinationImpl* myThis = const_cast<CCmDestinationImpl*>( this );
-    TBool retVal( EFalse );
-    TInt i;
-    
-    for( i = KCmInitIndex; i < iData->iConnMethodArray->Count(); ++i )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        
-        myThis->LoadPluginL( *item );
-            
-        if( item->iPlugin->GetBoolAttributeL( ECmConnected ) )
-            {
-            retVal = ETrue;
-            break;
-            }
-        }
-        
-    return retVal;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CheckIfInternetExistsL
-//
-// There can be only one SNAP with Internet metadata field set.
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::CheckIfInternetExistsL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CheckIfInternetExistsL" );
-
-    OpenTransactionLC();
-
-    CMDBRecordSet<CCDSNAPMetadataRecord>* metaSet = 
-           new ( ELeave ) CMDBRecordSet<CCDSNAPMetadataRecord>( 
-                                                 iCmMgr.IconTableId() );
-    CleanupStack::PushL( metaSet );
-
-    TRAP_IGNORE( metaSet->LoadL( Session() ) );
-
-    for ( TInt i = 0; i < metaSet->iRecords.Count(); ++i )
-        {
-        TInt meta = QUERY_INT_FIELD( metaSet->iRecords[i], 
-                                     KCDTIdSNAPMetadataMetadata );
-
-        if( meta & ESnapMetadataInternet )
-            {
-            if( Id() != QUERY_INT_FIELD( metaSet->iRecords[i], 
-                                                KCDTIdSNAPMetadataSNAP ) )
-                {
-                User::Leave( KErrAlreadyExists );
-                }
-            }
-        }
-    
-    CleanupStack::PopAndDestroy( metaSet );
-    
-    RollbackTransaction();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ConnectionMethodIndex
-// -----------------------------------------------------------------------------
-TInt CCmDestinationImpl::ConnectionMethodIndex( TUint32 aCmId )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::ConnectionMethodIndex" );
-
-    TInt found( KErrNotFound );
-    
-    for ( TInt i = KCmInitIndex; i < iData->iConnMethodArray->Count(); ++i )
-        {
-        CPluginItem* item = (*(iData->iConnMethodArray))[i];
-        if ( RECORD_FROM_ELEMENT_ID(item->iDNRecord->iIAP) == aCmId ||
-             (item->iDNRecord->iEmbeddedSNAP == aCmId && aCmId != 0) )
-            {
-            found = i;
-            break;
-            }        
-        }
-        
-    return found;
-    }        
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::IconIdL
-// -----------------------------------------------------------------------------
-CGulIcon* CCmDestinationImpl::IconIdL( CCmManagerImpl& aCmMgr,
-                                       TMDBElementId aId )
-    {
-    CGulIcon* retVal = NULL;
-    CCDSNAPMetadataRecord* metaDataRec = new (ELeave) CCDSNAPMetadataRecord( 
-                                                        aCmMgr.IconTableId() );
-    CleanupStack::PushL( metaDataRec );
-    metaDataRec->iSNAP = aId;
-                
-    if ( metaDataRec->FindL( aCmMgr.Session() ) )
-        // Not found -> fill in with default values
-        {
-        retVal = IconL( metaDataRec->iIcon );
-        }
-    else
-        {
-        User::Leave( KErrNotFound );
-        }
-        
-    CleanupStack::PopAndDestroy( metaDataRec );
-    
-    return retVal;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ProtectionLevelL
-// -----------------------------------------------------------------------------
-TProtectionLevel CCmDestinationImpl::ProtectionLevelL( CCmManagerImpl& aCmMgr, 
-                                                       TMDBElementId aId ) 
-    {
-    TProtectionLevel retVal( EProtLevel0 );
-    CCDSNAPMetadataRecord* metaDataRec = new (ELeave) CCDSNAPMetadataRecord( 
-                                                        aCmMgr.IconTableId() );
-    CleanupStack::PushL( metaDataRec );
-    metaDataRec->iSNAP = aId;
-                
-    if ( metaDataRec->FindL( aCmMgr.Session() ) )
-        // Not found -> fill in with default values
-        {
-        retVal = ProtectionLevel( metaDataRec );
-        }
-    else
-        {
-        User::Leave( KErrNotFound );
-        }
-        
-    CleanupStack::PopAndDestroy( metaDataRec );
-    return retVal;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ProtectionLevel
-// -----------------------------------------------------------------------------
-TProtectionLevel CCmDestinationImpl::ProtectionLevel( 
-                                           CCDSNAPMetadataRecord* aMetaDataRec )
-    {
-    TInt protection = TUint32(aMetaDataRec->iMetadata) & 
-                      KSnapMetadataProtecionLevelMask;
-    return TProtectionLevel(protection >> 28);
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::ProtectionLevelL
-// -----------------------------------------------------------------------------
-CGulIcon* CCmDestinationImpl::IconL( TInt aIconIndex )
-    {
-    MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-           
-    TParse mbmFile;
-    User::LeaveIfError( mbmFile.Set( KManagerIconFilename, 
-                                     &KDC_BITMAP_DIR, 
-                                     NULL ) );
-                                     
-    TAknsItemID aknItemID;
-    aknItemID.Set( KDestinationIconConvTable[aIconIndex][0],
-                   KDestinationIconConvTable[aIconIndex][1] );
-           
-    CGulIcon* icon = AknsUtils::CreateGulIconL( 
-                            skinInstance, 
-                            aknItemID,
-                            mbmFile.FullName(), 
-                            KDestinationIconConvTable[aIconIndex][2], 
-                            KDestinationIconConvTable[aIconIndex][3] );
-                            
-    return icon;
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::RemoveFromPool
-// -----------------------------------------------------------------------------
-EXPORT_C void CCmDestinationImpl::RemoveFromPool()
-    {
-    iCmMgr.RemoveDestFromPool(this);            
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::IncrementRefCounter
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::IncrementRefCounter()
-    {
-    iData->IncrementRefCounter();
-    }
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::DecrementRefCounter
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::DecrementRefCounter()
-    {
-    iData->DecrementRefCounter();
-    }
-// -----------------------------------------------------------------------------
-// CCmDestinationData::IncrementRefCounter
-// -----------------------------------------------------------------------------
-void CCmDestinationData::IncrementRefCounter()
-    {
-    iRefCounter++;
-    }
-// -----------------------------------------------------------------------------
-// CCmDestinationData::DecrementRefCounter
-// -----------------------------------------------------------------------------
-void CCmDestinationData::DecrementRefCounter()
-    {
-    iRefCounter--;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationData::GetRefCounter
-// -----------------------------------------------------------------------------
-TInt CCmDestinationData::GetRefCounter()
-    {
-    return iRefCounter;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::GetRefCounter
-// -----------------------------------------------------------------------------
-TInt CCmDestinationImpl::GetRefCounter()
-    {
-    return iData->iRefCounter;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::GetData
-// -----------------------------------------------------------------------------
-CCmDestinationData* CCmDestinationImpl::GetData()
-    {
-    return iData;
-    }
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetData
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::SetData(CCmDestinationData* aData)
-    {
-    iData = aData;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationData::IdIsValid
-// -----------------------------------------------------------------------------
-TBool CCmDestinationData::IdIsValid()
-    {
-    return iIdIsValid;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::IdIsValid
-// -----------------------------------------------------------------------------
-TBool CCmDestinationImpl::IdIsValid()
-    {
-    return iData->iIdIsValid;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::Cmmgr
-// -----------------------------------------------------------------------------
-CCmManagerImpl* CCmDestinationData::Cmmgr()
-    {
-    return &iCmMgr;    
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::Cmmgr
-// -----------------------------------------------------------------------------
-CCmManagerImpl* CCmDestinationImpl::Cmmgr()
-    {
-    return &iCmMgr;    
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CheckIfLocalisedDestExistL
-//
-// There can be only one SNAP with a certain localised metadata field set.
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::CheckIfLocalisedDestExistL( TUint32 aValue )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CheckIfLocalisedDestExistL" );
-
-    OpenTransactionLC();
-
-    CMDBRecordSet<CCDSNAPMetadataRecord>* metaSet = 
-                new ( ELeave ) CMDBRecordSet<CCDSNAPMetadataRecord>( iCmMgr.IconTableId() );
-    CleanupStack::PushL( metaSet );
-
-    TRAP_IGNORE( metaSet->LoadL( Session() ) );
-
-    for ( TInt i = 0; i < metaSet->iRecords.Count(); ++i )
-        {
-        TInt meta = QUERY_INT_FIELD( metaSet->iRecords[i], 
-                                     KCDTIdSNAPMetadataMetadata );
-
-        if ( meta & ESnapMetadataDestinationIsLocalised )
-            {
-            TInt locval = (meta & ESnapMetadataDestinationIsLocalised) >> 4;
-            if ( aValue == locval )
-                {
-                if( Id() != QUERY_INT_FIELD( metaSet->iRecords[i], KCDTIdSNAPMetadataSNAP ) )
-                    {
-                    User::Leave( KErrAlreadyExists );
-                    }
-                }
-            if ( aValue ==  ELocalisedDestInternet )
-                { // internet might also be set the 'old way', check it!
-                if( meta & ESnapMetadataInternet )
-                    {
-                    if( Id() != QUERY_INT_FIELD( metaSet->iRecords[i], KCDTIdSNAPMetadataSNAP ) )
-                        {
-                        User::Leave( KErrAlreadyExists );
-                        }
-                    }                
-                }
-            }            
-        }
-
-    CleanupStack::PopAndDestroy( metaSet );
-
-    RollbackTransaction();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CheckIfPurposeExistL
-//
-// There can be only one SNAP with a certain purpose metadata field set.
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::CheckIfPurposeExistL( TUint32 aValue )
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::CheckIfPurposeExistL" );
-
-    OpenTransactionLC();
-
-    CMDBRecordSet<CCDSNAPMetadataRecord>* metaSet = 
-                new ( ELeave ) CMDBRecordSet<CCDSNAPMetadataRecord>( iCmMgr.IconTableId() );
-    CleanupStack::PushL( metaSet );
-
-    TRAP_IGNORE( metaSet->LoadL( Session() ) );
-
-    for ( TInt i = 0; i < metaSet->iRecords.Count(); ++i )
-        {
-        TInt meta = QUERY_INT_FIELD( metaSet->iRecords[i], 
-                                     KCDTIdSNAPMetadataMetadata );
-
-        if ( meta & ESnapMetadataPurpose )
-            {
-            TInt purVal = ( meta & ESnapMetadataPurpose ) >> 8;
-            if ( aValue == purVal )
-                {
-                if( Id() != QUERY_INT_FIELD( metaSet->iRecords[i], 
-                                        KCDTIdSNAPMetadataSNAP ) )
-                    {
-                    User::Leave( KErrAlreadyExists );
-                    }
-                }
-            }            
-        }
-
-    CleanupStack::PopAndDestroy( metaSet );
-
-    RollbackTransaction();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::InitializeDestAPRecordL
-//
-// 
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::InitializeDestAPRecordL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::InitializeDestAPRecordL" );
-
-    SetDefaultTierManagerL();
-    SetDefaultMCprL();
-    SetDefaultCprL();
-    SetDefaultSCprL();
-    SetDefaultProtocolL();
-    iData->iDestAPRecord->iCustomSelectionPolicy = 0;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetDefaultTierManagerL
-//
-// 
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::SetDefaultTierManagerL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetDefaultTierManagerL" );
-
-    CCDTierRecord* tierRec = static_cast<CCDTierRecord *>
-                               ( CCDRecordBase::RecordFactoryL( KCDTIdTierRecord ) );
-    CleanupStack::PushL( tierRec );
-
-    tierRec->iRecordTag = KDefaultTierManagerTagId;
-
-    if ( tierRec->FindL( Session() ) )
-        {
-        iData->iDestAPRecord->iTier = tierRec->ElementId();
-        }
-    else
-        {
-        User::Leave( KErrNotFound );
-        }
-
-    CleanupStack::PopAndDestroy();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetDefaultMCprL
-//
-// 
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::SetDefaultMCprL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetDefaultMCprL" );
-
-    CCDMCprRecord* mcprRec = static_cast<CCDMCprRecord *>
-                             ( CCDRecordBase::RecordFactoryL( KCDTIdMCprRecord ) );
-    CleanupStack::PushL( mcprRec );
-
-    mcprRec->SetRecordId( 1 );
-
-    mcprRec->LoadL( Session() );
-	
-	iData->iDestAPRecord->iMCpr = mcprRec->ElementId();
-
-    CleanupStack::PopAndDestroy();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetDefaultCprL
-//
-// 
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::SetDefaultCprL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetDefaultCprL" );
-
-    CCDCprRecord* cprRec = static_cast<CCDCprRecord *>
-                             ( CCDRecordBase::RecordFactoryL( KCDTIdCprRecord ) );
-    CleanupStack::PushL( cprRec );
-
-    cprRec->SetRecordId( 1 );
-
-    cprRec->LoadL( Session() );
-	iData->iDestAPRecord->iCpr = cprRec->ElementId();
-
-    CleanupStack::PopAndDestroy();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetDefaultSCprL
-//
-// 
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::SetDefaultSCprL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetDefaultSCprL" );
-
-    CCDSCprRecord* scprRec = static_cast<CCDSCprRecord *>
-                             ( CCDRecordBase::RecordFactoryL( KCDTIdSCprRecord ) );
-    CleanupStack::PushL( scprRec );
-
-    scprRec->SetRecordId( 1 );
-
-    scprRec->LoadL( Session() );
-	iData->iDestAPRecord->iSCpr = scprRec->ElementId();
-
-    CleanupStack::PopAndDestroy();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::SetDefaultProtocolL
-//
-// 
-// -----------------------------------------------------------------------------
-void CCmDestinationImpl::SetDefaultProtocolL()
-    {
-    LOGGER_ENTERFN( "CCmDestinationImpl::SetDefaultProtocolL" );
-
-    CCDProtocolRecord* protocolRec = static_cast<CCDProtocolRecord *>
-                             ( CCDRecordBase::RecordFactoryL( KCDTIdProtocolRecord ) );
-    CleanupStack::PushL( protocolRec );
-
-    protocolRec->SetRecordId( 1 );
-
-    protocolRec->LoadL( Session() );
-	iData->iDestAPRecord->iProtocol = protocolRec->ElementId();
-
-    CleanupStack::PopAndDestroy();
-    }
-
-// -----------------------------------------------------------------------------
-// CCmDestinationImpl::CheckIfCMExists
-//
-// 
-// -----------------------------------------------------------------------------
-TBool CCmDestinationImpl::CheckIfCMExistsL( CCmPluginBase& aConnectionMethod )
-    {
-    TRAPD( err, (void)FindConnectionMethodL( aConnectionMethod ) );
-    if ( err )
-        {
-        if ( err == KErrNotFound )
-            {
-            return EFalse;
-            }
-        else
-            {
-            User::Leave( err );
-            }
-        }
-
-    return ETrue;
-    }