cmmanager/cmmgr/Framework/Src/ccmpluginbaseeng.cpp
changeset 20 9c97ad6591ae
parent 18 fcbbe021d614
child 21 b8e8e15e80f2
child 23 7ec726f93df1
child 28 860702281757
--- a/cmmanager/cmmgr/Framework/Src/ccmpluginbaseeng.cpp	Fri Apr 16 15:21:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3553 +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 plugin base class
-*
-*/
-#include <cmmanager.rsg>
-#include <es_sock.h>    // RSocketServ, RConnection
-#include <in_sock.h>    // KAfInet
-#include <es_enum.h>    // TConnectionInfo
-#include <StringLoader.h>
-#include <AknUtils.h>
-#include <data_caging_path_literals.hrh>
-#include <sysutil.h> 
-
-#include <cmmanager.h>
-#include "cmmanagerimpl.h"
-#include "cmdestinationimpl.h"
-#include <cmpluginbaseeng.h>
-#include <cmpsettingsconsts.h>
-#include "cmlogger.h"
-#include <cmcommonui.h>
-
-using namespace CMManager;
-using namespace CommsDat;
-
-// EXTERNAL LINKS
-
-// MACROS
-
-#undef _IPV6_DISABLED
-
-// CONSTANTS
-const TInt KApMaxConnNameLength = 30;
-_LIT(KFormatPostfix, "%02d");
-_LIT(KFormatLargePostfix, "%d");
-_LIT(KFormatNameWithPostfix, "%S(%S)" );
-_LIT(KFormatNoPostfix, "%S");
-const TInt KMaxPostfixLength = 5;
-const TInt KEstimatedOverhead = 8192;
-
-_LIT( KDefWapGatewayIpAddress, "0.0.0.0" );
-    
-_LIT( KLocationName, "Mobile" );
-
-static const TCmAttribConvTable SIapConvTbl[] = 
-    {
-    // iAttribId, iCommsDatId, iValidFuncL, 
-    // iTitleId, 
-    // iMaxLength, iAttribFlags, iDefValueResId, iEditorResId, iNotUsed1, iNotUsed2
-    // first element describes the min-max values, does not connects to DB!
-    { ECmName, ECmIapId, NULL },
-    { ECmName, KCDTIdRecordName, NULL,
-        R_CMMANAGERUI_CONNECTION_NAME,
-        KMaxConnNameLength, EConvNoZeroLength | EConvCompulsory, 
-        0, R_TEXT_SETTING_PAGE_CONN_NAME, NULL, NULL },
-    { ECmIapId, KCDTIdRecordTag, NULL },
-    { 0, 0, NULL },
-    };
-
-static const TCmAttribConvTable SProxyConvTbl[] = 
-    {
-    // iAttribId, iCommsDatId, iValidFuncL, 
-    // iTitleId, 
-    // iMaxLength, iAttribFlags, iDefValueResId, iEditorResId, iNotUsed1, iNotUsed2
-    { ECmProxyUsageEnabled, ECmProxyRangeMax, NULL },
-    { ECmProxyUsageEnabled, KCDTIdUseProxyServer, NULL },
-    { ECmProxyServerName,   KCDTIdServerName, &SetProxyServerNameL, 
-        R_QTN_SET_PROXY_SERVER_ADDRESS, 
-        KMaxProxyServerLength, 0, R_QTN_SET_PROXY_SERVER_ADDRESS_NONE, R_TEXT_SETTING_PAGE_PROXY_SERVER_ADDR, NULL, NULL },
-    { ECmProxyProtocolName, KCDTIdProtocolName, NULL },
-    { ECmProxyPortNumber,   KCDTIdPortNumber, &CheckPortNumberValidityL,
-        R_QTN_SET_PROXY_PORT_NUMBER,
-        KMaxProxyPortNumberLength, EConvNumber, 0, 0, NULL, NULL },
-    { ECmProxyExceptions,   KCDTIdExceptions, NULL },
-    { 0, 0, NULL },
-    };
-
-static const TCmAttribConvTable SChargeCardConvTbl[] =
-    {
-    { ECmChargeCardUsageEnabled, ECmChargeCardRangeMax, NULL },
-    { ECmChargeCardAccountNumber, KCDTIdAccountNo, NULL },
-    { ECmChargeCardPIN, KCDTIdPin, NULL },
-    { ECmChargeCardLocalRule, KCDTIdLocalRule, NULL },
-    { ECmChargeCardNatRule, KCDTIdNatRule, NULL },
-    { ECmChargeCardIntlRule, KCDTIdIntlRule, NULL },
-    { 0, 0, NULL },
-    };
-
-static const TCmAttribConvTable SLocationConvTbl[] =
-    {
-    { ECmLocationUsageEnabled, ECmLocationRangeMax, NULL },
-    { ECmLocationIntlPrefixCode, KCDTIdIntlPrefixCode, NULL },
-    { ECmLocationNatPrefixCode, KCDTIdNatPrefixCode, NULL },
-    { ECmLocationNatCode, KCDTIdNatCode, NULL },
-    { ECmLocationAreaCode, KCDTIdAreaCode, NULL },
-    { ECmLocationDialOutCode, KCDTIdDialOutCode, NULL },
-    { ECmLocationDisableCallWaitingCode, KCDTIdDisableCallWaitingCode, NULL },
-    { ECmLocationMobile, KCDTIdMobile, NULL },
-    { ECmLocationUsePulseDial, KCDTIdUsePulseDial, NULL },
-    { ECmLocationWaitForDialTone, KCDTIdWaitForDialTone, NULL },
-    { ECmLocationPauseAfterDialOut, KCDTIdPauseAfterDialOut, NULL },
-    { 0, 0, NULL },
-    };
-
-static const TCmAttribConvTable SWapConvTbl[] = 
-    {
-    { ECmWapIPGatewayAddress, ECmWapRangeMax, NULL },
-    { ECmWapIPGatewayAddress, KCDTIdWAPGatewayAddress, &CheckIPv4ValidityL },
-    { ECmWapIPWSPOption, KCDTIdWAPWSPOption, &CheckWAPWspOptionValidityL },
-    { ECmWapIPSecurity, KCDTIdWAPSecurity, NULL },
-    { ECmWapIPProxyPort, KCDTIdWAPProxyPort, &CheckPortNumberValidityL },
-    { ECmWapIPProxyLoginName, KCDTIdWAPProxyLoginName, NULL },
-    { ECmWapIPProxyLoginPass, KCDTIdWAPProxyLoginPass, NULL },
-    { 0, 0, NULL },
-    };
-
-static const TCmAttribConvTable SUiTable[] = 
-    {
-    { ECmName, 0, NULL,
-        R_CMMANAGERUI_CONNECTION_NAME,
-        KMaxConnNameLength, EConvNoZeroLength | EConvCompulsory, 0, R_TEXT_SETTING_PAGE_CONN_NAME, NULL, NULL },
-    { ECmBearerSettingName, 0, NULL,
-        R_PLUGIN_BASE_SET_AP_BEARER,
-        0, 0, 0, 0, NULL, NULL },
-    { ECmStartPage, 0, NULL,
-        R_QTN_SET_STARTING_PAGE,
-        KMaxStartPageLength, 0, R_QTN_SET_HOME_PAGE_NONE, R_TEXT_SETTING_PAGE_STARTING_PAGE, 
-        R_START_PAGE_DEF_VALUE, NULL, NULL },
-    { 0, 0, NULL,
-        0, 
-        0, 0, 0, NULL, NULL },
-    };
-
-/**
- * Private data of plugin base
- */
-NONSHARABLE_CLASS( CCmPluginBasePrivate ) : public CBase
-    {
-    public:
-    
-        CCmPluginBasePrivate();
-        ~CCmPluginBasePrivate();
-    
-    public:
-    
-        CCDWAPAccessPointRecord*    iWapAPRecord;
-        CCDWAPIPBearerRecord*       iWapIPBearerRecord;
-        CCDIAPMetadataRecord*       iMetaDataRecord;
-        
-        TNamingMethod   iNamingMethod;
-        
-        CArrayPtrFlat<TCmAttrConvArrayItem>*        iConvTblArray;
-        RArray<const TCmCommonAttrConvArrayItem*>   iCommonConvTblArray;
-        
-        TInt    iLoadResult;
-    };    
-
-// ======== LOCAL FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// ReadOnlyAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool ReadOnlyAttributeL( CCmPluginBaseEng* aThis, 
-                                  TUint32 aAttribute,
-                                  const TAny* aValue )
-    {
-    User::Leave( KErrNotSupported );
-
-    (void)aThis;
-    (void)aAttribute;
-    (void)aValue;
-    
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CheckIPv4ValidityL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CheckIPv4ValidityL( CCmPluginBaseEng* aThis, 
-                                  TUint32 aAttribute,
-                                  const TAny* aValue )
-    {
-    (void)aThis;
-    (void)aAttribute;
-    (void)aValue;
-    
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CheckIPv6ValidityL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CheckIPv6ValidityL( CCmPluginBaseEng* aThis, 
-                                  TUint32 aAttribute,
-                                  const TAny* aValue )
-    {
-    (void)aThis;
-    (void)aAttribute;
-    (void)aValue;
-    
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CheckPortNumberValidityL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CheckPortNumberValidityL( CCmPluginBaseEng* aThis, 
-                                        TUint32 aAttribute,
-                                        const TAny* aValue )
-    {
-    (void)aThis;
-    (void)aAttribute;
-    (void)aValue;
-    
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CheckRecordIdValidityL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CheckRecordIdValidityL( CCmPluginBaseEng* aThis, 
-                                      TUint32 aAttribute,
-                                      const TAny* aValue )
-    {
-    TUint32 recId = *(TUint32*)aValue;
-    
-    if( recId < 1 || recId > 254 )
-        {
-        CLOG_WRITE_1_PTR( aThis, "Not valid Rec id: [%d]", recId );
-        User::Leave( KErrArgument );
-        }
-
-    (void)aThis;
-    (void)aAttribute;
-    (void)aValue;
-    
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CheckWAPWspOptionValidityL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CheckWAPWspOptionValidityL( CCmPluginBaseEng* aThis, 
-                                          TUint32 aAttribute,
-                                          const TAny* aValue )
-    {
-    TUint32 wspOpt = (TUint32)aValue;
-    
-    
-    if( wspOpt != ECmWapWspOptionConnectionless &&
-        wspOpt != ECmWapWspOptionConnectionOriented )
-        {
-        User::Leave( KErrArgument );
-        }
-
-    (void)aThis;
-    (void)aAttribute;
-    (void)aValue;
-    
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// IsUnspecifiedIPv4Address
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool IsUnspecifiedIPv4Address( const TDesC& aIpv4Address )
-    {
-    if( aIpv4Address.Length() == 0 ||
-        !aIpv4Address.CompareF( KUnspecifiedIPv4 ) )
-        {
-        return ETrue;
-        }
-        
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// ClassifyIPv6Address
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TIPv6Types ClassifyIPv6Address( const TDesC& aIpv6Address )
-    {
-    if( aIpv6Address.Length() == 0 ||
-        !aIpv6Address.CompareF( KDynamicIpv6Address ) )
-        {
-        return EIPv6Unspecified;
-        }
-    else if( !aIpv6Address.CompareF( KKnownIp6NameServer1 ) ||
-             !aIpv6Address.CompareF( KKnownIp6NameServer2 ) )
-        {
-        return EIPv6WellKnown;
-        }
-        
-    return EIPv6UserDefined;
-    }
-
-// ---------------------------------------------------------------------------
-// SetProxyServerNameL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool SetProxyServerNameL( CCmPluginBaseEng* aThis, 
-                                   TUint32 /*aAttribute*/, 
-                                   const TAny* aValue )
-    {
-    const TDesC* proxyServer = (const TDesC*)aValue;
-    
-    return aThis->SetProxyServerNameL( *proxyServer );
-    }
-    
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// TCmPluginInitParam::TCmPluginInitParam
-// ---------------------------------------------------------------------------
-//
-TCmPluginInitParam::TCmPluginInitParam( CCmManagerImpl& aCmMgr )
-    : iCmMgr( aCmMgr )
-    {
-    iParentDest = 0;
-    iNotused1 = NULL;
-    iNotused2 = NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBasePrivate::CCmPluginBasePrivate
-// ---------------------------------------------------------------------------
-//
-CCmPluginBasePrivate::CCmPluginBasePrivate()
-    : iNamingMethod( ENamingUnique )
-    , iCommonConvTblArray( KDefAttrsArrayGranSize )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBasePrivate::~CCmPluginBasePrivate
-// ---------------------------------------------------------------------------
-//
-CCmPluginBasePrivate::~CCmPluginBasePrivate()
-    {
-    delete iWapAPRecord;
-    delete iWapIPBearerRecord;
-    delete iMetaDataRecord;
-    
-    if ( iConvTblArray )
-        {
-        iConvTblArray->ResetAndDestroy();
-        delete iConvTblArray;
-        }
-        
-    iCommonConvTblArray.Reset();
-    iCommonConvTblArray.Close();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CCmPluginBaseEng
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CCmPluginBaseEng::CCmPluginBaseEng( TCmPluginInitParam *aInitParam )
-    : iCmMgr( aInitParam->iCmMgr )
-    , iParentDest( aInitParam->iParentDest )
-    {
-    CLOG_CREATE;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::~CCmPluginBaseEng
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CCmPluginBaseEng::~CCmPluginBaseEng()
-    {
-    Reset();
-    
-    delete iPriv;
-    
-    REComSession::DestroyedImplementation( iDtor_ID_Key );
-    CLOG_CLOSE;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::ConstructL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::ConstructL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::ConstructL" );
-
-    iPriv = new (ELeave) CCmPluginBasePrivate;
-    
-    // 4 for our tables + 4 for bearer specific ones.
-    iPriv->iConvTblArray = new (ELeave)CArrayPtrFlat<TCmAttrConvArrayItem>( 8 );
-
-    AddConverstionTableL( (CCDRecordBase**)&iIapRecord, 
-                          NULL, SIapConvTbl );
-    AddConverstionTableL( (CCDRecordBase**)&iProxyRecord, 
-                          NULL, SProxyConvTbl );
-    AddConverstionTableL( (CCDRecordBase**)&iChargeCardRecord, 
-                          &iChargeCardEnabled, SChargeCardConvTbl );
-    AddConverstionTableL( (CCDRecordBase**)&iLocationRecord, 
-                          &iLocationEnabled, SLocationConvTbl );
-    AddConverstionTableL( (CCDRecordBase**)&iPriv->iWapIPBearerRecord, 
-                          NULL, SWapConvTbl );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::GetIntAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TUint32 
-            CCmPluginBaseEng::GetIntAttributeL( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GetIntAttributeL" );
-
-    TUint32 retVal( 0 );
-    
-    switch ( aAttribute )
-        {
-        case ECmBearerIcon:
-            {
-            retVal = 0; // bearer doesn't provide any icon
-            }
-            break;
-            
-        case ECmBearerAvailableIcon:            
-            {
-            retVal = 0; // bearer doesn't provide any icon
-            }
-            break;
-            
-        case ECmId: // if the CM has an IapId than the ECmId is the ECmId
-        case ECmIapId:
-            {
-            retVal = iIapId;
-            }
-            break;
-        case ECmWapId:
-            {
-            retVal = iPriv->iWapIPBearerRecord->iWAPAccessPointId;
-            }
-            break;
-        case ECmIapServiceId:
-            {
-            retVal = TUint32(iIapRecord->iService);
-            }
-            break;
-        case ECmBearerType:
-            {
-            retVal = iBearerType;
-            }
-            break;
-            
-        case ECmDefaultPriority:
-            {
-            retVal = KDataMobilitySelectionPolicyPriorityWildCard;
-            }
-            break;
-            
-        case ECmDefaultUiPriority:
-            {
-            retVal = KDataMobilitySelectionPolicyPriorityWildCard;
-            }
-            break;
-            
-        case ECmNamingMethod:
-            {
-            retVal = iPriv->iNamingMethod;
-            }
-            break;
-            
-        case ECmExtensionLevel:
-            {
-            retVal = KExtensionBaseLevel;
-            }
-            break;
-            
-        case ECmInvalidAttribute:
-            {
-            retVal = iInvalidAttribute;
-            }
-            break;
-            
-        case ECmCommsDBBearerType:
-            {
-            User::Leave( KErrUnknown );
-            }
-            break;
-            
-        case ECmSeamlessnessLevel:
-            {
-            retVal = iPriv->iMetaDataRecord->iSeamlessness;
-            }
-            break;
-            
-        case ECmElementID:
-            {
-            if ( !iIapRecord )
-                {
-                User::Leave( KErrNotReady );
-                }
-                
-            retVal = (KCDMaskShowField & iIapRecord->ElementId());
-            }
-            break;
-            
-        case ECmLoadResult:
-            {
-            retVal = iPriv->iLoadResult;
-            }
-            break;
-            
-        case ECmNetworkId:
-            {
-            retVal = iIapRecord->iNetwork;
-            }
-            break;
-            
-        default:
-            {
-            TUint32 attribute = CheckForCommonAttribute( aAttribute );            
-            CMDBField<TUint32>* field;
-
-            FindFieldL( attribute, ECmInt, (CMDBElement*&)field );
-
-            retVal = *field;        
-            }
-            break;
-        }
-        
-    return retVal;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::GetBoolAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool 
-        CCmPluginBaseEng::GetBoolAttributeL( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GetBoolAttributeL" );
-
-    TBool retVal;
-
-    switch ( aAttribute )
-        {
-        case ECmProtected:
-            {
-            retVal = IsProtected();
-            }
-            break;
-            
-        case ECmHidden:
-            {
-            retVal = iIapRecord->Attributes() & ECDHidden;
-            }
-            break;
-
-        case ECmDestination:
-            {
-            retVal = EFalse;
-            }
-            break;
-            
-        case ECmChargeCardUsageEnabled:
-            {
-            retVal = iChargeCardEnabled;
-            }
-            break;
-            
-        case ECmCoverage:
-            // In default the plugin has no network coverage
-            {
-            retVal = EFalse;
-            }
-            break;
-            
-        case ECmAddToAvailableList:
-            {
-            retVal = EFalse;
-            }
-            break;
-            
-        case ECmBearerHasUi:
-            {
-            retVal = EFalse;
-            }
-            break;
-            
-        case ECmMetaHighlight:
-            {
-            retVal = iPriv->iMetaDataRecord->iMetadata & EMetaHighlight;
-            }
-            break;
-            
-        case ECmMetaHiddenAgent:
-            {
-            retVal = iPriv->iMetaDataRecord->iMetadata & EMetaHiddenAgent;
-            }
-            break;
-            
-        case ECmIPv6Supported:
-            {
-            retVal = FeatureSupported( KFeatureIdIPv6 );
-            }
-            break;
-            
-        case ECmConnected:
-            {
-            retVal = CheckIfAlreadyConnected();
-            }
-            break;
-
-        case ECmVirtual:
-            {
-            retVal = EFalse;
-            }
-            break;
-            
-        case ECmIsLinked:
-            {
-            retVal = iCmMgr.IsIapLinkedL( *this );
-            }
-            break;
-            
-        default:
-            {
-            TUint32 attribute = CheckForCommonAttribute( aAttribute );            
-            CMDBField<TBool>* field;
-
-            FindFieldL( attribute, ECmBool, (CMDBElement*&)field );
-
-            retVal = *field;        
-            }
-        }
-
-    return retVal;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::GetStringAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C HBufC* 
-    CCmPluginBaseEng::GetStringAttributeL( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GetStringAttributeL" );
-
-    HBufC* retVal = NULL;
-    
-    switch ( aAttribute )
-        {
-        case ECmStartPage:
-            {
-            retVal = TPtrC(iPriv->iWapAPRecord->iWAPStartPage).AllocL();
-            }
-            break;
-            
-        case ECmName:
-            {
-            retVal = TPtrC(iIapRecord->iRecordName).AllocL();
-            }
-            break;
-
-        default:
-            {
-            TUint32 attribute = CheckForCommonAttribute( aAttribute );
-            CMDBField<TDesC>* field;
-            
-            FindFieldL( attribute, ECmText, (CMDBElement*&)field );
-
-            if ( !field->IsNull() )
-                {
-                retVal = field->GetL().AllocL();
-                }
-            else
-                {
-                retVal = KNullDesC().AllocL();
-                }
-            }
-        }
-        
-    return retVal;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::GetString8AttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C HBufC8* 
-    CCmPluginBaseEng::GetString8AttributeL( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GetString8AttributeL" );
-
-    HBufC8* retVal = NULL;
-    
-    switch ( aAttribute )
-        {
-        default:
-            {
-            TUint32 attribute = CheckForCommonAttribute( aAttribute );
-            CMDBField<TDesC8>* field;
-                        
-            FindFieldL( attribute, ECmText8, (CMDBElement*&)field );
-
-            if ( !field->IsNull() )
-                {
-                retVal = field->GetL().AllocL();
-                }
-            else
-                {
-                retVal = KNullDesC8().AllocL();
-                }
-            }
-        }
-        
-    return retVal;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::SetIntAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::SetIntAttributeL( const TUint32 aAttribute, 
-                                                  TUint32 aValue )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetIntAttributeL" );
-
-    switch ( aAttribute )
-        {
-        case ECmNamingMethod:
-            {
-            iPriv->iNamingMethod = (TNamingMethod)aValue;
-            }
-            break;
-
-        case ECmCommsDBBearerType:
-        case ECmElementID:
-        case ECmIapId:
-        case ECmId:
-            {
-            User::Leave( KErrNotSupported );
-            }
-            break;
-            
-        case ECmSeamlessnessLevel:
-            {
-            if ( aValue == ESeamlessnessConfirmFirst ||
-                 aValue == ESeamlessnessShowprogress )
-                {
-                iPriv->iMetaDataRecord->iSeamlessness = aValue;
-                }
-            else
-                {
-                User::Leave( KErrNotSupported );
-                }
-            }
-            break;
-                                   
-        case ECmNetworkId:
-            {
-            User::Leave( KErrNotSupported );
-            }
-            break;
-           
-        default:
-            {
-            TUint32 attribute = CheckForCommonAttribute( aAttribute );
-            CMDBField<TUint32>* field;
-            
-            TValidationFunctionL func = 
-                        FindFieldL( attribute, ECmInt, (CMDBElement*&)field );
-            
-            if( func )
-                {
-                func( this, attribute, (TAny*)aValue );
-                }
-                
-            *field = aValue;
-            }
-            break;
-        }
-        
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::SetBoolAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::SetBoolAttributeL( const TUint32 aAttribute, 
-                                                   TBool aValue )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetBoolAttributeL" );
-
-    switch ( aAttribute )
-        {
-        case ECmProtected:
-            {
-            SetAttribute( iIapRecord, ECDProtectedWrite, aValue );
-            }
-            break;
-            
-        case ECmHidden:
-            {
-            // Check that this is not Default Connection
-            TCmDefConnValue defConn;
-            iCmMgr.ReadDefConnL( defConn );
-            if ( defConn.iType == ECmDefConnConnectionMethod &&
-                 defConn.iId == iIapRecord->RecordId() )
-                {
-                User::Leave( KErrArgument );
-                }
-            
-            SetAttribute( iIapRecord, ECDHidden, aValue );
-            }
-            break;
-            
-        case ECmProxyUsageEnabled:
-            {
-            EnableProxyL( aValue );
-            }
-            break;
-            
-        case ECmChargeCardUsageEnabled:
-            {
-            EnableChargeCardL( aValue );
-            }
-            break;
-            
-        case ECmLocationUsageEnabled:
-            {
-            EnableLocationL( aValue );
-            }
-            break;
-            
-        case ECmMetaHighlight:
-            {
-            if( aValue )
-                {
-                iPriv->iMetaDataRecord->iMetadata =
-                          EMetaHighlight | iPriv->iMetaDataRecord->iMetadata;
-                }
-            else
-                {
-                iPriv->iMetaDataRecord->iMetadata =
-                        ~EMetaHighlight & iPriv->iMetaDataRecord->iMetadata;
-                }
-            }
-            break;
-            
-        case ECmMetaHiddenAgent:
-            {
-            if( aValue )
-                {
-                iPriv->iMetaDataRecord->iMetadata =
-                        EMetaHiddenAgent | iPriv->iMetaDataRecord->iMetadata;
-                }
-            else
-                {
-                iPriv->iMetaDataRecord->iMetadata = 
-                      ~EMetaHiddenAgent & iPriv->iMetaDataRecord->iMetadata;
-                }
-            }
-            break;
-            
-        default:
-            {
-            TUint32 attribute = CheckForCommonAttribute( aAttribute );
-            CMDBField<TBool>* field;
-            
-            TValidationFunctionL func = 
-                        FindFieldL( attribute, ECmBool, (CMDBElement*&)field );
-            
-            if( func )
-                {
-                func( this, attribute, (const TAny*)aValue );
-                }
-                
-
-            *field = aValue;
-            }
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::SetStringAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::SetStringAttributeL( const TUint32 aAttribute, 
-                                                     const TDesC16& aValue )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetStringAttributeL" );
-
-    TUint32 commonattribute = MappedCommonAttribute( aAttribute );
-    switch ( commonattribute )
-        {
-        case ECmStartPage:
-            {
-            iPriv->iWapAPRecord->iWAPStartPage.SetL( aValue );
-            }
-            break;
-            
-        case ECmName:
-            {
-            SetNameL( aValue );
-            }
-            break;
-        case ECmIPAddress:
-            {
-            GenericStringWriterL( commonattribute, aValue );
-            if (( aValue.Compare(KUnspecifiedIPv4) == 0) || ( aValue.Compare(KNullDesC)==0 ) )
-                {
-                SetBoolAttributeL( ECmIPAddFromServer, ETrue );
-                }
-            else
-                {
-                SetBoolAttributeL( ECmIPAddFromServer, EFalse );
-                }
-            }
-            break;
-        default:
-            {
-            GenericStringWriterL( commonattribute, aValue );
-            }
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::SetString8AttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::SetString8AttributeL( const TUint32 aAttribute, 
-                                                      const TDesC8& aValue )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetString8AttributeL" );
-
-    switch ( aAttribute )
-        {
-        default:
-            {
-            TUint32 attribute = CheckForCommonAttribute( aAttribute );
-            CMDBField<TDesC8>* field;
-            
-            TValidationFunctionL func = 
-                        FindFieldL( attribute, ECmText8, (CMDBElement*&)field );
-            
-            if( func )
-                {
-                func( this, attribute, (const TAny*)&aValue );
-                }
-
-            field->SetL( aValue );
-            }
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::RestoreAttributeL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::RestoreAttributeL( const TUint32 aAttribute )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::RestoreAttributeL" );
-
-    TCmAttrConvArrayItem* item = ConversionTable( aAttribute );
-
-    TInt index( 0 );
-    CMDBElement& field = FieldByAttributeL( item, aAttribute, index );
-    
-    TRAPD( err, field.LoadL( Session() ) );
-    if( err == KErrNotFound )
-        {
-        switch ( field.Type() )
-            {
-            case EText:
-            case EMedText:
-            case ELongText:
-                {
-                CMDBField<TDesC>* textField = static_cast<CMDBField<TDesC>*>( &field );
-                
-                textField->SetL( KNullDesC );
-                }
-                break;
-
-            case EDesC8:
-                {
-                CMDBField<TDesC8>* textField = static_cast<CMDBField<TDesC8>*>( &field );
-                
-                textField->SetL( KNullDesC8 );
-                }
-                break;
-                
-            case EUint32:
-            case EInt:
-            case EBool:
-                {
-                CMDBField<TInt>* intField = static_cast<CMDBField<TInt>*>( &field );
-                
-                intField->SetL( 0 );
-                }
-                break;
-                
-            default:
-                {
-                User::Leave( KErrArgument );
-                }
-                break;
-            }
-        }
-    else
-        {
-        User::LeaveIfError( err );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::Destination
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CCmDestinationImpl* CCmPluginBaseEng::Destination() const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::Destination" );
-
-    return NULL;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::UpdateL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateL" );
-
-    CheckSpaceBelowCriticalLevelL();
-
-    OpenTransactionLC();
-    
-    PrepareToUpdateRecordsL();
-    
-    UpdateChargeCardRecordL();
-    UpdateServiceRecordL();
-    
-    UpdateLocationRecordL();
-    UpdateNetworkRecordL();
-    
-    UpdateIAPRecordL();
-
-    UpdateWapRecordL();
-    UpdateProxyRecordL();
-    UpdateSeamlessnessRecordL();
-    UpdateConnPrefSettingL();
-    
-    UpdateAdditionalRecordsL();
-    
-    CommitTransactionL( 0 );
-    iCmMgr.ConnMethodUpdatedL( this );
-    iIdIsValid = ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::NumOfConnMethodReferencesL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt CCmPluginBaseEng::NumOfConnMethodReferencesL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::NumOfConnMethodReferencesL" );
-
-    return iCmMgr.NumOfConnMethodReferencesL( iIapId );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::Session
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CMDBSession& CCmPluginBaseEng::Session()const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::Session" );
-
-    return iCmMgr.Session();
-    }
-
-// ---------------------------------------------------------------------------
-// Delete this connection methond.
-// Record ids are checked to be sure that we delete only records
-// that were loaded before.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TBool CCmPluginBaseEng::DeleteL( TBool aForced,
-                                          TBool aOneRefAllowed )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::DeleteL" );
-    
-    if ( CheckIfAlreadyConnected() )
-        {
-        User::Leave( KErrInUse );
-        }
-
-    if( iPriv->iLoadResult )
-        // previous load failed -> do NOT delete this partially loaded cm.
-        {
-        User::Leave( KErrNotReady );
-        }
-        
-    if( GetBoolAttributeL( ECmIsLinked ) )
-        {
-        User::Leave( KErrLocked );
-        }
-        
-    // If there is no parent destination, we can delete
-    TBool retVal(ETrue);
-    
-    if( !aForced )
-        {
-        TInt refs = NumOfConnMethodReferencesL();
-        
-        switch ( refs )
-            {
-            case 0:
-                // no referencies to this cm
-                {
-                CLOG_WRITE( "No ref -> do delete it" );
-                }
-                break;
-                
-            case 1: 
-                // one reference
-                {
-                if ( !aOneRefAllowed )
-                    // this is not a legacy cm -> cannot be deleted.
-                    {
-                    retVal = EFalse;
-                    }
-                }
-                break;
-                
-            default:
-                // connection method is multiple referenced from
-                // destinations -> no delete
-                {
-                retVal = EFalse;
-                }
-                break;
-            }
-        }
-        
-    if ( retVal )
-        {
-        TCmDefConnValue deletedItem;
-        deletedItem.iType = ECmDefConnConnectionMethod;
-        deletedItem.iId = iIapId;
-        iCmMgr.HandleDefConnDeletedL( deletedItem );       
-
-        if( aForced )
-            {
-            iCmMgr.RemoveAllReferencesWoTransL( *this );
-            }
-
-        OpenTransactionLC();
-        // And now we have everything from CommsDat, 
-        // so we delete only those records.
-        PrepareToDeleteRecordsL();
-
-        if ( iIapRecord && iIapRecord->RecordId() )
-            {
-            iIapRecord->DeleteL( Session() );
-            }
-        
-        if ( iProxyRecord && iProxyRecord->RecordId() )
-            {
-            iProxyRecord->DeleteL( Session() );
-            }
-            
-        if ( iServiceRecord && iServiceRecord->RecordId() )
-            {
-            iServiceRecord->DeleteL( Session() );
-            }
-        
-        if ( iChargeCardRecord && iChargeCardRecord->RecordId() )
-            {
-            iChargeCardRecord->DeleteL( Session() );
-            }
-        
-        if ( iNetworkRecord && iNetworkRecord->RecordId() )
-            {
-            iNetworkRecord->DeleteL( Session() );
-            }
-        
-        if ( iLocationRecord && iLocationRecord->RecordId() )
-            {
-            iLocationRecord->DeleteL( Session() );
-            }
-        
-        if ( iPriv->iWapAPRecord && 
-            iPriv->iWapAPRecord->RecordId() )
-            {
-            iPriv->iWapAPRecord->DeleteL( Session() );
-            }
-        
-        if ( iPriv->iWapIPBearerRecord && 
-            iPriv->iWapIPBearerRecord->RecordId() )
-            {
-            iPriv->iWapIPBearerRecord->DeleteL( Session() );
-            }
-
-        if ( iPriv->iMetaDataRecord &&
-             iPriv->iMetaDataRecord->RecordId() )
-            {
-            iPriv->iMetaDataRecord->DeleteL( Session() );
-            }
-        
-        DeleteAdditionalRecordsL();
-
-        CommitTransactionL( KErrNone );
-        }
-
-    return retVal;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::LoadL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::LoadL( TUint32 aIapId )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::LoadL" );
-    CLOG_NAME_2( _L("plugin_0x%x_%d"), this, aIapId );
-
-    OpenTransactionLC();
-
-    // trap it to set iPriv->iLoadResult
-    TRAP( iPriv->iLoadResult, DoLoadL( aIapId ) );
-
-    User::LeaveIfError( iPriv->iLoadResult );
-    
-    RollbackTransaction();
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CreateNewL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::CreateNewL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CreateNewL" );
-
-    CheckSpaceBelowCriticalLevelL();
-    
-    if ( iIapId )
-        // we already have IAP id ->
-        {
-        User::Leave( KErrAlreadyExists );
-        }
-
-    iPreDefIapId = 0;
-
-    // optional record are disable in default
-    iChargeCardEnabled = EFalse;
-    iLocationEnabled = EFalse;
-    
-    // create mandatory records
-    iIapRecord = static_cast<CCDIAPRecord *>
-                          (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
-    iNetworkRecord = static_cast<CCDNetworkRecord *>
-                          (CCDRecordBase::RecordFactoryL(KCDTIdNetworkRecord));
-    iProxyRecord = static_cast<CCDProxiesRecord *>
-                  (CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord));
-    NewWapRecordL();
-    iPriv->iWapIPBearerRecord->iWAPGatewayAddress.SetL( 
-                                                    KDefWapGatewayIpAddress );
-    
-    iPriv->iMetaDataRecord = NewSeamlessnessRecordL( ETrue );
-
-    // call plugin to create its own records
-    CreateNewServiceRecordL();
-    CreateAdditionalRecordsL();
-
-    EnableProxyL( EFalse );
-
-    // Load default CM name from resource
-    HBufC* defApName = AllocReadL( R_CMMANAGERENG_DEFAULT_AP_NAME );
-    CleanupStack::PushL( defApName );
-
-    SetNameL( *defApName );
-
-    CleanupStack::PopAndDestroy( defApName );
-
-    iIapRecord->iNetworkWeighting = 0; // it's always 0.
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CreateCopyL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CCmPluginBaseEng* CCmPluginBaseEng::CreateCopyL() const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CreateCopyL" );
-    CheckSpaceBelowCriticalLevelL();
-    
-    TCmPluginInitParam params( iCmMgr );
-    
-    CCmPluginBaseEng* copyInst = CreateInstanceL( params );
-    CleanupStack::PushL( copyInst );
-    
-    copyInst->CreateNewL();
-
-    TInt err( KErrNone );
-    TRAP( err, copyInst->SetBoolAttributeL( ECmChargeCardUsageEnabled, iChargeCardEnabled ) );
-    if( err != KErrNotSupported )
-        {
-        User::LeaveIfError( err );
-        }
-    TRAP( err, copyInst->SetBoolAttributeL( ECmLocationUsageEnabled, iLocationEnabled ) );
-    if( err != KErrNotSupported )
-        {
-        User::LeaveIfError( err );
-        }
-    copyInst->SetIntAttributeL( ECmNamingMethod, iPriv->iNamingMethod );
-    copyInst->SetStringAttributeL( ECmName, TPtrC( iIapRecord->iRecordName ) );
-    copyInst->SetStringAttributeL( ECmStartPage, TPtrC( iPriv->iWapAPRecord->iWAPStartPage ) );
-
-
-    PrepareToCopyDataL( *copyInst );
-
-    for ( TInt tblInd = 0; tblInd < iPriv->iConvTblArray->Count(); ++tblInd )
-        {
-        const TCmAttrConvArrayItem* item = (*iPriv->iConvTblArray)[tblInd];
-        
-        if ( item->iEnabled && !(*item->iEnabled) )
-            // Enabled flag is set to 'disabled' state
-            {
-            continue;
-            }
-            
-        if( !item->iRecord || 
-            (item->iRecord && !(*item->iRecord)) )
-            // no record
-            {
-            continue;
-            }
-                
-        for ( TInt attrInd = 1; item->iConvTable[attrInd].iAttribId; ++attrInd )
-            {
-            if( item->iConvTable[attrInd].iAttribFlags & EConvReadOnly )
-                // Read-only flags are not copied.
-                {
-                continue;
-                }
-                
-            TInt commsdatid( item->iConvTable[attrInd].iCommsDatId );
-
-            if ( !commsdatid )
-                { // not connected to the DB, calculated field, no copy
-                continue;
-                }
-                
-            CMDBElement* field = (*item->iRecord)->GetFieldByIdL( commsdatid );
-    
-            if( field->IsNull() )
-                {
-                continue;
-                }
-                
-            switch ( field->Type() )
-                {
-                case EText:
-                case EMedText:
-                case ELongText:
-                    {
-                    CMDBField<TDesC>* textField = (CMDBField<TDesC>*)field;
-                
-                    TRAP( err, copyInst->SetStringAttributeL( 
-                                            item->iConvTable[attrInd].iAttribId,
-                                            *textField ) );
-                    if( err != KErrNotSupported )
-                        {
-                        User::LeaveIfError( err );
-                        }
-                    }
-                    break;
-                    
-                case EDesC8:
-                    {
-                    CMDBField<TDesC8>* textField = (CMDBField<TDesC8>*)field;
-                
-                    TRAP( err, copyInst->SetString8AttributeL( 
-                                            item->iConvTable[attrInd].iAttribId,
-                                            *textField ) );
-                    if( err != KErrNotSupported )
-                        {
-                        User::LeaveIfError( err );
-                        }
-                    }
-                    break;
-                    
-                case EUint32:
-                case EInt:
-                    {
-                    CMDBField<TUint32>* intField = (CMDBField<TUint32>*)field;
-                    
-                    TRAP( err, copyInst->SetIntAttributeL( 
-                                            item->iConvTable[attrInd].iAttribId,
-                                            *intField ) );
-                    if ( !(( err == KErrNotSupported ) || ( err == KErrArgument )) )
-                        {
-                        User::LeaveIfError( err );
-                        }
-                    }
-                    break;
-                    
-                case EBool:
-                    {
-                    CMDBField<TBool>* intField = (CMDBField<TBool>*)field;
-                    
-                    TRAP( err, copyInst->SetBoolAttributeL( 
-                                            item->iConvTable[attrInd].iAttribId,
-                                            *intField ) );
-                    if( err != KErrNotSupported )
-                        {
-                        User::LeaveIfError( err );
-                        }
-                    }
-                    break;
-                    
-                case ELink: // links are not copied!
-                default:
-                    {
-                    }
-                    break;
-                }
-            }                    
-        }
-
-    CopyAdditionalDataL( *copyInst );
-    
-    CleanupStack::Pop( copyInst );
-    
-    return copyInst;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::AddResourceFileL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::AddResourceFileL( const TDesC& aName )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::AddResourceFileL" );
-    
-    CLOG_WRITE_1( "[%S]", &aName );
-    
-    TParse fp;
-    TInt err = fp.Set( aName, 
-                        &KDC_RESOURCE_FILES_DIR, 
-                        NULL ); 
-    if ( err != KErrNone)
-        {
-        User::Leave( err );
-        }
-        
-    TFileName fName;
-    
-    fName.Copy( fp.FullName() );
-
-    iCmMgr.AddResourceFileL( fName );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::RemoveResourceFile
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::RemoveResourceFile( const TDesC& aName )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::RemoveResourceFileL" );
-
-    TParse fp;
-    TInt err = fp.Set( aName, 
-                        &KDC_RESOURCE_FILES_DIR, 
-                        NULL ); 
-    CLOG_WRITE_1( "Set: [%d]", err );
-        
-    TFileName fName;
-    
-    fName.Copy( fp.FullName() );
-
-    iCmMgr.RemoveResourceFile( fName );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::AllocReadL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C HBufC* CCmPluginBaseEng::AllocReadL( TInt aResourceId ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::AllocReadL" );
-
-    return iCmMgr.AllocReadL( aResourceId );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::OpenTransactionLC
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::OpenTransactionLC()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::OpenTransactionL" );
-
-    iCmMgr.OpenTransactionLC( ETrue );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CommitTransactionL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::CommitTransactionL( TInt aError )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CommitTransactionL" );
-    
-    iCmMgr.CommitTransactionL( aError );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::RollbackTransaction
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::RollbackTransaction()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::RollbackTransaction" );
-    
-    iCmMgr.RollbackTransaction();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::PrepareToLoadRecordsL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::DoLoadL( TUint32 aIapId )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::DoLoadL" );
-
-    PrepareToLoadRecordsL();
-    
-    LoadIAPRecordL( aIapId );
-    LoadWapRecordL();
-    LoadSeamlessnessRecordL();
-    LoadNetworkSettingL();
-    LoadLocationSettingL();
-
-    // This is a connectionmethodinfo instance, that has no
-    // service and proxy setting.
-    if( KDummyBearerType != iBearerType )
-        {
-        LoadServiceSettingL();
-        LoadProxySettingL();
-        }
-
-    LoadAdditionalRecordsL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::PrepareToLoadRecordsL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::PrepareToLoadRecordsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::PrepareToLoadRecordsL" );
-
-    iChargeCardEnabled = EFalse;
-    iLocationEnabled = EFalse;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::LoadIAPRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::LoadIAPRecordL( TUint32 aIapId )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::LoadIAPRecordL" );
-
-    iIapId = aIapId;
-    
-    // Load IAP record
-    CCDIAPRecord *iapRecord = static_cast<CCDIAPRecord *>
-                            (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
-                            
-    CleanupStack::PushL( iapRecord );
-    
-    iapRecord->SetRecordId( iIapId );
-    
-    iapRecord->LoadL( Session() );
-    
-    CleanupStack::Pop( iapRecord );
-    
-    iIapRecord = iapRecord;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::LoadProxySettingL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::LoadProxySettingL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::LoadProxySettingL" );
-    
-    // Load Proxy record
-    CMDBRecordSet<CCDProxiesRecord>* proxieRS = 
-              new(ELeave) CMDBRecordSet<CCDProxiesRecord>(KCDTIdProxiesRecord);
-    CleanupStack::PushL(proxieRS);
-
-    // Now try to find the linked proxy record
-    // create new record
-    CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord *>
-                          (CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord));
-
-    CleanupStack::PushL( proxyRecord );
-    
-    // Prime record
-    TPtrC serviceType( iIapRecord->iServiceType );
-    
-    proxyRecord->iServiceType.SetL( serviceType );
-    
-    proxieRS->iRecords.AppendL( proxyRecord );
-
-    CleanupStack::Pop( proxyRecord );
-    
-    proxyRecord = NULL;
-    
-    CLOG_WRITE_1( "Looking for proxy: [%d]", TUint32(iIapRecord->iService) );
-    
-    if ( proxieRS->FindL(Session()) )
-        {
-        TInt i(0);
-        while( i<proxieRS->iRecords.Count() )
-            // Now that we have a list of services with the proper service type 
-            // search for our proxy record and remove it from the array, 
-            // then destroy the array.
-            {
-            CCDProxiesRecord* proxyRecord = (*proxieRS)[i];
-            
-            // Compare the record id of these 2 services
-            if ( TUint32(proxyRecord->iService) == 
-                TUint32(iIapRecord->iService) )
-                {
-                iProxyRecord = proxyRecord;
-                // take ownership of this record
-                proxieRS->iRecords.Remove( i );
-                break;
-                }
-            ++i;
-            }
-        }
-    
-    proxieRS->iRecords.ResetAndDestroy();
-    
-    if( !iProxyRecord )
-        {
-        // This creates a proxy record, where usage is disabled.
-        EnableProxyL( EFalse );
-        }
-
-    CleanupStack::PopAndDestroy( proxieRS );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::LoadServiceSettingL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::LoadServiceSettingL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::LoadServiceSettingL" );
-    
-    if ( iServiceRecord )
-        {
-        iServiceRecord->SetRecordId( iIapRecord->iService );
-        TRAPD( err, iServiceRecord->LoadL( Session() ) );
-        if( err == KErrNotFound )
-            // record not found -> create a default one
-            {
-            CreateNewServiceRecordL();
-            }
-        else
-            {
-            User::LeaveIfError( err );
-            }
-        }
-    else
-        {
-        CLOG_WRITE( "CCmPluginBaseEng::LoadServiceSettingL: No service rec" );
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::LoadChargeCardSettingL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::LoadChargeCardSettingL( TUint32 aRecordId )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::LoadChargeCardSettingL" );
-
-    if ( !aRecordId )
-        // No charge card is link to this IAP
-        {
-        iChargeCardEnabled = EFalse;
-        
-        CLOG_WRITE( "CCmPluginBaseEng::LoadChargeCardSettingL: No charge card" );
-        return;
-        }
-        
-    iChargeCardRecord = static_cast<CCDChargecardRecord *>
-                       (CCDRecordBase::RecordFactoryL(KCDTIdChargecardRecord));
-    iChargeCardRecord->SetRecordId( aRecordId );
-    TRAPD( err, iChargeCardRecord->LoadL( Session() ) );
-    if( err == KErrNotFound )
-        // referenced but doesn't exist. Try to fix it.
-        {
-        iChargeCardRecord->SetRecordId( KCDNewRecordRequest );
-        
-        // if it fails we can't do anything to solve this problem
-        iChargeCardRecord->StoreL( Session() );
-        }
-    else
-        {
-        User::LeaveIfError( err );
-        }
-    
-    iChargeCardEnabled = ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::LoadNetworkSettingL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::LoadNetworkSettingL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::LoadNetworkSettingL" );
-    
-    CCDNetworkRecord* networkRecord = static_cast<CCDNetworkRecord*>
-                          (CCDRecordBase::RecordFactoryL(KCDTIdNetworkRecord));
-    CleanupStack::PushL( networkRecord );
-                       
-    networkRecord->SetRecordId( iIapRecord->iNetwork );
-    TRAPD( err, networkRecord->LoadL( Session() ) );
-    if( err == KErrNotFound )
-        {
-        CleanupStack::PopAndDestroy( networkRecord );
-
-        networkRecord = static_cast<CCDNetworkRecord*>
-                          (CCDRecordBase::RecordFactoryL(KCDTIdNetworkRecord));
-        }
-    else
-        // KErrNotFound -> doesn't matter. We will do it UpdateL()
-        {
-        User::LeaveIfError( err );
-
-        CleanupStack::Pop( networkRecord );
-        }
-
-    iNetworkRecord = networkRecord;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::LoadLocationSettingL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::LoadLocationSettingL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::LoadLocationSettingL" );
-
-    CCDLocationRecord* locationRecord = static_cast<CCDLocationRecord*>
-                         (CCDRecordBase::RecordFactoryL(KCDTIdLocationRecord));
-         
-    CleanupStack::PushL( locationRecord );
-
-    locationRecord->SetRecordId( iIapRecord->iLocation );
-    if ( locationRecord->FindL(Session()) )
-        {
-        iLocationEnabled = ETrue;
-        
-        iLocationRecord = locationRecord;
-        
-        CleanupStack::Pop( locationRecord );
-        }
-    else
-        {
-        iLocationEnabled = EFalse;
-
-        CleanupStack::PopAndDestroy( locationRecord );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::PrepareToUpdateRecordsL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::PrepareToUpdateRecordsL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::PrepareToUpdateRecordsL" );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateIAPRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::UpdateIAPRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateIAPRecordL" );
-
-    if ( !iIapId )
-        {
-        if ( iPreDefIapId )
-            {
-            iIapRecord->SetRecordId( iPreDefIapId );
-            iPreDefIapId = 0;
-            }
-        else
-            {
-            iIapRecord->SetRecordId( KCDNewRecordRequest );
-            }
-
-        TUint32 id;
-        HBufC* name;
-        
-        ServiceRecordIdLC( name, id );
-        iIapRecord->iService = id;
-        iIapRecord->iServiceType.SetL( *name );
-        CleanupStack::PopAndDestroy( name );
-            
-        BearerRecordIdLC( name, id );
-        iIapRecord->iBearer = id;
-        iIapRecord->iBearerType.SetL( *name );
-        CleanupStack::PopAndDestroy( name );
-
-        iIapRecord->iNetwork = iNetworkRecord->RecordId();
-        
-        if ( iLocationRecord )
-            {
-            iIapRecord->iLocation = iLocationRecord->RecordId();
-            }
-            
-        iIapRecord->iLocation = GetLocationIdL();
-        
-        iIapRecord->StoreL( Session() );
-        iIapId = iIapRecord->RecordId();
-        
-        CLOG_NAME_2( _L("plugin_0x%x_%d"), this, iIapId );
-        CLOG_WRITE_1( "New IapId: [%d]", iIapId );
-        }
-    else
-        {
-        iIapRecord->ModifyL( Session() );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateProxyRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::UpdateProxyRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateProxyRecordL" );
-
-    CopyAttributes( iIapRecord, iProxyRecord );
-    CheckIfNameModifiedL( iProxyRecord );
-    
-    if ( iProxyRecord->iUseProxyServer )
-        {
-        if ( !iProxyRecord->RecordId() )
-            // new proxy setting -> create new record
-            {
-            iProxyRecord->iService = iServiceRecord->RecordId();
-            iProxyRecord->iServiceType.SetL( iIapRecord->iServiceType );
-
-            // By default protocol is set to "http"
-            if ( TPtrC(iProxyRecord->iProtocolName).Length() == 0 )
-                {
-                iProxyRecord->iProtocolName.SetL(KDefProxyProtocolName);
-                }
-
-            iProxyRecord->SetRecordId( KCDNewRecordRequest );
-
-            iProxyRecord->StoreL( Session() );
-            }
-        else
-            // already existing record -> update only
-            {
-            iProxyRecord->ModifyL( Session() );
-            }        
-        }
-    else
-        {
-        if ( iProxyRecord->RecordId() )
-            {
-            iProxyRecord->DeleteL( Session() );
-            }
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateSeamlessnessRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::UpdateSeamlessnessRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateSeamlessnessRecordL" );
-
-    CopyAttributes( iIapRecord, iPriv->iMetaDataRecord );
-    CheckIfNameModifiedL( iPriv->iMetaDataRecord );
-    
-    if ( !iPriv->iMetaDataRecord->RecordId() )
-        {
-        iPriv->iMetaDataRecord->iIAP = IAPRecordElementId();
-        iPriv->iMetaDataRecord->SetRecordId( KCDNewRecordRequest );
-        iPriv->iMetaDataRecord->StoreL( Session() );
-        }
-    else
-        {
-        iPriv->iMetaDataRecord->ModifyL( Session() );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateChargeCardRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::UpdateChargeCardRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateChargeCardRecordL" );
-    if ( iChargeCardEnabled )
-        {
-        CopyAttributes( iIapRecord, iChargeCardRecord );
-        CheckIfNameModifiedL( iChargeCardRecord );
-        
-        if ( !iChargeCardRecord->RecordId() )
-            {
-            iChargeCardRecord->SetRecordId( KCDNewRecordRequest );
-            iChargeCardRecord->StoreL( Session() );
-            }
-        else
-            {
-            iChargeCardRecord->ModifyL( Session() );
-            }
-        }
-    else
-        {
-        if ( iChargeCardRecord )
-            {
-            iChargeCardRecord->DeleteL( Session() );
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateServiceRecordL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::UpdateServiceRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateServiceRecordL" );
-    
-    if ( iServiceRecord )
-        {
-        CopyAttributes( iIapRecord, iServiceRecord );
-        CheckIfNameModifiedL( iServiceRecord );
-        
-        if ( !iServiceRecord->RecordId() )
-            {
-            iServiceRecord->SetRecordId( KCDNewRecordRequest );
-            iServiceRecord->StoreL( Session() );
-            }
-        else
-            {
-            iServiceRecord->ModifyL( Session() );
-            }
-        }
-    else
-        {
-        CLOG_WRITE( "No service record" );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateNetworkRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::UpdateNetworkRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateNetworkRecordL" );
-    
-    CopyAttributes( iIapRecord, iNetworkRecord );
-    if ( !iNetworkRecord->RecordId() )
-        {
-        CheckIfNameModifiedL( iNetworkRecord );
-        
-        iNetworkRecord->SetRecordId( KCDNewRecordRequest );
-        iNetworkRecord->StoreL( Session() );
-        }
-    else
-        {
-        iNetworkRecord->ModifyL( Session() );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateLocationRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::UpdateLocationRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateLocationRecordL" );
-    if ( iLocationEnabled )
-        {
-        CopyAttributes( iIapRecord, iLocationRecord );
-        CheckIfNameModifiedL( iLocationRecord );
-                        
-        if ( !iLocationRecord->RecordId() )
-            {
-            iLocationRecord->SetRecordId( KCDNewRecordRequest );
-            iLocationRecord->StoreL( Session() );
-            }
-        else
-            {
-            iLocationRecord->ModifyL( Session() );
-            }
-        }
-    else
-        {
-        if ( iLocationRecord )
-            {
-            iLocationRecord->DeleteL( Session() );
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateConnPrefSettingL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::UpdateConnPrefSettingL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateConnPrefSettingL" );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::EnableProxyL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::EnableProxyL( TBool aEnable )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::EnableProxyL" );
-
-    if ( !iServiceRecord )
-        {
-        CLOG_WRITE( "No service record -> no proxy" );
-        User::Leave( KErrNotSupported );
-        }
-
-    if( !iProxyRecord )
-        {
-        iProxyRecord = static_cast<CCDProxiesRecord *>
-                      (CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord));
-        }
-        
-    iProxyRecord->iUseProxyServer = aEnable;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::EnableChargeCardL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::EnableChargeCardL( TBool aEnable )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::EnableChargeCardL" );
-
-    if ( aEnable )
-        {
-        if ( !iChargeCardRecord )
-            {
-            iChargeCardRecord = static_cast<CCDChargecardRecord *>
-                       (CCDRecordBase::RecordFactoryL(KCDTIdChargecardRecord));
-            }
-        }
-    else
-        // charge card is disabled. To be deleted in UpdateL
-        // Nothing to do here
-        {
-        }
-        
-    iChargeCardEnabled = aEnable;        
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::EnableLocationL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::EnableLocationL( TBool aEnable )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::EnableLocationL" );
-
-    if ( aEnable )
-        {
-        if ( !iLocationRecord )
-            {
-            iLocationRecord = static_cast<CCDLocationRecord *>
-                         (CCDRecordBase::RecordFactoryL(KCDTIdLocationRecord));
-            }
-        }
-    else
-        // location is disabled. To be deleted in UpdateL.
-        // Nothing to do here
-        {
-        }
-        
-    iLocationEnabled = aEnable;        
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::LoadWapRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::LoadWapRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::LoadWapRecordL" );
-
-    iPriv->iWapIPBearerRecord = FindWAPRecordL();
-    if ( iPriv->iWapIPBearerRecord )
-        {
-        CCDWAPAccessPointRecord *wapApRecord = static_cast<CCDWAPAccessPointRecord *>
-                   (CCDRecordBase::RecordFactoryL(KCDTIdWAPAccessPointRecord));
-                   
-        CleanupStack::PushL( wapApRecord );
-                                        
-        wapApRecord->SetRecordId( 
-                                iPriv->iWapIPBearerRecord->iWAPAccessPointId );
-        TRAPD( err, wapApRecord->LoadL( Session() ) );
-        if( err == KErrNotFound )
-            {
-            CleanupStack::PopAndDestroy( wapApRecord );
-            
-            wapApRecord = static_cast<CCDWAPAccessPointRecord *>
-                   (CCDRecordBase::RecordFactoryL(KCDTIdWAPAccessPointRecord));
-            }
-        else
-            {
-            CLOG_WRITE( "WAP bearer record found, WAP AP Not??" );
-
-            User::LeaveIfError( err );
-
-            CleanupStack::Pop( wapApRecord );
-            }
-        
-        iPriv->iWapAPRecord = wapApRecord;
-        }
-    else
-        // No WAP record found -> create a new one
-        {
-        NewWapRecordL();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::LoadSeamlessnessRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::LoadSeamlessnessRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::LoadSeamlessnessRecordL" );
-
-    iPriv->iMetaDataRecord = FindSeamlessnessRecordL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::UpdateWapRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::UpdateWapRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::UpdateWapRecordL" );
-    
-    if ( !iPriv->iWapIPBearerRecord )
-        // nothing to update
-        {
-        return;
-        }
-    
-    // we have the bearer but to make sure that we have WAP_AP, too.    
-    NewWapRecordL();
-    
-    CopyAttributes( iIapRecord, iPriv->iWapAPRecord );
-    CopyAttributes( iIapRecord, iPriv->iWapIPBearerRecord );
-    
-    CheckIfNameModifiedL( iPriv->iWapAPRecord );
-    CheckIfNameModifiedL( iPriv->iWapIPBearerRecord );
-
-    if ( !iPriv->iWapAPRecord->RecordId() )
-        {
-        iPriv->iWapAPRecord->SetRecordId( KCDNewRecordRequest );
-        iPriv->iWapAPRecord->StoreL( Session() );
-        }
-    else
-        {
-        iPriv->iWapAPRecord->ModifyL( Session() );
-        }
-    
-    if ( !iPriv->iWapIPBearerRecord->RecordId() )
-        {
-        iPriv->iWapIPBearerRecord->iWAPAccessPointId = iPriv->iWapAPRecord->RecordId();
-        iPriv->iWapIPBearerRecord->iWAPIAP = iIapId;
-        
-        iPriv->iWapIPBearerRecord->SetRecordId( KCDNewRecordRequest );
-        iPriv->iWapIPBearerRecord->StoreL( Session() );
-        }
-    else
-        {
-        iPriv->iWapIPBearerRecord->ModifyL( Session() );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::NewWapRecordL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::NewWapRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::NewWapBearerRecordL" );
-
-    if ( !iPriv->iWapIPBearerRecord )
-        {
-        iPriv->iWapIPBearerRecord = static_cast<CCDWAPIPBearerRecord *>
-                      (CCDRecordBase::RecordFactoryL(KCDTIdWAPIPBearerRecord));
-        iPriv->iWapIPBearerRecord->iWAPProxyPort = 0;
-        iPriv->iWapIPBearerRecord->iWAPWSPOption = ECmWapWspOptionConnectionOriented;
-        iPriv->iWapIPBearerRecord->iWAPSecurity = EFalse;
-        }
-
-    if ( !iPriv->iWapAPRecord )
-        {
-        iPriv->iWapAPRecord = static_cast<CCDWAPAccessPointRecord *>
-                   (CCDRecordBase::RecordFactoryL(KCDTIdWAPAccessPointRecord));
-        // SMS bearer is not supported by this version
-        iPriv->iWapAPRecord->iWAPCurrentBearer.SetL( 
-                                               TPtrC(KCDTypeNameWAPIPBearer) );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::NewSeamlessnessRecordL
-// ---------------------------------------------------------------------------
-//
-CCDIAPMetadataRecord* CCmPluginBaseEng::NewSeamlessnessRecordL( TBool aSetDef )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::NewSeamlessnessRecordL" );
-
-    CCDIAPMetadataRecord* record = new (ELeave) CCDIAPMetadataRecord( 
-                                          iCmMgr.SeamlessnessTableId() );
-                                          
-    if( aSetDef )
-        {
-        record->iSeamlessness = ESeamlessnessConfirmFirst;
-        }
-        
-    return record;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::SetAttribute
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::SetAttribute( CCDRecordBase* aRecord, 
-                                     TUint32 aAttribute, 
-                                     TBool aSet )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetAttribute" );
-   
-    if ( aSet )
-        {
-        aRecord->SetAttributes( aAttribute );
-        }
-    else
-        {
-        aRecord->ClearAttributes( aAttribute );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CopyAttributes
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::CopyAttributes( CCDRecordBase* aSrcRecord, 
-                                       CCDRecordBase* aDstRecord )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CopyAttributes" );
-
-    TMDBAttributeFlags attr( aSrcRecord->Attributes() );
-    
-    aDstRecord->SetAttributes( attr );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::FindWAPRecordL
-// ---------------------------------------------------------------------------
-//
-CCDWAPIPBearerRecord* CCmPluginBaseEng::FindWAPRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::FindWAPRecordL" );
-
-    CMDBRecordSet<CCDWAPIPBearerRecord>* wapRS = 
-            new(ELeave) 
-                   CMDBRecordSet<CCDWAPIPBearerRecord>(KCDTIdWAPIPBearerRecord);
-    CleanupStack::PushL( wapRS );
-    
-    CCDWAPIPBearerRecord* wapBearerRecord = static_cast<CCDWAPIPBearerRecord *>
-                      (CCDRecordBase::RecordFactoryL(KCDTIdWAPIPBearerRecord));
-                      
-    CleanupStack::PushL( wapBearerRecord );
-    
-    wapBearerRecord->iWAPIAP = iIapId;
-    wapRS->iRecords.AppendL( wapBearerRecord );
-    
-    CleanupStack::Pop( wapBearerRecord );
-    wapBearerRecord = NULL;
-    
-    if ( wapRS->FindL(Session()) )
-        {
-        CLOG_WRITE( "WAP bearer record found" );
-        
-        wapBearerRecord = 
-                        static_cast<CCDWAPIPBearerRecord *>(wapRS->iRecords[0]);
-
-        // we take over the ownership of this record
-        wapRS->iRecords.Remove( 0 );
-        }
-
-    CleanupStack::PopAndDestroy( wapRS );
-        
-    return wapBearerRecord;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::FindSeamlessnessRecordL
-// ---------------------------------------------------------------------------
-//
-CCDIAPMetadataRecord* CCmPluginBaseEng::FindSeamlessnessRecordL()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::FindSeamlessnessRecordL" );
-
-    CMDBRecordSet<CCDIAPMetadataRecord>* slnRS = 
-      new(ELeave) CMDBRecordSet<CCDIAPMetadataRecord>(iCmMgr.SeamlessnessTableId());
-    CleanupStack::PushL( slnRS );
-    
-    CCDIAPMetadataRecord* slnRecord = 
-            new (ELeave) CCDIAPMetadataRecord( iCmMgr.SeamlessnessTableId() );
-                                                                  
-    slnRecord->iIAP = IAPRecordElementId();
-    slnRS->iRecords.AppendL( slnRecord );
-    
-    slnRecord = NULL;
-    
-    if ( slnRS->FindL(Session()) )
-        {
-        CMDBRecordBase* record = slnRS->iRecords[0];
-
-        slnRecord = NewSeamlessnessRecordL( EFalse );
-        slnRecord->SetRecordId( record->RecordId() );
-        
-        // This can leave only in case of OOM.
-        slnRecord->LoadL( Session() );
-        }
-    else
-        {
-        slnRecord = NewSeamlessnessRecordL( ETrue );
-        }
-
-    CleanupStack::PopAndDestroy( slnRS );
-        
-    return slnRecord;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::DoMakeValidNameL
-// ---------------------------------------------------------------------------
-//
-HBufC* CCmPluginBaseEng::DoMakeValidNameL( const TDesC& aName )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::DoMakeValidNameL" );
-
-    TBool changed( EFalse );
-    HBufC* temp = HBufC::NewLC( KApMaxConnNameLength );
-    HBufC* temp2 = HBufC::NewLC( KApMaxConnNameLength );
-
-    HBufC* corrname = EnsureMaxLengthLC( aName, changed );
-    *temp = *corrname;
-    TInt postfix( 0 );
-    TInt pf( 0 );
-    TInt i( 0 );
-    TBool valid ( EFalse );
-
-    TPtrC prefix = GetPrefix( *corrname );
-    
-    postfix = GetPostfix( *temp, prefix );
-    postfix = -1;
-    do
-        {       
-        valid = IsValidNameL( *temp );
-        if ( !valid )
-            {
-            changed = ETrue;
-            postfix++;
-            // check the length of postfix, check text length accordingly
-            pf = postfix;
-            for (i=1; i<10; i++)
-                {
-                pf /= 10;
-                if ( !pf )
-                    break;
-                }
-            TPtr sgdptr( temp->Des() );
-            TPtr sgdptr2( temp2->Des() );
-            if ( postfix )
-                {
-                if ( postfix < 10 )
-                    {
-                    sgdptr2 = prefix.Left( KApMaxConnNameLength - i - 3 );
-                    }
-                else
-                    {
-                    sgdptr2 = prefix.Left( KApMaxConnNameLength - i - 2 );
-                    }
-                }
-            else
-                {
-                sgdptr2 = prefix.Left( KApMaxConnNameLength );
-                }
-            if ( postfix )
-                {
-                TBuf< KMaxPostfixLength > postfixString;
-                if ( postfix > 9 )
-                    {
-                    postfixString.Format( KFormatLargePostfix, postfix );
-                    AknTextUtils::LanguageSpecificNumberConversion( postfixString );
-                    }
-                else
-                    {
-                    postfixString.Format( KFormatPostfix, postfix );
-                    AknTextUtils::LanguageSpecificNumberConversion( postfixString );
-                    }
-                sgdptr.Format( KFormatNameWithPostfix, &sgdptr2,
-                                   &postfixString );
-                }
-            else
-                {
-                sgdptr.Format( KFormatNoPostfix, &sgdptr2 );
-                }
-            }
-        } while ( !valid );
-
-    CleanupStack::PopAndDestroy( corrname );
-    CleanupStack::PopAndDestroy( temp2 );
-
-    if ( changed )
-        {
-        CLOG_WRITE_1( "New name: [%S]", temp );
-        CleanupStack::Pop( temp );
-        }
-    else
-        {
-        CleanupStack::PopAndDestroy( temp );
-        temp = NULL;
-        }
-
-    return temp;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::EnsureMaxLengthLC
-// ---------------------------------------------------------------------------
-//
-HBufC* CCmPluginBaseEng::EnsureMaxLengthLC( const TDesC& aName, 
-                                            TBool& aChanged )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::EnsureMaxLengthLC" );
-
-    TInt length = aName.Length();
-    
-    aChanged = EFalse;
-    
-    if ( !length )
-        {
-        // Name is required.        
-        User::Leave( KErrArgument );
-        }
-
-    HBufC* corrname;
-    if ( KApMaxConnNameLength < length )
-        { // name too long, truncate.
-        corrname = aName.Left( KApMaxConnNameLength ).AllocLC();
-        aChanged = ETrue;
-        }
-    else
-        {
-        corrname = aName.AllocLC();
-        corrname->Des().Trim();
-        if ( corrname->Length() == 0 )
-            {
-            User::Leave( KErrArgument );
-            }
-        // comes here only if name is valid
-        if ( corrname->Length() != aName.Length() )
-            {
-            aChanged = ETrue;
-            }
-        }
-
-    return corrname;
-    }
-
-// ---------------------------------------------------------------------------
-// Given aName in the format <prefix> or <prefix><brace><integer><brace>,
-// return a pointer to the leading part.
-// That is, if there is trailing <space><integer>,
-// then that is excluded; if there is no trailing part, then the original
-// decriptor is returned.
-// Examples:
-//   - "Foo" returns "Foo";
-//   - "Foo 12" returns "Foo 12";
-//   - "Foo(12)" returns "Foo";
-//   - "Foo 12 (34)" returns "Foo 12 ";
-//   - "Foo bar" returns "Foo bar";
-//   - "Foo " returns "Foo ".
-// ---------------------------------------------------------------------------
-TPtrC CCmPluginBaseEng::GetPrefix( const TDesC& aName )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GetPrefix" );
-
-    TPtrC prefix = aName;
-    TInt lastBrace = aName.LocateReverse('(');
-    if ( lastBrace != KErrNotFound )
-        {
-        // aName looks like "<prefix><brace><something>".
-        // See if <something> is an integer number.
-        TPtrC num = aName.Right( aName.Length() - lastBrace - 1 );
-        TInt val;
-        TLex lex( num );
-        if ( lex.Val( val ) == KErrNone )
-            {
-            // Yes, the trailer is an integer.
-            prefix.Set( aName.Left( lastBrace ) );
-            }
-        }
-    return prefix;
-    }
-
-
-// ---------------------------------------------------------------------------
-// If aName is constructed from aPrefix with a postfix, get the numeric
-// value of the postfix, e.g:
-//   - GetPostfix( "Foo (3)", "Foo" ) == 3
-//   - GetPostfix( "Foo 23 (45)", "Foo 23" ) == 45
-// If aName is the same as aPrefix, return 0, e.g.:
-//   - GetPostfix( "Foo", "Foo" ) == 0
-// If aName is not constructed from aPrefix, return -1, e.g.:
-//   - GetPostfix( "Foobar", "Foo" ) == -1
-//   - GetPostfix( "Fo 23 45", "Foo" ) == -1
-// ---------------------------------------------------------------------------
-TInt CCmPluginBaseEng::GetPostfix( const TDesC& aName, const TDesC& aPrefix )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GetPostfix" );
-    TInt postfix( KErrNotFound );
-    TInt nameLength = aName.Length();
-    TInt prefixLength = aPrefix.Length();
-    if ( nameLength >= prefixLength && aName.FindF( aPrefix ) == 0 )
-        {
-        // aName is longer or equal length, and
-        // aPrefix can be found in the beginning of aName.
-        if ( nameLength == prefixLength )
-            {
-            // They have the same length; they equal.
-            postfix = 0;
-            }
-        else
-            {
-            if ( prefixLength > 0 )
-                {
-                if ( aName[ prefixLength ] == '(' )
-                    {
-                    // (Now we know that aName is longer than aPrefix.)
-                    // aName looks like "aPrefix<brace><something>".
-                    // See if <something> is an integer number.
-                    TPtrC num = aName.Right( nameLength - prefixLength - 1 );
-                        TBuf< KApMaxConnNameLength > pf;
-                    pf = num;
-                    AknTextUtils::ConvertDigitsTo( pf, EDigitTypeWestern );
-                    TInt val;
-                    TLex lex( pf );
-                    if ( lex.Val( val ) == KErrNone )
-                        {
-                        // Yes, the trailer is an integer.
-                        if ( val > 0 )
-                            {
-                            postfix = val;
-                            }
-                        else
-                            {
-                            // signal that it is invalid...
-                            postfix = -1;
-                            }
-                        }
-	                }
-                }
-            else
-                {
-                postfix = -1;
-                }
-            }
-        }
-    return postfix;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::IsValidNameL
-// ---------------------------------------------------------------------------
-//
-TBool CCmPluginBaseEng::IsValidNameL( const TDesC& aNameText )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::IsValidNameL" );
-
-    TBool retVal( ETrue );
-    
-    OpenTransactionLC();
-    
-    CMDBRecordSet<CCDIAPRecord>* iapRS = 
-                      new(ELeave) CMDBRecordSet<CCDIAPRecord>(KCDTIdIAPRecord);
-    CleanupStack::PushL(iapRS);
-
-    CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord *>
-                            (CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
-
-    CleanupStack::PushL( iapRecord );
-    
-    // Prime record
-    iapRecord->iRecordName.SetL( aNameText );
-    
-    iapRS->iRecords.AppendL( iapRecord );
-
-    CleanupStack::Pop( iapRecord );
-    
-    iapRecord = NULL;
-    
-    if ( iapRS->FindL(Session()) )
-        {
-        if ( iIapId )
-            // this is not a new CM
-            {
-            for ( TInt i = 0; i < iapRS->iRecords.Count(); ++i )
-                {
-                if ( iapRS->iRecords[i]->RecordId() != iIapId )
-                    // duplication because it's not our name
-                    {
-                    retVal = EFalse;
-                    break;
-                    }
-                }
-            }
-        else
-            // new CM -> any occurence is a duplication
-            {
-            retVal = EFalse;
-            }
-        }
-        
-    CleanupStack::PopAndDestroy( iapRS );
-    
-    RollbackTransaction();
-        
-    return retVal;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::EscapeTextLC
-// ---------------------------------------------------------------------------
-//
-HBufC* CCmPluginBaseEng::EscapeTextLC( const TDesC& aLiteral )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::EscapeTextLC" );
-
-    TInt l( aLiteral.Length() );
-    //> 2*, to ensure correct esc. even if ALL chars are quotes...
-    HBufC* retbuf = HBufC::NewLC( 2*l );
-    TPtr ret = retbuf->Des();
-    TUint quote( '\'' );  // TChar gives warnings in THUMB & ARMI
-    TInt i( 0 );
-
-    for ( i=0; i<l; i++ )
-        {
-        ret.Append( aLiteral[i] );
-        if ( aLiteral[i] == quote )
-            {
-            // Duplicate quote.
-            ret.Append( quote );
-            }
-        }
-    return retbuf;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::SetNameL
-// ---------------------------------------------------------------------------
-//
-void CCmPluginBaseEng::SetNameL( const TDesC& aName )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetNameL" );
-    
-    if ( iPriv->iNamingMethod == ENamingNothing )
-        {
-        iIapRecord->iRecordName.SetL( aName );
-        }
-    else if ( iPriv->iNamingMethod == ENamingUnique )
-        {
-        HBufC* newName = DoMakeValidNameL( aName );
-        
-        if ( newName )
-            // name converted to unique
-            {
-            CleanupStack::PushL( newName );
-            iIapRecord->iRecordName.SetL( *newName );
-            CleanupStack::PopAndDestroy( newName );
-            }
-        else
-            {
-            iIapRecord->iRecordName.SetL( aName );
-            }
-        }
-    else if ( iPriv->iNamingMethod == ENamingNotAccept )
-        {
-        if ( IsValidNameL( aName ) )
-            {
-            iIapRecord->iRecordName.SetL( aName );
-            }
-        else
-            {
-            User::Leave( KErrArgument );
-            }
-        }
-    else
-        {
-        User::Leave( KErrCorrupt );
-        }
-        
-    CLOG_WRITE_1( "Finale name: [%S]", &FIELD_TO_TDESC(iIapRecord->iRecordName) );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::AddConverstionTableL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::AddConverstionTableL( CCDRecordBase* *aRecord,
-                           TBool* aEnabled,
-                           const TCmAttribConvTable* aConvTable )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::AddConverstionTableL" );
-    TCmAttrConvArrayItem* item = new (ELeave) TCmAttrConvArrayItem;
-    
-    item->iRecord = aRecord;
-    item->iEnabled = aEnabled;
-    item->iConvTable = aConvTable;
-    
-    iPriv->iConvTblArray->AppendL( item );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::AddConverstionTableL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::AddCommonConversionTableL( 
-                                const TCmCommonAttrConvArrayItem* aConvTable )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::AddCommonConversionTableL" );
-
-    User::LeaveIfError( iPriv->iCommonConvTblArray.Append( aConvTable ) );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::RemoveConversionTable
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::RemoveConversionTable( 
-                                    const TCmAttribConvTable* aConvTable )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::RemoveConversionTable" );
-
-    for ( TInt i = 0; i < iPriv->iConvTblArray->Count(); ++i )
-        {
-        if ( (*iPriv->iConvTblArray)[i]->iConvTable == aConvTable )
-            {
-            delete (*iPriv->iConvTblArray)[i];
-            iPriv->iConvTblArray->Delete( i );
-            }
-        }
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::RemoveCommonConversionTable
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::RemoveCommonConversionTable( 
-                                 const TCmCommonAttrConvArrayItem* aConvTable )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::RemoveCommonConversionTable" );
-
-    for ( TInt i = 0; i < iPriv->iCommonConvTblArray.Count(); ++i )
-        {
-        if ( iPriv->iCommonConvTblArray[i] == aConvTable )
-            {
-            iPriv->iCommonConvTblArray.Remove( i );
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::FindFieldL
-// ---------------------------------------------------------------------------
-//
-TValidationFunctionL CCmPluginBaseEng::FindFieldL( TUint32 aAttribute,
-                                           TCMFieldTypes aType,
-                                           CMDBElement* &aElement ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::FindFieldL" );
-
-    TValidationFunctionL func = NULL;
-    const TCmAttrConvArrayItem* foundItem = ConversionTable( aAttribute );
-    
-    aElement = NULL;
-    
-    if( !foundItem )
-        {
-        User::Leave( KErrNotSupported );
-        }
-        
-    if ( foundItem->iEnabled )
-        {
-        if ( !(*foundItem->iEnabled) )
-            {
-            User::Leave( KErrNotSupported );
-            }
-        }
-
-    if ( !(*foundItem->iRecord) )
-        {
-        User::Leave( KErrNotSupported );
-        }
-            
-    TInt index( 0 );
-    CMDBElement& field = FieldByAttributeL( foundItem, aAttribute, index );
-    switch ( field.Type() )
-        {
-        case EText:
-        case EMedText:
-        case ELongText:
-            {
-            if ( aType == ECmText )
-                {
-                aElement = &field;
-                }
-            else
-                {
-                User::Leave( KErrNotSupported );
-                }
-            }
-            break;
-
-        case EDesC8:
-            {
-            if ( aType == ECmText8 )
-                {
-                aElement = &field;
-                }
-            else
-                {
-                User::Leave( KErrNotSupported );
-                }
-            }
-            break;
-            
-        case EUint32:
-        case EInt:
-        case EBool:
-            {
-            if ( aType == ECmInt ||
-                 aType == ECmBool )
-                {
-                aElement = &field;
-                }
-            else
-                {
-                User::Leave( KErrNotSupported );
-                }
-            }
-            break;
-            
-        default:
-            {
-            User::Leave( KErrArgument );
-            }
-            break;
-        }
-        
-    if( aElement )
-        {
-        func = foundItem->iConvTable[index].iValidFuncL;
-        }
-    else
-        {
-        User::Leave( KErrNotSupported );
-        }
-    
-    return func;
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::Reset
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::Reset()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::Reset" );
-
-    iIapId = 0;
-    
-    delete iIapRecord; iIapRecord = NULL;
-    delete iProxyRecord; iProxyRecord = NULL;
-    delete iServiceRecord; iServiceRecord = NULL;
-    delete iChargeCardRecord; iChargeCardRecord = NULL;
-    delete iNetworkRecord; iNetworkRecord = NULL;
-    delete iLocationRecord; iLocationRecord = NULL;
-    if ( iPriv )
-        {
-        iPriv->iLoadResult = KErrNone;
-        delete iPriv->iWapAPRecord; iPriv->iWapAPRecord = NULL;
-        delete iPriv->iWapIPBearerRecord; iPriv->iWapIPBearerRecord = NULL;
-        delete iPriv->iMetaDataRecord; iPriv->iMetaDataRecord = NULL;            
-        }
-    
-    iChargeCardEnabled = EFalse;
-    iLocationEnabled = EFalse;
-    }
-    
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CheckIfAlreadyConnected
-// ---------------------------------------------------------------------------
-EXPORT_C TBool CCmPluginBaseEng::CheckIfAlreadyConnected() const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CheckIfAlreadyConnected" );
-
-    TBool retVal( EFalse );
-    RSocketServ serv;
-    RConnection connection;
-    TUint   count;
-
-    if ( serv.Connect() == KErrNone )
-        {
-        if ( connection.Open( serv, KAfInet ) == KErrNone )
-            {
-            if ( connection.EnumerateConnections( count ) == KErrNone )
-                {
-                TPckgBuf<TConnectionInfo> connInfo;
-
-                for ( TUint32 i = 1; i <= count; ++i )
-                    {
-                    connection.GetConnectionInfo( i, connInfo );
-
-                    if ( connInfo().iIapId == iIapId )
-                        {
-                        CLOG_WRITE( "Found connection" );
-                        retVal = ETrue;
-                        break;
-                        }
-                    }
-                }
-
-            connection.Close();
-            }
-
-        serv.Close();
-        }
-
-    return retVal;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CheckIfNameModifiedL
-// ---------------------------------------------------------------------------
-EXPORT_C void 
-        CCmPluginBaseEng::CheckIfNameModifiedL( CCDRecordBase* aRecord ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CheckIfNameModifiedL" );
-
-    if ( !TPtrC(iIapRecord->iRecordName).CompareF( TPtrC(aRecord->iRecordName)) )
-        // names matche
-        {
-        return;
-        }
-    
-    aRecord->iRecordName.SetL( TPtrC(iIapRecord->iRecordName) );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::IAPRecordElementId
-// ---------------------------------------------------------------------------
-TMDBElementId CCmPluginBaseEng::IAPRecordElementId() const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::IAPRecordElementId" );
-    
-    return ( KCDMaskShowField & iIapRecord->ElementId() );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::IsProtected
-// ---------------------------------------------------------------------------
-TBool CCmPluginBaseEng::IsProtected() const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::IsProtected" );
-
-    return ( iIapRecord->Attributes() & ECDProtectedWrite );
-    }
-    
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::GetLocationIdL
-// ---------------------------------------------------------------------------
-TUint32 CCmPluginBaseEng::GetLocationIdL() const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GetLocationIdL" );
-
-    TUint32 locId( 0 );
-    CMDBRecordSet<CCDLocationRecord>* locRS = 
-            new(ELeave) CMDBRecordSet<CCDLocationRecord>(KCDTIdLocationRecord);
-    CleanupStack::PushL( locRS );
-    
-    CCDLocationRecord* locRecord = static_cast<CCDLocationRecord *>
-                         (CCDRecordBase::RecordFactoryL(KCDTIdLocationRecord));
-
-    CleanupStack::PushL( locRecord );
-    locRecord->iRecordName.SetL( KLocationName );                                            
-    locRS->iRecords.AppendL( locRecord );
-    CleanupStack::Pop( locRecord );
-   
-    if ( locRS->FindL(Session()) )
-        {
-        locRecord = static_cast<CCDLocationRecord *>(locRS->iRecords[0]);
-        
-        locId = locRecord->RecordId();
-        }
-    else
-        {
-        CLOG_WRITE( "Loc id not found" );
-        User::Leave( KErrNotFound );
-        }
-        
-    CleanupStack::PopAndDestroy( locRS );
-        
-    return locId;
-    }            
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CheckForCommonAttribute
-// ---------------------------------------------------------------------------
-TUint32 
-    CCmPluginBaseEng::CheckForCommonAttribute( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CheckForCommonAttribute" );
-
-    TUint32 convAttr( aAttribute );
-    
-    if ( iPriv->iCommonConvTblArray.Count() &&
-        aAttribute > ECmCommonAttributesStart &&
-        aAttribute < ECmCommonAttributesEnd )
-        {
-        for ( TInt i = 0; i < iPriv->iCommonConvTblArray.Count(); ++i )
-            {
-            const TCmCommonAttrConvArrayItem* convArray = 
-                                                iPriv->iCommonConvTblArray[i];
-            for ( TInt item = 0; convArray[item].iCommonAttribId; ++item )
-                {
-                if ( convArray[item].iCommonAttribId == aAttribute )
-                    {
-                    return convArray[item].iAttribId;
-                    }
-                }
-            }
-        }
-        
-    return convAttr;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CommonAttribute
-// ---------------------------------------------------------------------------
-/*TUint32 CCmPluginBaseEng::CommonAttributeL( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CommonAttribute" );
-
-    if ( iPriv->iCommonConvTblArray.Count() )
-        {
-        for ( TInt i = 0; i < iPriv->iCommonConvTblArray.Count(); ++i )
-            {
-            const TCmCommonAttrConvArrayItem* convArray = 
-                                                iPriv->iCommonConvTblArray[i];
-            for ( TInt item = 0; convArray[item].iCommonAttribId; ++item )
-                {
-                if ( convArray[item].iAttribId == aAttribute )
-                    {
-                    return convArray[item].iCommonAttribId;
-                    }
-                }
-            }
-        }
-        
-    User::Leave( KErrArgument );
-    
-    return 0;
-    }*/
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::FeatureSupported
-// ---------------------------------------------------------------------------
-EXPORT_C TBool CCmPluginBaseEng::FeatureSupported( TInt aFeature )
-    {
-#ifdef _IPV6_DISABLED
-    if( aFeature == KFeatureIdIPv6 )
-        {
-        return EFalse;
-        }
-#endif
-    return CCmManagerImpl::FeatureSupported( aFeature );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::GlobalBearerPriority
-// ---------------------------------------------------------------------------
-EXPORT_C TInt 
-    CCmPluginBaseEng::GlobalBearerPriority( const TDesC& aServiceType ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GlobalBearerPriority" );
-
-    return iCmMgr.GlobalBearerPriority( EFalse, aServiceType );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::GlobalUiBearerPriority
-// ---------------------------------------------------------------------------
-EXPORT_C TInt 
-    CCmPluginBaseEng::GlobalUiBearerPriority( const TDesC& aServiceType ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GlobalUiBearerPriority" );
-
-    return iCmMgr.GlobalBearerPriority( ETrue, aServiceType );
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::SetProxyServerNameL
-// ---------------------------------------------------------------------------
-TBool CCmPluginBaseEng::SetProxyServerNameL( const TDesC& aProxyServer )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetProxyServerNameL" );
-
-    iProxyRecord->iServerName.SetL( aProxyServer );
-    if( !aProxyServer.Length() )
-        {
-        iProxyRecord->iPortNumber = 0;
-        iProxyRecord->iUseProxyServer = EFalse;
-        }
-    else
-        {
-        iProxyRecord->iUseProxyServer = ETrue;
-        }
-        
-    return ETrue;        
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::ConvTableItemL
-// ---------------------------------------------------------------------------
-EXPORT_C const TCmAttribConvTable* 
-                        CCmPluginBaseEng::ConvTableItem( TUint32 aAttribute )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::ConvTableItem" );
-
-    TInt i;
-    TCmAttrConvArrayItem* foundItem = ConversionTable( aAttribute );
-         
-    if( foundItem )
-        {
-        // From 2nd item, because the first one is for the range.            
-        for ( i = 1; foundItem->iConvTable[i].iAttribId; ++i )
-            {
-            if ( foundItem->iConvTable[i].iAttribId == aAttribute )
-                {
-                return &foundItem->iConvTable[i];
-                }
-            }
-        }
-    else
-        {
-        // I know that this is a not nice solution, but 
-        // I couldn't find any more inteligent way of adding
-        // ECmBearerSettingName to the array.
-        const TCmAttribConvTable* item = SUiTable;
-        
-        // This is a where use 
-        for ( i = 0; item[i].iAttribId; ++i )
-            {
-            if( item[i].iAttribId == aAttribute )
-                {
-                return &item[i];
-                }
-            }
-        }
-        
-    return NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::ConversionTable
-// ---------------------------------------------------------------------------
-TCmAttrConvArrayItem* 
-                CCmPluginBaseEng::ConversionTable( TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::ConversionTable" );
-
-    TCmAttrConvArrayItem* foundItem = NULL;
-    TInt i;
-    
-    for ( i = 0; i < iPriv->iConvTblArray->Count(); ++i )
-        {
-        TCmAttrConvArrayItem* item = (*iPriv->iConvTblArray)[i];
-        
-        if ( item->iConvTable[0].iAttribId <= aAttribute &&
-             item->iConvTable[0].iCommsDatId >= aAttribute )
-            {
-            foundItem = item;
-            break;
-            }
-        }
-        
-    return foundItem;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::FieldByAttributeL
-// ---------------------------------------------------------------------------
-CMDBElement& CCmPluginBaseEng::FieldByAttributeL( 
-                                            const TCmAttrConvArrayItem* aItem,
-                                            const TUint32 aAttribute,
-                                            TInt& aIndex ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::FieldByAttributeL" );
-
-    // From 2nd item, because the first one is for the range.            
-    for ( aIndex = 1; aItem->iConvTable[aIndex].iAttribId; ++aIndex )
-        {
-        if ( aItem->iConvTable[aIndex].iAttribId == aAttribute )
-            {
-            return *(*aItem->iRecord)->GetFieldByIdL( 
-                                      aItem->iConvTable[aIndex].iCommsDatId );
-            }
-        }
-        
-    User::Leave( KErrNotFound );
-    // Dead code
-    return *(CMDBElement*)1;
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::SetDNSServerAddressL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::SetDNSServerAddressL( TUint32 aSrv1Attr,
-                                                      const TDesC& aSrv1,
-                                                      TUint32 aSrv2Attr,
-                                                      const TDesC& aSrv2,
-                                                      TUint32 aAddrFromSrvAttr,
-                                                      TBool aIPv6 )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetDNSServerAddressL" );
-
-    TBool undef1;
-    TBool undef2;
-    TPtrC dynamic;
-    
-    if( aIPv6 )
-        // IPv6
-        {
-        undef1 = ClassifyIPv6Address( aSrv1 ) == EIPv6Unspecified;
-        undef2 = ClassifyIPv6Address( aSrv2 ) == EIPv6Unspecified;
-        
-        dynamic.Set( KDynamicIpv6Address );
-        }
-    else
-        {
-        undef1 = IsUnspecifiedIPv4Address( aSrv1 );
-        undef2 = IsUnspecifiedIPv4Address( aSrv2 );
-        
-        dynamic.Set( KUnspecifiedIPv4 );
-        }
-        
-    if( undef1 )
-        {
-        SetStringAttributeL( aSrv1Attr, aSrv2 );
-        SetStringAttributeL( aSrv2Attr, dynamic );
-        
-        SetBoolAttributeL( aAddrFromSrvAttr, undef2 );
-        }
-    else
-        {
-        SetStringAttributeL( aSrv1Attr, aSrv1 );
-        SetStringAttributeL( aSrv2Attr, aSrv2 );
-
-        SetBoolAttributeL( aAddrFromSrvAttr, EFalse );
-        }        
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CheckDNSServerAddressL
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CCmPluginBaseEng::CheckDNSServerAddressL( TBool aIPv6,
-                                                        CMDBField<TDesC>& aDNS1,
-                                                        CMDBField<TDesC>& aDNS2,
-                                                        CMDBField<TBool>& /*aDNSFromServer*/ )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CheckDNSServerAddressL" );
-
-    // aDNSFromServer is commented out because the API must not set this
-    // field any more. It is only set from the UI
-    if( !(aDNS1.ElementId() & KCDChangedFlag) &&
-        !(aDNS2.ElementId() & KCDChangedFlag) )
-        // No change
-        {
-        return;
-        }
-
-    if( aIPv6 )
-        {
-        if( ClassifyIPv6Address( aDNS1 ) == EIPv6Unspecified )
-            {
-            if( ClassifyIPv6Address( aDNS2 ) != EIPv6Unspecified )
-                {
-                aDNS1.SetL( aDNS2 );
-                aDNS2.SetL( KDynamicIpv6Address );
-                }
-            }
-        }
-    else // IPv4
-        {
-        if( IsUnspecifiedIPv4Address( aDNS1 ) )
-            {
-            if( !IsUnspecifiedIPv4Address( aDNS2 ) )
-                {
-                aDNS1.SetL( aDNS2 );
-                aDNS2.SetL( KUnspecifiedIPv4 );
-                }
-            }
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::CheckSpaceBelowCriticalLevelL
-// ---------------------------------------------------------------------------
-//
-TBool CCmPluginBaseEng::CheckSpaceBelowCriticalLevelL() const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::CheckSpaceBelowCriticalLevelL" );
-
-    // OOD handling. If disk space is low user is notified.
-    RFs fs;
-    User::LeaveIfError( fs.Connect() );
-    CleanupClosePushL<RFs>( fs );
-    
-    // Checks the FFS space "after" addition
-    TBool belowCL = SysUtil::FFSSpaceBelowCriticalLevelL
-            ( &fs, KEstimatedOverhead );
-    
-    CleanupStack::PopAndDestroy(); // fs
-    
-    if( belowCL )
-        {
-        // Raise a dialog to notify the user.
-        TCmCommonUi::ShowMemoryFullConfirmationQueryL();
-        // It must leave because it is the only way to notify the caller about
-        // the operation failed. (Its caller does not return indicator.)
-        // KLeaveWithoutAlert means no more dialog will raise
-        User::Leave( KLeaveWithoutAlert );
-        }
-        
-    // Return value keept to have a suitable API    
-    return belowCL;    
-    
-    }
-    
-// -----------------------------------------------------------------------------
-// CCmPluginBaseEng::IncrementRefCounter
-// -----------------------------------------------------------------------------
-void CCmPluginBaseEng::IncrementRefCounter()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::IncrementRefCounter" );
-
-    iRefCounter++;
-    }
-// -----------------------------------------------------------------------------
-// CCmPluginBaseEng::DecrementRefCounter
-// -----------------------------------------------------------------------------
-void CCmPluginBaseEng::DecrementRefCounter()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::DecrementRefCounter" );
-
-    iRefCounter--;
-    }
-// -----------------------------------------------------------------------------
-// CCmPluginBaseEng::GetRefCounter
-// -----------------------------------------------------------------------------
-TInt CCmPluginBaseEng::GetRefCounter()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GetRefCounter" );
-
-    return iRefCounter;
-    }
-
-// -----------------------------------------------------------------------------
-// CCmPluginBaseEng::IdIsValid
-// -----------------------------------------------------------------------------
-TBool CCmPluginBaseEng::IdIsValid()
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::IdIsValid" );
-
-    return iIdIsValid;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCmPluginBaseEng::IdIsValid
-// -----------------------------------------------------------------------------
-void CCmPluginBaseEng::SetIdValidity(TBool validity)
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetIdValidity" );
-
-    iIdIsValid = validity;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CCmPluginBaseEng::GetRefCounter
-// -----------------------------------------------------------------------------
-void CCmPluginBaseEng::GenericStringWriterL( const TUint32 aAttribute, 
-                                             const TDesC16& aValue )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GenericStringWriterL" );
-
-    TUint32 attribute = CheckForCommonAttribute( aAttribute );
-    CMDBField<TDesC>* field;
-    
-    TValidationFunctionL func = 
-                FindFieldL( attribute, ECmText, (CMDBElement*&)field );
-    
-    if( func )
-        {
-        func( this, attribute, (const TAny*)&aValue );
-        }
-        
-    field->SetL( aValue );    
-    }
-
-// ---------------------------------------------------------------------------
-// CCmPluginBaseEng::MappedCommonAttribute
-// ---------------------------------------------------------------------------
-TUint32 
-    CCmPluginBaseEng::MappedCommonAttribute( const TUint32 aAttribute ) const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::MappedCommonAttribute" );
-
-    TUint32 convAttr( aAttribute );
-    
-    if ( iPriv->iCommonConvTblArray.Count() )
-        {
-        for ( TInt i = 0; i < iPriv->iCommonConvTblArray.Count(); ++i )
-            {
-            const TCmCommonAttrConvArrayItem* convArray = 
-                                                iPriv->iCommonConvTblArray[i];
-            for ( TInt item = 0; convArray[item].iCommonAttribId; ++item )
-                {
-                if ( convArray[item].iAttribId == aAttribute )
-                    {
-                    return convArray[item].iCommonAttribId;
-                    }
-                }
-            }
-        }
-        
-    return convAttr;
-    }
-//-----------------------------------------------------------------------------
-// CCmPluginBaseEng::ParentDestination
-// -----------------------------------------------------------------------------
-EXPORT_C CCmDestinationImpl* CCmPluginBaseEng::ParentDestination() const
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::ParentDestination" );
-
-    if (iParentDest)
-        {
-        CCmDestinationImpl* parentDest = NULL;
-        TRAPD( err, parentDest = iCmMgr.DestinationL( iParentDest ) );
-        if ( !err )
-            {
-            return parentDest;
-            }
-        }
-    
-    return NULL;
-    }
-   
-//-----------------------------------------------------------------------------
-// CCmPluginBaseEng::GetAdditionalUids
-// -----------------------------------------------------------------------------
-EXPORT_C void CCmPluginBaseEng::GetAdditionalUids( RArray<TUint32>& /*aIapIds*/ )
-    {
-    LOGGER_ENTERFN( "CCmPluginBaseEng::GetAdditionalUids" );
-    }
-
-//-----------------------------------------------------------------------------
-// CCmPluginBaseEng::SetPreDefinedId
-// -----------------------------------------------------------------------------
-EXPORT_C void CCmPluginBaseEng::SetPreDefinedId( const TUint32 aPreDefId )
-	{
-    LOGGER_ENTERFN( "CCmPluginBaseEng::SetPreDefinedId" );
-
-	iPreDefIapId = aPreDefId;
-	}
-