ccservices/cmsservices/cmsengine/Server/src/cmsserverutils.cpp
changeset 0 e686773b3f54
child 21 9da50d567e3c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ccservices/cmsservices/cmsengine/Server/src/cmsserverutils.cpp	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,497 @@
+/*
+* Copyright (c) 2005 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: 
+*       
+*
+*/
+
+
+// INCLUDE FILES
+#include <VPbkEng.rsg>
+#include <spproperty.h>
+#include <spsettings.h>
+#include <spentry.h>
+#include "cmsserver.h"
+#include "cmsserverutils.h"
+#include "cmsdebug.h"
+
+// ----------------------------------------------------------
+// CCmsSession::ReadMsgParamLC
+// 
+// ----------------------------------------------------------
+//
+HBufC* CmsServerUtils::ReadMsgParam16LC( TInt aMsgIndex, const RMessage2& aMessage )
+    {
+    
+    PRINT( _L( "Start CmsServerUtils::ReadMsgParam16LC()" ) );
+    
+    TInt length = aMessage.GetDesLength( aMsgIndex );
+    HBufC* buffer = HBufC::NewLC( length );
+    TPtr descriptor( buffer->Des() );
+    aMessage.ReadL( aMsgIndex, descriptor );
+    PRINT( _L( "End CmsServerUtils::ReadMsgParam16LC()" ) );
+    return buffer;
+    }
+
+// ----------------------------------------------------------
+// CmsServerUtils::ReadMsgParam8LC
+// 
+// ----------------------------------------------------------
+//
+HBufC8* CmsServerUtils::ReadMsgParam8LC( TInt aMsgIndex, const RMessage2& aMessage )
+    {
+    PRINT( _L( "'Start CmsServerUtils::ReadMsgParam8LC()" ) );
+    TInt length = aMessage.GetDesLength( aMsgIndex );
+    HBufC8* buffer = HBufC8::NewLC( length );
+    TPtr8 descriptor( buffer->Des() );
+    aMessage.ReadL( aMsgIndex, descriptor );
+    return buffer;
+    }
+
+// ----------------------------------------------------------
+// CmsServerUtils::ConvertDesc
+// 
+// ----------------------------------------------------------
+//
+TInt CmsServerUtils::ConvertDesc( const TDesC8& aNumberDesc )
+    {
+    TInt ret = 0;
+    TLex8 lex( aNumberDesc );
+    TInt error = lex.Val( ret );
+    return error == KErrNone ? ret : error;
+    }
+
+// ---------------------------------------------------------
+// CmsServerUtils::DescriptorCast
+//
+// ---------------------------------------------------------
+//
+TPtr8 CmsServerUtils::DescriptorCast( const TDesC8& aConstData )
+	{
+    TInt length = aConstData.Length();
+    TPtr8 constCast( CONST_CAST( TUint8*, aConstData.Ptr() ), length, length );
+    constCast.TrimAll();
+    return constCast;
+	}
+
+// ---------------------------------------------------------
+// CmsServerUtils::ConvertDescL
+//
+// ---------------------------------------------------------
+//
+HBufC8* CmsServerUtils::ConvertDescLC( const TDesC& a16bitDescriptor )
+    {
+    HBufC8* eightBit = HBufC8::NewLC( a16bitDescriptor.Length() );
+    eightBit->Des().Copy( a16bitDescriptor );
+    return eightBit;
+    }
+
+// ---------------------------------------------------------
+// CmsServerUtils::ConvertDescL
+//
+// ---------------------------------------------------------
+//
+HBufC* CmsServerUtils::ConvertDescLC( const TDesC8& a8bitDescriptor )
+    {
+    HBufC* sixteen = HBufC::NewLC( a8bitDescriptor.Length() );
+    sixteen->Des().Copy( a8bitDescriptor );
+    return sixteen;
+    }
+
+// ----------------------------------------------------
+// CmsServerUtils::IsVoIPSupported
+// 
+// ----------------------------------------------------
+// 
+TBool CmsServerUtils::IsVoIPSupportedL()
+    {
+    TBool supported( EFalse );
+    RIdArray idArray;
+    CleanupClosePushL(idArray);
+    CSPSettings* settings = CSPSettings::NewLC();
+    
+    User::LeaveIfError( settings->FindServiceIdsL(idArray) );
+    for (TInt i = 0; !supported && i < idArray.Count(); ++i)
+        {
+        CSPEntry* entry = CSPEntry::NewLC();
+        TServiceId id = idArray[i];
+        User::LeaveIfError( settings->FindEntryL(id, *entry) );
+        const CSPProperty* property = NULL;
+        if (entry->GetProperty(property, ESubPropertyVoIPSettingsId) == KErrNone)
+            {
+            supported = ETrue;
+            }
+
+        if (entry->GetProperty(property, EPropertyServiceAttributeMask) == KErrNone)
+            {
+            TInt value = 0;
+            property->GetValue(value);
+            supported = value & ESupportsInternetCall; 
+            }
+
+        CleanupStack::PopAndDestroy(); // entry
+        }
+    CleanupStack::PopAndDestroy(2); // settings, idArray
+    return supported;
+    }
+
+// ----------------------------------------------------
+// CCmsServerAsyncContact::IsImCapableL
+// 
+// ----------------------------------------------------
+//
+TBool CmsServerUtils::IsFeatureSupportedL( TInt aFeature, const TDesC& aScheme )
+    {
+    RIdArray ids;
+    CleanupClosePushL( ids );
+    TBool isImCapable = EFalse;
+    CSPSettings* settings = CSPSettings::NewL();
+    CleanupStack::PushL( settings );
+    CDesCArrayFlat* nameArray = new ( ELeave ) CDesCArrayFlat( 2 );
+    CleanupStack::PushL( nameArray );    
+    TInt error = settings->FindServiceIdsL( ids );  
+    User::LeaveIfError( error );     
+    error = settings->FindServiceNamesL( ids, *nameArray );  
+    User::LeaveIfError( error );
+    TBool ready = EFalse;   
+    const TInt count = nameArray->MdcaCount();
+    for( TInt i = 0; !ready && i < count; i++)
+        {
+        TPtrC desc = nameArray->MdcaPoint( i );
+        if( desc.CompareF( aScheme ) == 0 )
+            {
+            CSPProperty* property = CSPProperty::NewLC();
+            TServicePropertyName feature = ( TServicePropertyName )aFeature; 
+            error = settings->FindPropertyL( ids[i], feature, *property );
+            if( KErrNone == error )
+                {
+                isImCapable = ETrue;
+                ready = ETrue;
+                }
+            CleanupStack::PopAndDestroy();  //property
+            }
+        }
+    CleanupStack::PopAndDestroy( 3 );  //nameArray, settings, ids
+    return isImCapable;
+    }
+
+// ----------------------------------------------------------
+// CmsServerUtils::MatchFieldType
+// 
+// ----------------------------------------------------------
+//
+TInt CmsServerUtils::MatchFieldType( CCmsContactFieldItem::TCmsContactField aCmsFieldType )
+    {
+    PRINT1( _L( "CmsServerUtils::MatchFieldType( enum ) - Field: %d" ), aCmsFieldType );
+   
+    switch( aCmsFieldType )
+        {
+        case CCmsContactFieldItem::ECmsLastName:
+            return R_VPBK_FIELD_TYPE_LASTNAME;
+        case CCmsContactFieldItem::ECmsMiddleName:
+            return R_VPBK_FIELD_TYPE_MIDDLENAME;
+        case CCmsContactFieldItem::ECmsFirstName:
+            return R_VPBK_FIELD_TYPE_FIRSTNAME;
+        case CCmsContactFieldItem::ECmsLandPhoneGeneric:
+            return R_VPBK_FIELD_TYPE_LANDPHONEGEN;
+        case CCmsContactFieldItem::ECmsLandPhoneHome:
+            return R_VPBK_FIELD_TYPE_LANDPHONEHOME;
+        case CCmsContactFieldItem::ECmsMobilePhoneHome:
+            return R_VPBK_FIELD_TYPE_MOBILEPHONEHOME;
+        case CCmsContactFieldItem::ECmsFaxNumberHome:
+            return R_VPBK_FIELD_TYPE_FAXNUMBERHOME;
+        case CCmsContactFieldItem::ECmsVideoNumberHome:
+            return R_VPBK_FIELD_TYPE_VIDEONUMBERHOME;
+        case CCmsContactFieldItem::ECmsAddrLabelGeneric:
+            return R_VPBK_FIELD_TYPE_ADDRLABELGEN;
+        case CCmsContactFieldItem::ECmsAddrPOGeneric:
+            return R_VPBK_FIELD_TYPE_ADDRPOGEN;
+        case CCmsContactFieldItem::ECmsAddrExtGeneric:
+            return R_VPBK_FIELD_TYPE_ADDREXTGEN;
+        case CCmsContactFieldItem::ECmsAddrStreetGeneric:
+            return R_VPBK_FIELD_TYPE_ADDRSTREETGEN;
+        case CCmsContactFieldItem::ECmsAddrLocalGeneric:
+            return R_VPBK_FIELD_TYPE_ADDRLOCALGEN;
+        case CCmsContactFieldItem::ECmsAddrRegionGeneric:
+            return R_VPBK_FIELD_TYPE_ADDRREGIONGEN;
+        case CCmsContactFieldItem::ECmsAddrPostcodeGeneric:
+            return R_VPBK_FIELD_TYPE_ADDRPOSTCODEGEN;
+        case CCmsContactFieldItem::ECmsAddrCountryGeneric:
+            return R_VPBK_FIELD_TYPE_ADDRCOUNTRYGEN;        
+        case CCmsContactFieldItem::ECmsAddrLabelHome:
+            return R_VPBK_FIELD_TYPE_ADDRLABELHOME;
+        case CCmsContactFieldItem::ECmsAddrPOHome:
+            return R_VPBK_FIELD_TYPE_ADDRPOHOME;
+        case CCmsContactFieldItem::ECmsAddrExtHome:
+            return R_VPBK_FIELD_TYPE_ADDREXTHOME;
+        case CCmsContactFieldItem::ECmsAddrStreetHome:
+            return R_VPBK_FIELD_TYPE_ADDRSTREETHOME;
+        case CCmsContactFieldItem::ECmsAddrLocalHome:
+           return R_VPBK_FIELD_TYPE_ADDRLOCALHOME;
+        case CCmsContactFieldItem::ECmsAddrRegionHome:
+            return R_VPBK_FIELD_TYPE_ADDRREGIONHOME;
+        case CCmsContactFieldItem::ECmsAddrPostcodeHome:
+            return R_VPBK_FIELD_TYPE_ADDRPOSTCODEHOME;
+        case CCmsContactFieldItem::ECmsAddrCountryHome:
+            return R_VPBK_FIELD_TYPE_ADDRCOUNTRYHOME;
+            
+        case CCmsContactFieldItem::ECmsAddrLabelWork:
+            return R_VPBK_FIELD_TYPE_ADDRLABELWORK;
+        case CCmsContactFieldItem::ECmsAddrPOWork:
+            return R_VPBK_FIELD_TYPE_ADDRPOWORK;
+        case CCmsContactFieldItem::ECmsAddrExtWork:
+            return R_VPBK_FIELD_TYPE_ADDREXTWORK;
+        case CCmsContactFieldItem::ECmsAddrStreetWork:
+            return R_VPBK_FIELD_TYPE_ADDRSTREETWORK;
+        case CCmsContactFieldItem::ECmsAddrLocalWork:
+           return R_VPBK_FIELD_TYPE_ADDRLOCALWORK;
+        case CCmsContactFieldItem::ECmsAddrRegionWork:
+            return R_VPBK_FIELD_TYPE_ADDRREGIONWORK;
+        case CCmsContactFieldItem::ECmsAddrPostcodeWork:
+            return R_VPBK_FIELD_TYPE_ADDRPOSTCODEWORK;
+        case CCmsContactFieldItem::ECmsAddrCountryWork:
+            return R_VPBK_FIELD_TYPE_ADDRCOUNTRYWORK;
+            
+        case CCmsContactFieldItem::ECmsVoipNumberHome:
+            return R_VPBK_FIELD_TYPE_VOIPHOME;
+        case CCmsContactFieldItem::ECmsEmailHome:
+            return R_VPBK_FIELD_TYPE_EMAILHOME;
+        case CCmsContactFieldItem::ECmsLandPhoneWork:
+            return R_VPBK_FIELD_TYPE_LANDPHONEWORK;
+        case CCmsContactFieldItem::ECmsEmailGeneric:
+            return R_VPBK_FIELD_TYPE_EMAILGEN;
+        case CCmsContactFieldItem::ECmsMobilePhoneGeneric:
+            return R_VPBK_FIELD_TYPE_MOBILEPHONEGEN;
+        case CCmsContactFieldItem::ECmsMobilePhoneWork:
+            return R_VPBK_FIELD_TYPE_MOBILEPHONEWORK;
+        case CCmsContactFieldItem::ECmsVideoNumberWork:
+            return R_VPBK_FIELD_TYPE_VIDEONUMBERWORK;
+        case CCmsContactFieldItem::ECmsVideoNumberGeneric:
+            return R_VPBK_FIELD_TYPE_VIDEONUMBERGEN;  
+        case CCmsContactFieldItem::ECmsFaxNumberWork:
+            return R_VPBK_FIELD_TYPE_FAXNUMBERWORK;
+        case CCmsContactFieldItem::ECmsVoipNumberWork:
+            return R_VPBK_FIELD_TYPE_VOIPWORK;
+        case CCmsContactFieldItem::ECmsVoipNumberGeneric:
+            return R_VPBK_FIELD_TYPE_VOIPGEN;
+        case CCmsContactFieldItem::ECmsEmailWork:
+            return R_VPBK_FIELD_TYPE_EMAILWORK;
+        case CCmsContactFieldItem::ECmsSipAddress:
+            return R_VPBK_FIELD_TYPE_SIP;
+        case CCmsContactFieldItem::ECmsThumbnailPic:
+            return R_VPBK_FIELD_TYPE_THUMBNAILPIC;
+        case CCmsContactFieldItem::ECmsImpp:       
+            return R_VPBK_FIELD_TYPE_IMPP;    
+        case CCmsContactFieldItem::ECmsFullName:
+            return aCmsFieldType; //do not change anything
+        case CCmsContactFieldItem::ECmsUrlWork:
+            return R_VPBK_FIELD_TYPE_URLWORK;
+        case CCmsContactFieldItem::ECmsUrlHome:
+            return R_VPBK_FIELD_TYPE_URLHOME;
+        case CCmsContactFieldItem::ECmsUrlGeneric:
+            return R_VPBK_FIELD_TYPE_URLGEN;
+        case CCmsContactFieldItem::ECmsNote:
+            return R_VPBK_FIELD_TYPE_NOTE;
+        case CCmsContactFieldItem::ECmsNickname:
+            return R_VPBK_FIELD_TYPE_SECONDNAME;    //TODO!!
+        case CCmsContactFieldItem::ECmsJobTitle:
+            return R_VPBK_FIELD_TYPE_JOBTITLE;
+        case CCmsContactFieldItem::ECmsCompanyName:
+            return R_VPBK_FIELD_TYPE_COMPANYNAME;
+        case CCmsContactFieldItem::ECmsDepartment:
+            return R_VPBK_FIELD_TYPE_DEPARTMENT;
+        case CCmsContactFieldItem::ECmsBirthday:
+            return KErrNotFound;    //TODO!!
+        case CCmsContactFieldItem::ECmsAnniversary:
+            return R_VPBK_FIELD_TYPE_ANNIVERSARY;
+        case CCmsContactFieldItem::ECmsAssistantNumber:
+            return R_VPBK_FIELD_TYPE_ASSTPHONE;
+        case CCmsContactFieldItem::ECmsPagerNumber:
+            return R_VPBK_FIELD_TYPE_PAGERNUMBER;
+        case CCmsContactFieldItem::ECmsCarPhone:
+            return R_VPBK_FIELD_TYPE_CARPHONE;
+        case CCmsContactFieldItem::ECmsPushToTalk:
+            return R_VPBK_FIELD_TYPE_POC;
+        case CCmsContactFieldItem::ECmsShareView:
+            return R_VPBK_FIELD_TYPE_SWIS;
+        case CCmsContactFieldItem::ECmsAddrGeoGeneric:
+            return R_VPBK_FIELD_TYPE_GEOGEN;
+        case CCmsContactFieldItem::ECmsAddrGeoHome:
+            return R_VPBK_FIELD_TYPE_GEOHOME;
+        case CCmsContactFieldItem::ECmsAddrGeoWork:
+            return R_VPBK_FIELD_TYPE_GEOWORK;
+        case CCmsContactFieldItem::ECmsImageName:
+            return R_VPBK_FIELD_TYPE_CALLEROBJIMG;
+        default:
+            return KErrNotFound; 
+        }
+    }
+
+// ----------------------------------------------------------
+// CmsServerUtils::MatchFieldType
+// 
+// ----------------------------------------------------------
+//
+CCmsContactFieldItem::TCmsContactField CmsServerUtils::MatchFieldType( TInt aPhonebookResId )
+    {
+    PRINT1( _L( "CmsServerUtils::MatchFieldType( ResID ) - Field: %d" ), aPhonebookResId );
+    
+    switch( aPhonebookResId )
+        {
+        case R_VPBK_FIELD_TYPE_LASTNAME:
+            return CCmsContactFieldItem::ECmsLastName;
+        case R_VPBK_FIELD_TYPE_MIDDLENAME:
+            return CCmsContactFieldItem::ECmsMiddleName;
+        case R_VPBK_FIELD_TYPE_FIRSTNAME:
+            return CCmsContactFieldItem::ECmsFirstName;
+        case R_VPBK_FIELD_TYPE_LANDPHONEGEN:
+            return CCmsContactFieldItem::ECmsLandPhoneGeneric;
+        case R_VPBK_FIELD_TYPE_LANDPHONEHOME:
+            return CCmsContactFieldItem::ECmsLandPhoneHome;
+        case R_VPBK_FIELD_TYPE_MOBILEPHONEHOME:
+            return CCmsContactFieldItem::ECmsMobilePhoneHome;
+        case R_VPBK_FIELD_TYPE_ADDRLABELGEN:
+            return CCmsContactFieldItem::ECmsAddrLabelGeneric;
+        case R_VPBK_FIELD_TYPE_ADDRPOGEN:
+            return CCmsContactFieldItem::ECmsAddrPOGeneric;
+        case R_VPBK_FIELD_TYPE_ADDREXTGEN:
+            return CCmsContactFieldItem::ECmsAddrExtGeneric;
+        case R_VPBK_FIELD_TYPE_ADDRSTREETGEN:
+            return CCmsContactFieldItem::ECmsAddrStreetGeneric;
+        case R_VPBK_FIELD_TYPE_ADDRLOCALGEN:
+            return CCmsContactFieldItem::ECmsAddrLocalGeneric;
+        case R_VPBK_FIELD_TYPE_ADDRREGIONGEN:
+            return CCmsContactFieldItem::ECmsAddrRegionGeneric;
+        case R_VPBK_FIELD_TYPE_ADDRPOSTCODEGEN:
+            return CCmsContactFieldItem::ECmsAddrPostcodeGeneric;
+        case R_VPBK_FIELD_TYPE_ADDRCOUNTRYGEN:
+            return CCmsContactFieldItem::ECmsAddrCountryGeneric;
+        case R_VPBK_FIELD_TYPE_ADDRLABELHOME:
+            return CCmsContactFieldItem::ECmsAddrLabelHome;
+        case R_VPBK_FIELD_TYPE_ADDRPOHOME:
+            return CCmsContactFieldItem::ECmsAddrPOHome;
+        case R_VPBK_FIELD_TYPE_ADDREXTHOME:
+            return CCmsContactFieldItem::ECmsAddrExtHome;
+        case R_VPBK_FIELD_TYPE_ADDRSTREETHOME:
+            return CCmsContactFieldItem::ECmsAddrStreetHome; 
+        case R_VPBK_FIELD_TYPE_ADDRLOCALHOME:
+           return CCmsContactFieldItem::ECmsAddrLocalHome; 
+        case R_VPBK_FIELD_TYPE_ADDRREGIONHOME:
+            return CCmsContactFieldItem::ECmsAddrRegionHome;
+        case R_VPBK_FIELD_TYPE_ADDRPOSTCODEHOME:
+            return CCmsContactFieldItem::ECmsAddrPostcodeHome;
+        case R_VPBK_FIELD_TYPE_ADDRCOUNTRYHOME:
+            return CCmsContactFieldItem::ECmsAddrCountryHome;
+            
+        case R_VPBK_FIELD_TYPE_ADDRLABELWORK:
+            return CCmsContactFieldItem::ECmsAddrLabelWork;
+        case R_VPBK_FIELD_TYPE_ADDRPOWORK:
+            return CCmsContactFieldItem::ECmsAddrPOWork;
+        case R_VPBK_FIELD_TYPE_ADDREXTWORK:
+            return CCmsContactFieldItem::ECmsAddrExtWork;
+        case R_VPBK_FIELD_TYPE_ADDRSTREETWORK:
+            return CCmsContactFieldItem::ECmsAddrStreetWork; 
+        case R_VPBK_FIELD_TYPE_ADDRLOCALWORK:
+           return CCmsContactFieldItem::ECmsAddrLocalWork; 
+        case R_VPBK_FIELD_TYPE_ADDRREGIONWORK:
+            return CCmsContactFieldItem::ECmsAddrRegionWork;
+        case R_VPBK_FIELD_TYPE_ADDRPOSTCODEWORK:
+            return CCmsContactFieldItem::ECmsAddrPostcodeWork;
+        case R_VPBK_FIELD_TYPE_ADDRCOUNTRYWORK:
+            return CCmsContactFieldItem::ECmsAddrCountryWork;
+            
+        case R_VPBK_FIELD_TYPE_FAXNUMBERHOME:
+            return CCmsContactFieldItem::ECmsFaxNumberHome;
+        case R_VPBK_FIELD_TYPE_VIDEONUMBERHOME:
+            return CCmsContactFieldItem::ECmsVideoNumberHome;
+        case R_VPBK_FIELD_TYPE_VOIPHOME:
+            return CCmsContactFieldItem::ECmsVoipNumberHome;
+        case R_VPBK_FIELD_TYPE_EMAILHOME:
+            return CCmsContactFieldItem::ECmsEmailHome;
+        case R_VPBK_FIELD_TYPE_LANDPHONEWORK:
+            return CCmsContactFieldItem::ECmsLandPhoneWork;
+        case R_VPBK_FIELD_TYPE_MOBILEPHONEWORK:
+            return CCmsContactFieldItem::ECmsMobilePhoneWork;
+        case R_VPBK_FIELD_TYPE_VIDEONUMBERWORK:
+            return CCmsContactFieldItem::ECmsVideoNumberWork;
+        case R_VPBK_FIELD_TYPE_FAXNUMBERWORK:
+            return CCmsContactFieldItem::ECmsFaxNumberWork;
+        case R_VPBK_FIELD_TYPE_VOIPWORK:
+            return CCmsContactFieldItem::ECmsVoipNumberWork;
+        case R_VPBK_FIELD_TYPE_EMAILWORK:
+            return CCmsContactFieldItem::ECmsEmailWork;
+        case R_VPBK_FIELD_TYPE_MOBILEPHONEGEN:
+            return CCmsContactFieldItem::ECmsMobilePhoneGeneric;
+        case R_VPBK_FIELD_TYPE_VOIPGEN:
+            return CCmsContactFieldItem::ECmsVoipNumberGeneric;
+        case R_VPBK_FIELD_TYPE_VIDEONUMBERGEN:
+            return CCmsContactFieldItem::ECmsVideoNumberGeneric;
+        case R_VPBK_FIELD_TYPE_EMAILGEN:
+            return CCmsContactFieldItem::ECmsEmailGeneric;
+        case R_VPBK_FIELD_TYPE_SIP:
+            return CCmsContactFieldItem::ECmsSipAddress;
+        case R_VPBK_FIELD_TYPE_THUMBNAILPIC:
+            return CCmsContactFieldItem::ECmsThumbnailPic;
+        case R_VPBK_FIELD_TYPE_URLGEN:
+            return CCmsContactFieldItem::ECmsUrlGeneric;
+        case R_VPBK_FIELD_TYPE_URLHOME:
+            return CCmsContactFieldItem::ECmsUrlHome;
+        case R_VPBK_FIELD_TYPE_URLWORK:
+            return CCmsContactFieldItem::ECmsUrlWork;
+        case R_VPBK_FIELD_TYPE_IMPP:        
+            return CCmsContactFieldItem::ECmsImpp;
+        case R_VPBK_FIELD_TYPE_NOTE:
+            return CCmsContactFieldItem::ECmsNote;
+        case R_VPBK_FIELD_TYPE_SECONDNAME:
+            return CCmsContactFieldItem::ECmsNickname;    //TODO!!
+        case R_VPBK_FIELD_TYPE_JOBTITLE:
+            return CCmsContactFieldItem::ECmsJobTitle;
+        case R_VPBK_FIELD_TYPE_COMPANYNAME:
+            return CCmsContactFieldItem::ECmsCompanyName;
+        case R_VPBK_FIELD_TYPE_DEPARTMENT:
+            return CCmsContactFieldItem::ECmsDepartment;
+        //case CCmsContactFieldItem::ECmsBirthday:
+        //    return KErrNotFound;    //TODO!!
+        case R_VPBK_FIELD_TYPE_ANNIVERSARY:
+            return CCmsContactFieldItem::ECmsAnniversary;
+        case R_VPBK_FIELD_TYPE_ASSTPHONE:
+            return CCmsContactFieldItem::ECmsAssistantNumber;
+        case R_VPBK_FIELD_TYPE_PAGERNUMBER:
+            return CCmsContactFieldItem::ECmsPagerNumber;
+        case R_VPBK_FIELD_TYPE_CARPHONE:
+            return CCmsContactFieldItem::ECmsCarPhone;
+        case R_VPBK_FIELD_TYPE_POC:
+            return CCmsContactFieldItem::ECmsPushToTalk;
+        case R_VPBK_FIELD_TYPE_SWIS:
+            return CCmsContactFieldItem::ECmsShareView;
+        case R_VPBK_FIELD_TYPE_GEOGEN:
+            return CCmsContactFieldItem::ECmsAddrGeoGeneric;
+        case R_VPBK_FIELD_TYPE_GEOHOME:
+            return CCmsContactFieldItem::ECmsAddrGeoHome;
+        case R_VPBK_FIELD_TYPE_GEOWORK:
+            return CCmsContactFieldItem::ECmsAddrGeoWork;
+        case R_VPBK_FIELD_TYPE_CALLEROBJIMG:
+            return CCmsContactFieldItem::ECmsImageName;
+        default:
+            return CCmsContactFieldItem::ECmsUndefined;
+        }
+    }
+
+
+
+
+
+
+
+