diff -r 3b0cec605979 -r c5b848e6c7d1 cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseeng.cpp --- a/cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseeng.cpp Thu May 27 14:35:19 2010 +0300 +++ b/cmmanager/cmmgr/cmmpluginbase/src/ccmpluginbaseeng.cpp Thu Jun 10 16:00:16 2010 +0300 @@ -21,7 +21,9 @@ #include #include #include - +#include + +#include "cmmserverdefs.h" #include "ccmpluginbaseengtextresolver.h" #include "OstTraceDefinitions.h" @@ -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( - CCDRecordBase::CreateCopyRecordL( *iIapRecord ) ); + CCDIAPRecord* iapRecord = static_cast( + 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( - CCDRecordBase::CreateCopyRecordL( *iNetworkRecord ) ); + CCDNetworkRecord* networkRecord = static_cast( + CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) ); + CleanupStack::PushL( networkRecord ); + CopyRecordFieldsL( *iNetworkRecord, *networkRecord ); + CleanupStack::Pop( networkRecord ); + aCopyInstance->iNetworkRecord = networkRecord; } break; case KWAPAPRecordIndex: { aCopyInstance->iWapAPRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) ); + CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) );//TODO, convert to generic copy } break; case KWAPBearerRecordIndex: { aCopyInstance->iWapIPBearerRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) ); + CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) );//TODO, convert to generic copy } break; case KMetaDataRecordIndex: @@ -529,8 +546,12 @@ { if ( iProxyRecord ) { - aCopyInstance->iProxyRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) ); + CCDProxiesRecord* proxyRecord = static_cast( + 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( + iCmId = aIapId; + + // Load IAP record. + CCDIAPRecord *iapRecord = static_cast( 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* proxieRS = new( ELeave ) CMDBRecordSet( 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( 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( 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( - 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( tempIapRecord ), KIapRecordIndex ); - CleanupStack::PopAndDestroy( iapRecord ); CleanupStack::Pop( tempIapRecord ); } else { delete iIapRecord; iIapRecord = NULL; - iIapRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *iapRecord ) ); + CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) ); + CopyRecordFieldsL( *iapRecord, *iIapRecord ); iIapRecord->SetElementId( iapRecord->ElementId() ); iIapRecord->ModifyL( iSession ); @@ -932,9 +955,9 @@ delete iProxyRecord; iProxyRecord = NULL; - iProxyRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *proxyRecord ) ); + CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); + CopyRecordFieldsL( *proxyRecord, *iProxyRecord ); iProxyRecord->SetElementId( proxyRecord->ElementId() ); if ( !iProxyRecord->RecordId() ) @@ -1051,7 +1074,8 @@ CheckIfNameModifiedL( iapRecord, networkRecord ); iNetworkRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *networkRecord ) ); + CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) ); + CopyRecordFieldsL( *networkRecord, *iNetworkRecord ); iNetworkRecord->SetElementId( networkRecord->ElementId() ); @@ -1105,7 +1129,7 @@ if ( !iProxyRecord ) { - iProxyRecord = static_cast( + iProxyRecord = static_cast( CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); } @@ -1215,11 +1239,11 @@ CheckIfNameModifiedL( iapRecord, wapIPBearerRecord ); iWapAPRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *wapAPRecord ) ); + CCDRecordBase::CreateCopyRecordL( *wapAPRecord ) );//TODO, convert to generic copy iWapAPRecord->SetElementId( wapAPRecord->ElementId() ); iWapIPBearerRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *wapIPBearerRecord ) ); + CCDRecordBase::CreateCopyRecordL( *wapIPBearerRecord ) );//TODO, convert to generic copy iWapIPBearerRecord->SetElementId( wapIPBearerRecord->ElementId() ); if ( !iWapAPRecord->RecordId() ) @@ -1337,7 +1361,7 @@ { OstTraceFunctionEntry0( CCMPLUGINBASEENG_COPYATTRIBUTES_ENTRY ); - if ( aSrcRecord == NULL || aDstRecord == NULL ) + if ( !aSrcRecord || !aDstRecord ) { OstTraceFunctionExit0( CCMPLUGINBASEENG_COPYATTRIBUTES_EXIT ); return; @@ -1367,7 +1391,7 @@ CleanupStack::PushL( wapBearerRecord ); - wapBearerRecord->iWAPIAP = iIapId; + wapBearerRecord->iWAPIAP = iCmId; wapRS->iRecords.AppendL( wapBearerRecord ); CleanupStack::Pop( wapBearerRecord ); @@ -1440,6 +1464,7 @@ { OstTraceFunctionEntry0( CCMPLUGINBASEENG_DOMAKEVALIDNAMEL_ENTRY ); + const TInt decimalBase = 10; TBool changed( EFalse ); HBufC* temp = HBufC::NewLC( KApMaxConnNameLength ); HBufC* temp2 = HBufC::NewLC( KApMaxConnNameLength ); @@ -1464,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; } @@ -1474,7 +1499,7 @@ TPtr sgdptr2( temp2->Des() ); if ( postfix ) { - if ( postfix < 10 ) + if ( postfix < decimalBase ) { sgdptr2 = prefix.Left( KApMaxConnNameLength - i - 3 ); } @@ -1490,7 +1515,7 @@ if ( postfix ) { TBuf postfixString; - if ( postfix > 9 ) + if ( postfix >= decimalBase ) { postfixString.Format( KFormatLargePostfix, postfix ); // TODO: AknTextUtils::LanguageSpecificNumberConversion( postfixString ); @@ -1707,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 ) @@ -1776,7 +1801,7 @@ } else if ( iNamingMethod == ENamingUnique ) { - HBufC* newName = DoMakeValidNameL( aName, iIapId ); + HBufC* newName = DoMakeValidNameL( aName, iCmId ); if ( newName ) // Name converted to unique. @@ -1792,7 +1817,7 @@ } else if ( iNamingMethod == ENamingNotAccept ) { - if ( IsValidNameL( aName, iIapId ) ) + if ( IsValidNameL( aName, iCmId ) ) { iIapRecord->iRecordName.SetL( aName ); } @@ -2037,9 +2062,10 @@ if ( iIapRecord ) { CCDIAPRecord* iapRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *iIapRecord ) ); + CCDRecordBase::RecordFactoryL( KCDTIdIAPRecord ) ); + CleanupStack::PushL( iapRecord ); + CopyRecordFieldsL( *iIapRecord, *iapRecord ); iapRecord->SetElementId( iIapRecord->ElementId() ); - CleanupStack::PushL( iapRecord ); aClientPluginInstance->iGenRecordArray.AppendL( static_cast( iapRecord ) ); CleanupStack::Pop( iapRecord ); @@ -2065,9 +2091,10 @@ if ( iNetworkRecord ) { CCDNetworkRecord* networkRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *iNetworkRecord ) ); + CCDRecordBase::RecordFactoryL( KCDTIdNetworkRecord ) ); + CleanupStack::PushL( networkRecord ); + CopyRecordFieldsL( *iNetworkRecord, *networkRecord ); networkRecord->SetElementId( iNetworkRecord->ElementId() ); - CleanupStack::PushL( networkRecord ); aClientPluginInstance->iGenRecordArray.AppendL( static_cast( networkRecord ) ); CleanupStack::Pop( networkRecord ); @@ -2080,7 +2107,7 @@ if ( iWapAPRecord ) { CCDWAPAccessPointRecord* wapAPRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) ); + CCDRecordBase::CreateCopyRecordL( *iWapAPRecord ) );//TODO, convert to generic copy wapAPRecord->SetElementId( iWapAPRecord->ElementId() ); CleanupStack::PushL( wapAPRecord ); aClientPluginInstance->iGenRecordArray.AppendL( @@ -2095,7 +2122,7 @@ if ( iWapIPBearerRecord ) { CCDWAPIPBearerRecord* wapIPBearerRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) ); + CCDRecordBase::CreateCopyRecordL( *iWapIPBearerRecord ) );//TODO, convert to generic copy wapIPBearerRecord->SetElementId( iWapIPBearerRecord->ElementId() ); CleanupStack::PushL( wapIPBearerRecord ); aClientPluginInstance->iGenRecordArray.AppendL( @@ -2131,9 +2158,10 @@ if ( iProxyRecord ) { CCDProxiesRecord* proxyRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) ); + CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); + CleanupStack::PushL( proxyRecord ); + CopyRecordFieldsL( *iProxyRecord, *proxyRecord ); proxyRecord->SetElementId( iProxyRecord->ElementId() ); - CleanupStack::PushL( proxyRecord ); aClientPluginInstance->iGenRecordArray.AppendL( static_cast( proxyRecord ) ); CleanupStack::Pop( proxyRecord ); @@ -2164,14 +2192,25 @@ case ECmIapId: // If the CM has an ECmIapId then the ECmIapId is the ECmId. case ECmId: { - retVal = static_cast( - aClientPluginInstance->iGenRecordArray[KIapRecordIndex] )->RecordId(); + if ( iBearerType == KUidEmbeddedDestination ) + { + retVal = GetBearerIntAttributeL( + aAttribute, + aClientPluginInstance->iGenRecordArray, + aClientPluginInstance->iBearerSpecRecordArray ); + } + else + { + retVal = static_cast( + aClientPluginInstance->iGenRecordArray[KIapRecordIndex] )->RecordId(); + } } break; case ECmWapId: { retVal = static_cast( - aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] )->iWAPAccessPointId; + aClientPluginInstance->iGenRecordArray[KWAPBearerRecordIndex] ) + ->iWAPAccessPointId; } break; case ECmIapServiceId: @@ -2205,7 +2244,8 @@ if ( iMetaDataRecord ) { retVal = static_cast( - aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] )->iSeamlessness; + aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ) + ->iSeamlessness; } else { @@ -2227,7 +2267,8 @@ case ECmLoadResult: { - retVal = KErrNone; + // This attribute has been deprecated since Symbian^4. + User::Leave( KErrNotSupported ); //TODO, update attribute definition comments. } break; @@ -2289,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( - aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); - retVal = iapRecord->Attributes() & ECDHidden; + if ( iBearerType == KUidEmbeddedDestination ) + { + retVal = GetBearerBoolAttributeL( + aAttribute, + aClientPluginInstance->iGenRecordArray, + aClientPluginInstance->iBearerSpecRecordArray ); + } + else + { + CCDIAPRecord* iapRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KIapRecordIndex] ); + retVal = iapRecord->Attributes() & ECDHidden; + } } break; case ECmProxyUsageEnabled: @@ -2305,9 +2366,12 @@ { retVal = EFalse; } - - retVal = static_cast( - aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] )->iUseProxyServer; + else + { + retVal = static_cast( + aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ) + ->iUseProxyServer; + } } break; case ECmDestination: @@ -2366,9 +2430,16 @@ retVal = metadataRecord->iMetadata & EMetaHiddenAgent; } break; + case ECmMetaHotSpot: + { + CCDIAPMetadataRecord* metadataRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); + retVal = metadataRecord->iMetadata & EMetaHotSpot; + } + break; case ECmVirtual: { - // This is bearer specific attribute + // This is bearer specific attribute. TRAPD( err, retVal = GetBearerInfoBoolL( aAttribute ) ); if ( err ) { @@ -2416,17 +2487,15 @@ { case ECmBearerIcon: { - //TODO, read icon name from metadata record after commsdat changes implemented. - //CCDIAPMetadataRecord* metadataRecord = static_cast( - // aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); - - //if ( !metadataRecord ) - // { - // User::Leave( KErrCorrupt ); - // } - - //retVal = TPtrC( metadataRecord->iIconFileName ).AllocL(); - retVal = KNullDesC().AllocL();//TODO, check this freed + CCDIAPMetadataRecord* metadataRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); + + if ( !metadataRecord ) + { + User::Leave( KErrCorrupt ); + } + + retVal = TPtrC( metadataRecord->iIconFileName ).AllocL(); } break; case ECmStartPage: @@ -2626,11 +2695,13 @@ if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ) { CCDProxiesRecord* proxyRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) ); + CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); CleanupStack::PushL( proxyRecord ); + CopyRecordFieldsL( *iProxyRecord, *proxyRecord ); proxyRecord->SetElementId( iProxyRecord->ElementId() ); - aClientPluginInstance->iGenRecordArray.AppendL( - static_cast( proxyRecord ) ); + aClientPluginInstance->iGenRecordArray.InsertL( + static_cast( proxyRecord ), + KProxyRecordIndex ); CleanupStack::Pop( proxyRecord ); } @@ -2727,11 +2798,13 @@ if ( !aClientPluginInstance->iGenRecordArray[KProxyRecordIndex] ) { CCDProxiesRecord* proxyRecord = static_cast( - CCDRecordBase::CreateCopyRecordL( *iProxyRecord ) ); + CCDRecordBase::RecordFactoryL( KCDTIdProxiesRecord ) ); CleanupStack::PushL( proxyRecord ); + CopyRecordFieldsL( *iProxyRecord, *proxyRecord ); proxyRecord->SetElementId( iProxyRecord->ElementId() ); - aClientPluginInstance->iGenRecordArray.AppendL( - static_cast( proxyRecord ) ); + aClientPluginInstance->iGenRecordArray.InsertL( + static_cast( proxyRecord ), + KProxyRecordIndex ); CleanupStack::Pop( proxyRecord ); } @@ -2778,6 +2851,20 @@ } } break; + case ECmMetaHotSpot: + { + CCDIAPMetadataRecord* metadataRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); + if ( aValue ) + { + metadataRecord->iMetadata = EMetaHotSpot | metadataRecord->iMetadata; + } + else + { + metadataRecord->iMetadata = ~EMetaHotSpot & metadataRecord->iMetadata; + } + } + break; case ECmWapIPSecurity: { static_cast( @@ -2812,15 +2899,14 @@ { case ECmBearerIcon: { - //TODO, write icon name to metadata record after commsdat changes implemented. - //CCDIAPMetadataRecord* metadataRecord = static_cast( - // aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); - - //if ( !metadataRecord ) - // { - // User::Leave( KErrCorrupt ); - // } - //metadataRecord->iIconFileName.SetL( aValue ); + CCDIAPMetadataRecord* metadataRecord = static_cast( + aClientPluginInstance->iGenRecordArray[KMetaDataRecordIndex] ); + + if ( !metadataRecord ) + { + User::Leave( KErrCorrupt ); + } + metadataRecord->iIconFileName.SetL( aValue ); } break; case ECmStartPage: