--- a/cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseeng.cpp Thu May 27 13:17:01 2010 +0300
+++ b/cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseeng.cpp Wed Jun 23 18:39:24 2010 +0300
@@ -21,7 +21,9 @@
#include <cmpluginbaseeng.h>
#include <cmpsettingsconsts.h>
#include <featmgr.h>
-
+#include <cmpluginembdestinationdef.h>
+
+#include "cmmserverdefs.h"
#include "ccmpluginbaseengtextresolver.h"
#include "OstTraceDefinitions.h"
@@ -33,7 +35,7 @@
using namespace CMManager;
using namespace CommsDat;
-const TInt KApMaxConnNameLength = 30;
+const TInt KApMaxConnNameLength = 50;
_LIT( KFormatPostfix, "%02d" );
_LIT( KFormatLargePostfix, "%d" );
_LIT( KFormatNameWithPostfix, "%S(%S)" );
@@ -136,7 +138,7 @@
iWapIPBearerRecord = NULL;
iMetaDataRecord = NULL;
- iIapId = 0;
+ iCmId = 0;
iMetadataTableId = 0;
iLocationEnabled = EFalse;
@@ -151,7 +153,7 @@
{
OstTraceFunctionEntry0( DUP1_CCMPLUGINBASEENG_CCMPLUGINBASEENG_ENTRY );
- iIapId = 0;
+ iCmId = 0;
delete iIapRecord; iIapRecord = NULL;
delete iProxyRecord; iProxyRecord = NULL;
delete iServiceRecord; iServiceRecord = NULL;
@@ -297,7 +299,7 @@
ResetBearerRecords();
- LoadL( iIapId );
+ LoadL( iCmId );
OstTraceFunctionExit0( CCMPLUGINBASEENG_RELOAD_EXIT );
}
@@ -310,6 +312,13 @@
{
OstTraceFunctionEntry0( CCMPLUGINBASEENG_LOADL_ENTRY );
+ // Embedded destination must be handled separately first.
+ if ( aIapId > KCmDefaultDestinationAPTagId )
+ {
+ iCmId = aIapId;
+ return;
+ }
+
DoLoadL( aIapId );
OstTraceFunctionExit0( CCMPLUGINBASEENG_LOADL_EXIT );
@@ -323,7 +332,7 @@
{
OstTraceFunctionEntry0( CCMPLUGINBASEENG_CREATENEWL_ENTRY );
- if ( iIapId )
+ if ( iCmId )
// we already have IAP id ->
{
User::Leave( KErrAlreadyExists );
@@ -366,7 +375,7 @@
_LIT( KDefaultConnNameTextId, "txt_occ_setlabel_connection_name_val_connection" );
HBufC* resolvedText( NULL );
resolvedText = CCmPluginBaseEngTextResolver::ResolveTextL( KDefaultConnNameTextId );
- if ( resolvedText != NULL )
+ if ( resolvedText )
{
SetDefaultNameL( *resolvedText );
}
@@ -383,7 +392,7 @@
if ( aCmId != 0 )
{
iIapRecord->SetRecordId( aCmId );
- iIapId = 0;
+ iCmId = 0;
}
else
{
@@ -486,8 +495,12 @@
{
case KIapRecordIndex:
{
- aCopyInstance->iIapRecord = static_cast<CCDIAPRecord*>(
- CCDRecordBase::CreateCopyRecordL( *iIapRecord ) );
+ CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
+ CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
+ CleanupStack::PushL( iapRecord );
+ CopyRecordFieldsL( *iIapRecord, *iapRecord );
+ CleanupStack::Pop( iapRecord );
+ aCopyInstance->iIapRecord = iapRecord;
}
break;
case KServiceRecordIndex:
@@ -499,20 +512,24 @@
break;
case KNetworkRecordIndex:
{
- aCopyInstance->iNetworkRecord = static_cast<CCDNetworkRecord*>(
- CCDRecordBase::CreateCopyRecordL( *iNetworkRecord ) );
+ CCDNetworkRecord* networkRecord = static_cast<CCDNetworkRecord*>(
+ CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) );
+ CleanupStack::PushL( networkRecord );
+ CopyRecordFieldsL( *iNetworkRecord, *networkRecord );
+ CleanupStack::Pop( networkRecord );
+ aCopyInstance->iNetworkRecord = networkRecord;
}
break;
case KWAPAPRecordIndex:
{
aCopyInstance->iWapAPRecord = static_cast<CCDWAPAccessPointRecord*>(
- CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) );
+ CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) );//TODO, convert to generic copy
}
break;
case KWAPBearerRecordIndex:
{
aCopyInstance->iWapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
- CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) );
+ CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) );//TODO, convert to generic copy
}
break;
case KMetaDataRecordIndex:
@@ -529,8 +546,12 @@
{
if ( iProxyRecord )
{
- aCopyInstance->iProxyRecord = static_cast<CCDProxiesRecord*>(
- CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) );
+ CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
+ CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) );
+ CleanupStack::PushL( proxyRecord );
+ CopyRecordFieldsL( *iProxyRecord, *proxyRecord );
+ CleanupStack::Pop( proxyRecord );
+ aCopyInstance->iProxyRecord = proxyRecord;
}
}
break;
@@ -545,17 +566,19 @@
}
// ---------------------------------------------------------------------------
-// CCmPluginBaseEng:: CopyRecordFieldsL
+// Copies the values and attributes of all fields from aSource-record into
+// aDestination record. Does not copy the record element ID. Also, does not
+// touch any field in aDestination-record that is NULL in aSource-record.
// ---------------------------------------------------------------------------
//
-void CCmPluginBaseEng::CopyRecordFieldsL(
+EXPORT_C void CCmPluginBaseEng::CopyRecordFieldsL(
CommsDat::CMDBRecordBase& aSource,
CommsDat::CMDBRecordBase& aDestination )
{
OstTraceFunctionEntry0( CCMPLUGINBASEENG_COPYRECORDFIELDSL_ENTRY );
const SRecordTypeInfo* recordInfo = aSource.GetRecordInfo();
- if ( recordInfo == NULL )
+ if ( !recordInfo )
{
User::Leave( KErrCorrupt );
}
@@ -563,7 +586,7 @@
CMDBElement* ptrSource( NULL );
CMDBElement* ptrDest( NULL );
- while ( recordInfo != NULL && recordInfo->iTypeId != 0 )
+ while ( recordInfo && recordInfo->iTypeId != 0 )
{
ptrSource = aSource.GetFieldByIdL( recordInfo->iTypeId );
ptrDest = aDestination.GetFieldByIdL( recordInfo->iTypeId );
@@ -675,15 +698,15 @@
{
OstTraceFunctionEntry0( CCMPLUGINBASEENG_LOADIAPRECORDL_ENTRY );
- iIapId = aIapId;
-
- // Load IAP record
- CCDIAPRecord *iapRecord = static_cast<CCDIAPRecord *>(
+ iCmId = aIapId;
+
+ // Load IAP record.
+ CCDIAPRecord *iapRecord = static_cast<CCDIAPRecord*>(
CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
CleanupStack::PushL( iapRecord );
- iapRecord->SetRecordId( iIapId );
+ iapRecord->SetRecordId( iCmId );
iapRecord->LoadL( iSession );
CleanupStack::Pop( iapRecord );
@@ -700,19 +723,18 @@
{
OstTraceFunctionEntry0( CCMPLUGINBASEENG_LOADPROXYSETTINGL_ENTRY );
- // Load Proxy record
+ // 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
+ // Now try to find the linked proxy record.
+ // Create new record.
CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) );
-
CleanupStack::PushL( proxyRecord );
- // Prime record
+ // Prime record.
TPtrC serviceType( iIapRecord->iServiceType );
proxyRecord->iServiceType.SetL( serviceType );
proxieRS->iRecords.AppendL( proxyRecord ); // Ownership transfered.
@@ -730,11 +752,11 @@
{
CCDProxiesRecord* proxyRecord = (*proxieRS)[i];
- // Compare the record id of these 2 services
+ // Compare the record id of these 2 services.
if ( TUint32( proxyRecord->iService ) == TUint32( iIapRecord->iService ) )
{
iProxyRecord = proxyRecord;
- // Take ownership of this record
+ // Take ownership of this record.
proxieRS->iRecords.Remove( i );
break;
}
@@ -842,7 +864,7 @@
CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
- if ( iIapId == 0 )
+ if ( iCmId == 0 )
{
// Otherwise predefined iapid.
if ( !iIapRecord->RecordId() )
@@ -874,31 +896,32 @@
iIapRecord->StoreL( iSession );
- iIapId = iIapRecord->RecordId();
- aClientPluginInstance->iIapId = iIapId;
+ iCmId = iIapRecord->RecordId();
+ aClientPluginInstance->iIapId = iCmId;
CCDIAPRecord* tempIapRecord = static_cast<CCDIAPRecord*>(
- CCDRecordBase::CreateCopyRecordL( *iIapRecord ) );
+ CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
CleanupStack::PushL( tempIapRecord );
+ CopyRecordFieldsL( *iIapRecord, *tempIapRecord );
tempIapRecord->SetElementId( iIapRecord->ElementId() );
aClientPluginInstance->iGenRecordArray.Remove( KIapRecordIndex );
- CleanupStack::PushL( iapRecord );
+ delete iapRecord;
+ iapRecord = NULL;
aClientPluginInstance->iGenRecordArray.InsertL(
static_cast<CommsDat::CCDRecordBase*>( tempIapRecord ),
KIapRecordIndex );
- CleanupStack::PopAndDestroy( iapRecord );
CleanupStack::Pop( tempIapRecord );
}
else
{
delete iIapRecord;
iIapRecord = NULL;
-
iIapRecord = static_cast<CCDIAPRecord*>(
- CCDRecordBase::CreateCopyRecordL( *iapRecord ) );
+ CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
+ CopyRecordFieldsL( *iapRecord, *iIapRecord );
iIapRecord->SetElementId( iapRecord->ElementId() );
iIapRecord->ModifyL( iSession );
@@ -930,45 +953,34 @@
CopyAttributes( iapRecord, proxyRecord );
CheckIfNameModifiedL( iapRecord, proxyRecord );
- if ( proxyRecord->iUseProxyServer )
+ delete iProxyRecord;
+ iProxyRecord = NULL;
+ iProxyRecord = static_cast<CCDProxiesRecord*>(
+ CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) );
+ CopyRecordFieldsL( *proxyRecord, *iProxyRecord );
+ iProxyRecord->SetElementId( proxyRecord->ElementId() );
+
+ if ( !iProxyRecord->RecordId() )
{
- delete iProxyRecord;
- iProxyRecord = NULL;
-
- iProxyRecord = static_cast<CCDProxiesRecord*>(
- CCDRecordBase::CreateCopyRecordL( *proxyRecord ) );
- iProxyRecord->SetElementId( proxyRecord->ElementId() );
-
- 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( proxyRecord->iProtocolName ).Length() == 0 )
{
- // New proxy setting -> create new record.
- iProxyRecord->iService = iServiceRecord->RecordId();
- iProxyRecord->iServiceType.SetL( iIapRecord->iServiceType );
-
- // By default protocol is set to "http".
- if ( TPtrC( proxyRecord->iProtocolName ).Length() == 0 )
- {
- iProxyRecord->iProtocolName.SetL( KDefProxyProtocolName );
- }
-
- iProxyRecord->SetRecordId( KCDNewRecordRequest );
- iProxyRecord->StoreL( iSession );
- proxyRecord->SetElementId( iProxyRecord->ElementId() );
- proxyRecord->iService = iServiceRecord->RecordId();
- proxyRecord->iServiceType.SetL( iIapRecord->iServiceType );
+ iProxyRecord->iProtocolName.SetL( KDefProxyProtocolName );
}
- else
- // Already existing record -> update only.
- {
- iProxyRecord->ModifyL( iSession );
- }
+
+ iProxyRecord->SetRecordId( KCDNewRecordRequest );
+ iProxyRecord->StoreL( iSession );
+ CopyRecordFieldsL( *iProxyRecord, *proxyRecord );
+ proxyRecord->SetElementId( iProxyRecord->ElementId() );
}
else
+ // Already existing record -> update only.
{
- if ( iProxyRecord->RecordId() )
- {
- iProxyRecord->DeleteL( iSession );
- }
+ iProxyRecord->ModifyL( iSession );
}
OstTraceFunctionExit0( CCMPLUGINBASEENG_UPDATEPROXYRECORDL_EXIT );
@@ -1062,7 +1074,8 @@
CheckIfNameModifiedL( iapRecord, networkRecord );
iNetworkRecord = static_cast<CCDNetworkRecord*>(
- CCDRecordBase::CreateCopyRecordL( *networkRecord ) );
+ CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) );
+ CopyRecordFieldsL( *networkRecord, *iNetworkRecord );
iNetworkRecord->SetElementId( networkRecord->ElementId() );
@@ -1116,7 +1129,7 @@
if ( !iProxyRecord )
{
- iProxyRecord = static_cast<CCDProxiesRecord *>(
+ iProxyRecord = static_cast<CCDProxiesRecord*>(
CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) );
}
@@ -1226,11 +1239,11 @@
CheckIfNameModifiedL( iapRecord, wapIPBearerRecord );
iWapAPRecord = static_cast<CCDWAPAccessPointRecord*>(
- CCDRecordBase::CreateCopyRecordL( *wapAPRecord ) );
+ CCDRecordBase::CreateCopyRecordL( *wapAPRecord ) );//TODO, convert to generic copy
iWapAPRecord->SetElementId( wapAPRecord->ElementId() );
iWapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
- CCDRecordBase::CreateCopyRecordL( *wapIPBearerRecord ) );
+ CCDRecordBase::CreateCopyRecordL( *wapIPBearerRecord ) );//TODO, convert to generic copy
iWapIPBearerRecord->SetElementId( wapIPBearerRecord->ElementId() );
if ( !iWapAPRecord->RecordId() )
@@ -1348,7 +1361,7 @@
{
OstTraceFunctionEntry0( CCMPLUGINBASEENG_COPYATTRIBUTES_ENTRY );
- if ( aSrcRecord == NULL || aDstRecord == NULL )
+ if ( !aSrcRecord || !aDstRecord )
{
OstTraceFunctionExit0( CCMPLUGINBASEENG_COPYATTRIBUTES_EXIT );
return;
@@ -1378,7 +1391,7 @@
CleanupStack::PushL( wapBearerRecord );
- wapBearerRecord->iWAPIAP = iIapId;
+ wapBearerRecord->iWAPIAP = iCmId;
wapRS->iRecords.AppendL( wapBearerRecord );
CleanupStack::Pop( wapBearerRecord );
@@ -1451,6 +1464,7 @@
{
OstTraceFunctionEntry0( CCMPLUGINBASEENG_DOMAKEVALIDNAMEL_ENTRY );
+ const TInt decimalBase = 10;
TBool changed( EFalse );
HBufC* temp = HBufC::NewLC( KApMaxConnNameLength );
HBufC* temp2 = HBufC::NewLC( KApMaxConnNameLength );
@@ -1475,9 +1489,9 @@
postfix++;
// Check the length of postfix, check text length accordingly.
pf = postfix;
- for ( i = 1; i < 10; i++ )
+ for ( i = 1; i < decimalBase; i++ )
{
- pf /= 10;
+ pf /= decimalBase;
if ( !pf )
break;
}
@@ -1485,7 +1499,7 @@
TPtr sgdptr2( temp2->Des() );
if ( postfix )
{
- if ( postfix < 10 )
+ if ( postfix < decimalBase )
{
sgdptr2 = prefix.Left( KApMaxConnNameLength - i - 3 );
}
@@ -1501,7 +1515,7 @@
if ( postfix )
{
TBuf<KMaxPostfixLength> postfixString;
- if ( postfix > 9 )
+ if ( postfix >= decimalBase )
{
postfixString.Format( KFormatLargePostfix, postfix );
// TODO: AknTextUtils::LanguageSpecificNumberConversion( postfixString );
@@ -1718,7 +1732,7 @@
if ( iapRS->FindL( iSession ) )
{
- if ( iIapId )
+ if ( iCmId )
{
// This is not a new CM.
for ( TInt i = 0; i < iapRS->iRecords.Count(); ++i )
@@ -1787,7 +1801,7 @@
}
else if ( iNamingMethod == ENamingUnique )
{
- HBufC* newName = DoMakeValidNameL( aName, iIapId );
+ HBufC* newName = DoMakeValidNameL( aName, iCmId );
if ( newName )
// Name converted to unique.
@@ -1803,7 +1817,7 @@
}
else if ( iNamingMethod == ENamingNotAccept )
{
- if ( IsValidNameL( aName, iIapId ) )
+ if ( IsValidNameL( aName, iCmId ) )
{
iIapRecord->iRecordName.SetL( aName );
}
@@ -1965,7 +1979,6 @@
proxyRecord->iServerName.SetL( aProxyServer );
if ( !aProxyServer.Length() )
{
- proxyRecord->iPortNumber = 0;
proxyRecord->iUseProxyServer = EFalse;
}
else
@@ -2049,9 +2062,10 @@
if ( iIapRecord )
{
CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
- CCDRecordBase::CreateCopyRecordL( *iIapRecord ) );
+ CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) );
+ CleanupStack::PushL( iapRecord );
+ CopyRecordFieldsL( *iIapRecord, *iapRecord );
iapRecord->SetElementId( iIapRecord->ElementId() );
- CleanupStack::PushL( iapRecord );
aClientPluginInstance->iGenRecordArray.AppendL(
static_cast<CommsDat::CCDRecordBase*>( iapRecord ) );
CleanupStack::Pop( iapRecord );
@@ -2077,9 +2091,10 @@
if ( iNetworkRecord )
{
CCDNetworkRecord* networkRecord = static_cast<CCDNetworkRecord*>(
- CCDRecordBase::CreateCopyRecordL( *iNetworkRecord ) );
+ CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) );
+ CleanupStack::PushL( networkRecord );
+ CopyRecordFieldsL( *iNetworkRecord, *networkRecord );
networkRecord->SetElementId( iNetworkRecord->ElementId() );
- CleanupStack::PushL( networkRecord );
aClientPluginInstance->iGenRecordArray.AppendL(
static_cast<CommsDat::CCDRecordBase*>( networkRecord ) );
CleanupStack::Pop( networkRecord );
@@ -2092,7 +2107,7 @@
if ( iWapAPRecord )
{
CCDWAPAccessPointRecord* wapAPRecord = static_cast<CCDWAPAccessPointRecord*>(
- CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) );
+ CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) );//TODO, convert to generic copy
wapAPRecord->SetElementId( iWapAPRecord->ElementId() );
CleanupStack::PushL( wapAPRecord );
aClientPluginInstance->iGenRecordArray.AppendL(
@@ -2107,7 +2122,7 @@
if ( iWapIPBearerRecord )
{
CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast<CCDWAPIPBearerRecord*>(
- CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) );
+ CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) );//TODO, convert to generic copy
wapIPBearerRecord->SetElementId( iWapIPBearerRecord->ElementId() );
CleanupStack::PushL( wapIPBearerRecord );
aClientPluginInstance->iGenRecordArray.AppendL(
@@ -2143,9 +2158,10 @@
if ( iProxyRecord )
{
CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
- CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) );
+ CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) );
+ CleanupStack::PushL( proxyRecord );
+ CopyRecordFieldsL( *iProxyRecord, *proxyRecord );
proxyRecord->SetElementId( iProxyRecord->ElementId() );
- CleanupStack::PushL( proxyRecord );
aClientPluginInstance->iGenRecordArray.AppendL(
static_cast<CommsDat::CCDRecordBase*>( proxyRecord ) );
CleanupStack::Pop( proxyRecord );
@@ -2176,14 +2192,25 @@
case ECmIapId: // If the CM has an ECmIapId then the ECmIapId is the ECmId.
case ECmId:
{
- retVal = static_cast<CCDIAPRecord*>(
- aClientPluginInstance->iGenRecordArray[KIapRecordIndex] )->RecordId();
+ if ( iBearerType == KUidEmbeddedDestination )
+ {
+ retVal = GetBearerIntAttributeL(
+ aAttribute,
+ aClientPluginInstance->iGenRecordArray,
+ aClientPluginInstance->iBearerSpecRecordArray );
+ }
+ else
+ {
+ retVal = static_cast<CCDIAPRecord*>(
+ aClientPluginInstance->iGenRecordArray[KIapRecordIndex] )->RecordId();
+ }
}
break;
case ECmWapId:
{
retVal = static_cast<CCDWAPIPBearerRecord*>(
- aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->iWAPAccessPointId;
+ aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )
+ ->iWAPAccessPointId;
}
break;
case ECmIapServiceId:
@@ -2217,7 +2244,8 @@
if ( iMetaDataRecord )
{
retVal = static_cast<CCDIAPMetadataRecord*>(
- aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] )->iSeamlessness;
+ aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] )
+ ->iSeamlessness;
}
else
{
@@ -2239,7 +2267,8 @@
case ECmLoadResult:
{
- retVal = KErrNone;
+ // This attribute has been deprecated since Symbian^4.
+ User::Leave( KErrNotSupported ); //TODO, update attribute definition comments.
}
break;
@@ -2301,14 +2330,34 @@
{
case ECmProtected:
{
- retVal = IsProtected();
+ if ( iBearerType == KUidEmbeddedDestination )
+ {
+ retVal = GetBearerBoolAttributeL(
+ aAttribute,
+ aClientPluginInstance->iGenRecordArray,
+ aClientPluginInstance->iBearerSpecRecordArray );
+ }
+ else
+ {
+ retVal = IsProtected();
+ }
}
break;
case ECmHidden:
{
- CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
- aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
- retVal = iapRecord->Attributes() & ECDHidden;
+ if ( iBearerType == KUidEmbeddedDestination )
+ {
+ retVal = GetBearerBoolAttributeL(
+ aAttribute,
+ aClientPluginInstance->iGenRecordArray,
+ aClientPluginInstance->iBearerSpecRecordArray );
+ }
+ else
+ {
+ CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(
+ aClientPluginInstance->iGenRecordArray[KIapRecordIndex] );
+ retVal = iapRecord->Attributes() & ECDHidden;
+ }
}
break;
case ECmProxyUsageEnabled:
@@ -2317,9 +2366,12 @@
{
retVal = EFalse;
}
-
- retVal = static_cast<CCDProxiesRecord*>(
- aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->iUseProxyServer;
+ else
+ {
+ retVal = static_cast<CCDProxiesRecord*>(
+ aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )
+ ->iUseProxyServer;
+ }
}
break;
case ECmDestination:
@@ -2330,14 +2382,7 @@
aClientPluginInstance->iBearerSpecRecordArray ) );
if ( err )
{
- if ( err == KErrNotFound )
- {
- retVal = EFalse;
- }
- else
- {
- User::Leave( err );
- }
+ retVal = EFalse;
}
}
break;
@@ -2385,9 +2430,21 @@
retVal = metadataRecord->iMetadata & EMetaHiddenAgent;
}
break;
+ case ECmMetaHotSpot:
+ {
+ CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>(
+ aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] );
+ retVal = metadataRecord->iMetadata & EMetaHotSpot;
+ }
+ break;
case ECmVirtual:
{
- retVal = EFalse;
+ // This is bearer specific attribute.
+ TRAPD( err, retVal = GetBearerInfoBoolL( aAttribute ) );
+ if ( err )
+ {
+ retVal = EFalse;
+ }
}
break;
case ECmWapIPSecurity:
@@ -2430,17 +2487,15 @@
{
case ECmBearerIcon:
{
- //TODO, read icon name from metadata record after commsdat changes implemented.
- //CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>(
- // aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] );
-
- //if ( !metadataRecord )
- // {
- // User::Leave( KErrCorrupt );
- // }
-
- //retVal = TPtrC( metadataRecord->iIconFileName ).AllocL();
- retVal = KNullDesC().AllocL();//TODO, check this freed
+ CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>(
+ aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] );
+
+ if ( !metadataRecord )
+ {
+ User::Leave( KErrCorrupt );
+ }
+
+ retVal = TPtrC( metadataRecord->iIconFileName ).AllocL();
}
break;
case ECmStartPage:
@@ -2640,11 +2695,13 @@
if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )
{
CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
- CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) );
+ CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) );
CleanupStack::PushL( proxyRecord );
+ CopyRecordFieldsL( *iProxyRecord, *proxyRecord );
proxyRecord->SetElementId( iProxyRecord->ElementId() );
- aClientPluginInstance->iGenRecordArray.AppendL(
- static_cast<CommsDat::CCDRecordBase*>( proxyRecord ) );
+ aClientPluginInstance->iGenRecordArray.InsertL(
+ static_cast<CommsDat::CCDRecordBase*>( proxyRecord ),
+ KProxyRecordIndex );
CleanupStack::Pop( proxyRecord );
}
@@ -2741,11 +2798,13 @@
if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )
{
CCDProxiesRecord* proxyRecord = static_cast<CCDProxiesRecord*>(
- CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) );
+ CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) );
CleanupStack::PushL( proxyRecord );
+ CopyRecordFieldsL( *iProxyRecord, *proxyRecord );
proxyRecord->SetElementId( iProxyRecord->ElementId() );
- aClientPluginInstance->iGenRecordArray.AppendL(
- static_cast<CommsDat::CCDRecordBase*>( proxyRecord ) );
+ aClientPluginInstance->iGenRecordArray.InsertL(
+ static_cast<CommsDat::CCDRecordBase*>( proxyRecord ),
+ KProxyRecordIndex );
CleanupStack::Pop( proxyRecord );
}
@@ -2792,6 +2851,20 @@
}
}
break;
+ case ECmMetaHotSpot:
+ {
+ CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>(
+ aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] );
+ if ( aValue )
+ {
+ metadataRecord->iMetadata = EMetaHotSpot | metadataRecord->iMetadata;
+ }
+ else
+ {
+ metadataRecord->iMetadata = ~EMetaHotSpot & metadataRecord->iMetadata;
+ }
+ }
+ break;
case ECmWapIPSecurity:
{
static_cast<CCDWAPIPBearerRecord*>(
@@ -2826,15 +2899,14 @@
{
case ECmBearerIcon:
{
- //TODO, write icon name to metadata record after commsdat changes implemented.
- //CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>(
- // aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] );
-
- //if ( !metadataRecord )
- // {
- // User::Leave( KErrCorrupt );
- // }
- //metadataRecord->iIconFileName.SetL( aValue );
+ CCDIAPMetadataRecord* metadataRecord = static_cast<CCDIAPMetadataRecord*>(
+ aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] );
+
+ if ( !metadataRecord )
+ {
+ User::Leave( KErrCorrupt );
+ }
+ metadataRecord->iIconFileName.SetL( aValue );
}
break;
case ECmStartPage: