ccservices/cmsservices/cmsengine/Server/src/cmsserverutils.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 13 Oct 2010 14:15:33 +0300
branchRCL_3
changeset 85 38bb213f60ba
parent 68 9da50d567e3c
permissions -rw-r--r--
Revision: 201039 Kit: 201041

/*
* 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;
        }
    }