contacts_plat/virtual_phonebook_engine_api/inc/MVPbkFieldType.h
changeset 0 e686773b3f54
child 32 2828b4d142c0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contacts_plat/virtual_phonebook_engine_api/inc/MVPbkFieldType.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,806 @@
+/*
+* Copyright (c) 2004-2007 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:  A generic field type interface.
+*
+*/
+
+
+#ifndef MVPBKFIELDTYPE_H
+#define MVPBKFIELDTYPE_H
+
+
+// INCLUDES
+#include <e32std.h>
+#include <vpbkfieldtype.hrh>
+
+// FORWARD DECLARATIONS
+class TVPbkFieldVersitProperty;
+class TVPbkFieldTypeParameters;
+
+// CLASS DECLARATIONS
+
+/**
+ * Virtual Phonebook field types. 
+ *
+ * The following structure documents the field types the Virtual Phonebook
+ * supports. The structure describes each field type and the type information
+ * which is associated to the field type. More information on the field type
+ * model can be acquired from the vCard specification. For the field type
+ * definitions @see VPbkFieldType.hrh. 
+ *
+ *
+ * field type description: Last name
+ * field type resource id: r_vpbk_field_type_lastname
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameN
+ *     versit property subfield: EVPbkVersitSubFieldFamilyName
+ *     versit property name: EVPbkVersitNameFN
+ * 
+ * field type description: Last name reading
+ * field type resource id: r_vpbk_field_type_lastnamereading
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameSOUND
+ *     versit property subfield: EVPbkVersitSubFieldFamilyNamePronunciation
+ * 
+ * field type description: First name
+ * field type resource id: r_vpbk_field_type_firstname
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameN
+ *     versit property subfield: EVPbkVersitSubFieldGivenName
+ * 
+ * field type description: First name reading
+ * field type resource id: r_vpbk_field_type_firstnamereading
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameSOUND
+ *     versit property subfield: EVPbkVersitSubFieldGivenNamePronunciation
+ * 
+ * field type description: Prefix
+ * field type resource id: r_vpbk_field_type_prefix
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameN
+ *     versit property subfield: EVPbkVersitSubFieldNamePrefix
+ * 
+ * field type description: Suffix            
+ * field type resource id: r_vpbk_field_type_suffix
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameN
+ *     versit property subfield: EVPbkVersitSubFieldNameSuffix
+ * 
+ * field type description: Nick name
+ * field type resource id: r_vpbk_field_type_secondname
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameX
+ *     versit property extension name: "X-NICKNAME"
+ * 
+ * field type description: Landline phone (home)
+ * field type resource id: r_vpbk_field_type_landphonehome
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameTEL
+ *     versit parameter: EVPbkVersitParamHOME 
+ * associated exclude parameters: 
+ *     exclude parameter: EVPbkVersitParamFAX
+ *     exclude parameter: EVPbkVersitParamPAGER
+ *     exclude parameter: EVPbkVersitParamCELL
+ *     exclude parameter: EVPbkVersitParamVIDEO
+ *     exclude parameter: EVPbkVersitParamCAR
+ * 
+ * field type description: Mobile phone (home)
+ * field type resource id: r_vpbk_field_type_mobilephonehome
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameTEL
+ *     versit parameter: EVPbkVersitParamCELL
+ *     versit parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Video number (home)
+ * field type resource id: r_vpbk_field_type_videonumberhome
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameTEL
+ *     versit parameter: EVPbkVersitParamVIDEO
+ *     versit parameter: EVPbkVersitParamHOME
+ * 
+ * field type description: Fax number (home)
+ * field type resource id: r_vpbk_field_type_faxnumberhome
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameTEL
+ *     versit parameter: EVPbkVersitParamFAX
+ *     versit parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: VoIP (home)
+ * field type resource id: r_vpbk_field_type_voiphome
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameX
+ *     versit parameter: EVPbkVersitParamVOIP
+ *     versit parameter: EVPbkVersitParamHOME 
+ *     versit property extension name: "X-SIP"
+ * 
+ * field type description: Email address (home)
+ * field type resource id: r_vpbk_field_type_emailhome
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameEMAIL
+ *     versit parameter: EVPbkVersitParamINTERNET
+ *     versit parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: URL (home)
+ * field type resource id: r_vpbk_field_type_urlhome
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameURL
+ *     versit parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Address label (home)
+ * field type resource id: r_vpbk_field_type_addrlabelhome
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameLABEL
+ *     versit parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Address Postoffice (home)
+ * field type resource id: r_vpbk_field_type_addrpohome
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldPostOfficeAddress
+ *     versit parameter: EVPbkVersitParamHOME
+ * 
+ * field type description: Address Extension (home)
+ * field type resource id: r_vpbk_field_type_addrexthome
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldExtendedAddress
+ *     versit parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Address Street (home)
+ * field type resource id: r_vpbk_field_type_addrstreethome
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldStreet
+ *     versit parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Address Locality (home)
+ * field type resource id: r_vpbk_field_type_addrlocalhome
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldLocality
+ *     versit parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Address Region (home)
+ * field type resource id: r_vpbk_field_type_addrregionhome
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldRegion
+ *     versit parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Address Postal Code (home)
+ * field type resource id: r_vpbk_field_type_addrpostcodehome
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldPostalCode
+ *     versit parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Address Country (home)
+ * field type resource id: r_vpbk_field_type_addrcountryhome
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldCountry
+ *     versit parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Job title
+ * field type resource id: r_vpbk_field_type_jobtitle
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameTITLE
+ *     versit property name: EVPbkVersitNameROLE
+ * 
+ * field type description: Company name
+ * field type resource id: r_vpbk_field_type_companyname
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameORG
+ *     versit property subfield: EVPbkVersitSubFieldOrgName
+ * 
+ * field type description: Landline phone (work)
+ * field type resource id: r_vpbk_field_type_landphonework
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameTEL
+ *     versit parameter: EVPbkVersitParamWORK 
+ * associated exclude parameters: 
+ *     exclude parameter: EVPbkVersitParamFAX
+ *     exclude parameter: EVPbkVersitParamPAGER
+ *     exclude parameter: EVPbkVersitParamCELL
+ *     exclude parameter: EVPbkVersitParamVIDEO
+ *     exclude parameter: EVPbkVersitParamCAR 
+ * 
+ * field type description: Mobile phone (work)
+ * field type resource id: r_vpbk_field_type_mobilephonework
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameTEL
+ *     versit parameter: EVPbkVersitParamCELL
+ *     versit parameter: EVPbkVersitParamWORK 
+ * 
+ * field type description: Video number (work)
+ * field type resource id: r_vpbk_field_type_videonumberwork
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameTEL
+ *     versit parameter: EVPbkVersitParamVIDEO
+ *     versit parameter: EVPbkVersitParamWORK 
+ * 
+ * field type description: Fax number (work)
+ * field type resource id: r_vpbk_field_type_faxnumberwork
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameTEL
+ *     versit parameter: EVPbkVersitParamFAX
+ *     versit parameter: EVPbkVersitParamWORK 
+ * 
+ * field type description: VoIP (work)
+ * field type resource id: r_vpbk_field_type_voipwork
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameX
+ *     versit parameter: EVPbkVersitParamVOIP
+ *     versit parameter: EVPbkVersitParamWORK 
+ *     versit property extension name: "X-SIP"
+ * 
+ * field type description: Email address (work)
+ * field type resource id: r_vpbk_field_type_emailwork
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameEMAIL
+ *     versit parameter: EVPbkVersitParamINTERNET
+ *     versit parameter: EVPbkVersitParamWORK 
+ * 
+ * field type description: URL (work)
+ * field type resource id: r_vpbk_field_type_urlwork
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameURL
+ *     versit parameter: EVPbkVersitParamWORK 
+ * 
+ * field type description: Address label (work)
+ * field type resource id: r_vpbk_field_type_addrlabelwork
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameLABEL
+ *     versit parameter: EVPbkVersitParamWORK 
+ * 
+ * field type description: Address Postoffice (work)
+ * field type resource id: r_vpbk_field_type_addrpowork
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldPostOfficeAddress
+ *     versit parameter: EVPbkVersitParamWORK 
+ * 
+ * field type description: Address Extension (work)
+ * field type resource id: r_vpbk_field_type_addrextwork
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldExtendedAddress
+ *     versit parameter: EVPbkVersitParamWORK 
+ * 
+ * field type description: Address Street (work)
+ * field type resource id: r_vpbk_field_type_addrstreetwork
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldStreet
+ *     versit parameter: EVPbkVersitParamWORK 
+ * 
+ * field type description: Address Locality (work)
+ * field type resource id: r_vpbk_field_type_addrlocalwork
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldLocality
+ *     versit parameter: EVPbkVersitParamWORK 
+ * 
+ * field type description: Address Region (work)
+ * field type resource id: r_vpbk_field_type_addrregionwork
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldRegion
+ *     versit parameter: EVPbkVersitParamWORK 
+ * 
+ * field type description: Address Postal Code (work)
+ * field type resource id: r_vpbk_field_type_addrpostcodework
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldPostalCode
+ *     versit parameter: EVPbkVersitParamWORK 
+ * 
+ * field type description: Address Country (work)
+ * field type resource id: r_vpbk_field_type_addrcountrywork
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldCountry
+ *     versit parameter: EVPbkVersitParamWORK 
+ * 
+ * field type description: Landline phone (general)
+ * field type resource id: r_vpbk_field_type_landphonegen
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameTEL
+ * associated exclude parameters: 
+ *     exclude parameter: EVPbkVersitParamWORK
+ *     exclude parameter: EVPbkVersitParamHOME
+ *     exclude parameter: EVPbkVersitParamFAX
+ *     exclude parameter: EVPbkVersitParamPAGER
+ *     exclude parameter: EVPbkVersitParamCELL
+ *     exclude parameter: EVPbkVersitParamVIDEO
+ *     exclude parameter: EVPbkVersitParamCAR 
+ * 
+ * field type description: Mobile phone (general)
+ * field type resource id: r_vpbk_field_type_mobilephonegen
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameTEL
+ *     versit parameter: EVPbkVersitParamCELL 
+ * associated exclude parameters: 
+ *     exclude parameter: EVPbkVersitParamWORK
+ *     exclude parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Video number (general)
+ * field type resource id: r_vpbk_field_type_videonumbergen
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameTEL
+ *     versit parameter: EVPbkVersitParamVIDEO 
+ * associated exclude parameters: 
+ *     exclude parameter: EVPbkVersitParamWORK
+ *     exclude parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Fax number (general)
+ * field type resource id: r_vpbk_field_type_faxnumbergen
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameTEL
+ *     versit parameter: EVPbkVersitParamFAX 
+ * associated exclude parameters: 
+ *     exclude parameter: EVPbkVersitParamWORK
+ *     exclude parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: VoIP (general)
+ * field type resource id: r_vpbk_field_type_voipgen
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameX
+ *     versit parameter: EVPbkVersitParamVOIP 
+ *     versit property extension name: "X-SIP"
+ * associated exclude parameters: 
+ *     exclude parameter: EVPbkVersitParamWORK
+ *     exclude parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: PTT (POC)
+ * field type resource id: r_vpbk_field_type_poc
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameX
+ *     versit parameter: EVPbkVersitParamPOC 
+ *     versit property extension name: "X-SIP"
+ * 
+ * field type description: SWIS
+ * field type resource id: r_vpbk_field_type_swis
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameX
+ *     versit parameter: EVPbkVersitParamSWIS 
+ *     versit property extension name: "X-SIP"
+ *     
+ * field type description: SIP
+ * field type resource id: r_vpbk_field_type_sip
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameX
+ *     versit property extension name: "X-SIP"
+ * 
+ * field type description: Email address (general)
+ * field type resource id: r_vpbk_field_type_emailgen
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameEMAIL
+ *     versit parameter: EVPbkVersitParamINTERNET 
+ * associated exclude parameters: 
+ *     exclude parameter: EVPbkVersitParamWORK
+ *     exclude parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: URL (general)
+ * field type resource id: r_vpbk_field_type_urlgen
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameURL
+ * associated exclude parameters: 
+ *     exclude parameter: EVPbkVersitParamWORK
+ *     exclude parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Address label (general)
+ * field type resource id: r_vpbk_field_type_addrlabelgen
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameLABEL
+ * associated exclude parameters: 
+ *     exclude parameter: EVPbkVersitParamWORK
+ *     exclude parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Address Postoffice (general)
+ * field type resource id: r_vpbk_field_type_addrpogen
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldPostOfficeAddress
+ * associated exclude parameters: 
+ *     exclude parameter: EVPbkVersitParamWORK
+ *     exclude parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Address Extension (general)
+ * field type resource id: r_vpbk_field_type_addrextgen
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldExtendedAddress
+ * associated exclude parameters: 
+ *     exclude parameter: EVPbkVersitParamWORK
+ *     exclude parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Address Street (general)
+ * field type resource id: r_vpbk_field_type_addrstreetgen
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldStreet
+ * associated exclude parameters: 
+ *     exclude parameter: EVPbkVersitParamWORK
+ *     exclude parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Address Locality (general)
+ * field type resource id: r_vpbk_field_type_addrlocalgen
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldLocality
+ * associated exclude parameters: 
+ *     exclude parameter: EVPbkVersitParamWORK
+ *     exclude parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Address Region (general)
+ * field type resource id: r_vpbk_field_type_addrregiongen
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldRegion
+ * associated exclude parameters: 
+ *     exclude parameter: EVPbkVersitParamWORK
+ *     exclude parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Address Postal Code (general)
+ * field type resource id: r_vpbk_field_type_addrpostcodegen
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldPostalCode
+ * associated exclude parameters: 
+ *     exclude parameter: EVPbkVersitParamWORK
+ *     exclude parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Address Country (general)
+ * field type resource id: r_vpbk_field_type_addrcountrygen
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameADR
+ *     versit property subfield: EVPbkVersitSubFieldCountry
+ * associated exclude parameters: 
+ *     exclude parameter: EVPbkVersitParamWORK
+ *     exclude parameter: EVPbkVersitParamHOME 
+ * 
+ * field type description: Pager number
+ * field type resource id: r_vpbk_field_type_pagernumber
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameTEL
+ *     versit parameter: EVPbkVersitParamPAGER 
+ * 
+ * field type description: DTMF string
+ * field type resource id: r_vpbk_field_type_dtmfstring
+ * associated non-versit property: EVPbkNonVersitTypeDTMF
+ * 
+ * field type description: Wv(IM) address
+ * field type resource id: r_vpbk_field_type_wvaddress
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameX
+ *     versit property extension name: "X-WV-ID"
+ * 
+ * field type description: Date
+ * field type resource id: r_vpbk_field_type_date
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameBDAY
+ * 
+ * field type description: Note
+ * field type resource id: r_vpbk_field_type_note
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameNOTE
+ * 
+ * field type description: Thumbnail photo
+ * field type resource id: r_vpbk_field_type_thumbnailpic
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNamePHOTO
+ *     versit property name: EVPbkVersitNameLOGO
+ * 
+ * field type description: Ring tone
+ * field type resource id: r_vpbk_field_type_ringtone
+ * associated non-versit property: EVPbkNonVersitTypeRingTone
+ * 
+ * field type description: Caller object image
+ * field type resource id: r_vpbk_field_type_callerobjimg
+ * associated non-versit property: EVPbkNonVersitTypeCodImage
+ * 
+ * field type description: Caller object text
+ * field type resource id: r_vpbk_field_type_callerobjtext
+ * associated non-versit property: EVPbkNonVersitTypeCodText
+ * 
+ * field type description: Middle name
+ * field type resource id: r_vpbk_field_type_middlename
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameN
+ *     versit property subfield: EVPbkVersitSubFieldAdditionalName
+ * 
+ * field type description: Department            
+ * field type resource id: r_vpbk_field_type_department
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameORG
+ *     versit property subfield: EVPbkVersitSubFieldOrgUnit
+ * 
+ * field type description: Assistant name
+ * field type resource id: r_vpbk_field_type_asstname
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameX
+ *     versit property extension name: "X-ASSISTANT"
+ * 
+ * field type description: Spouse
+ * field type resource id: r_vpbk_field_type_spouse
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameX
+ *     versit property extension name: "X-SPOUSE"
+ * 
+ * field type description: Children
+ * field type resource id: r_vpbk_field_type_children
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameX
+ *     versit property extension name: "X-CHILDREN"
+ * 
+ * field type description: Assistant phone
+ * field type resource id: r_vpbk_field_type_asstphone
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameX
+ *     versit property extension name: "X-ASSISTANT-TEL"
+ * 
+ * field type description: Car phone
+ * field type resource id: r_vpbk_field_type_carphone
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameTEL
+ *     versit parameter: EVPbkVersitParamCAR 
+ * 
+ * field type description: Anniversary
+ * field type resource id: r_vpbk_field_type_anniversary
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameX
+ *     versit property extension name: "X-ANNIVERSARY"
+ * 
+ * field type description: Class - Syncronization
+ * field type resource id: r_vpbk_field_type_syncclass
+ * associated versit properties:
+ *     versit property name: EVPbkVersitNameX
+ *     versit property extension name: "X-CLASS"
+ * 
+ * field type description: Location privacy indicator
+ * field type resource id: r_vpbk_field_type_locprivacy
+ * associated non-versit property: EVPbkNonVersitTypeLocationPrivacy
+ * 
+ * field type description: Generic label field type for folded view names and group labels
+ * field type resource id: r_vpbk_field_type_genlabel
+ * associated non-versit property: EVPbkNonVersitTypeGenericLabel
+ */
+
+
+/**
+ * A generic field type interface. 
+ *
+ * Field types are based on the Versit 2.1 standard.
+ */
+class MVPbkFieldType
+    {
+    public: // Interface
+
+        /**
+         * Destructor. Clients must not destroy the field types they retrieve
+         * from the Virtual Phonebook interfaces.
+         */
+        virtual ~MVPbkFieldType() { }
+
+        /**
+         * Returns the Versit properties mapped to this field type.
+         *
+         * @return Versit properties.
+         */
+        virtual TArray<TVPbkFieldVersitProperty> VersitProperties() const = 0;
+
+        /**
+         * Returns the Versit parameters fields of this type should not have.
+         *
+         * @return Excluded parameters.
+         */
+        virtual const TVPbkFieldTypeParameters& ExcludedParameters() const = 0;
+
+        /**
+         * Type name for field types not supported by the Versit 2.1 standard.
+         *
+         * @return A non-Versit type.
+         */
+        virtual TVPbkNonVersitFieldType NonVersitType() const = 0;
+
+        /**
+         * Returns true if this field type is the same as aOtherType.
+         *
+         * @param aOtherType The type to compare.
+         * @return ETrue if the field types are the same.
+         */
+        virtual TBool IsSame(
+                const MVPbkFieldType& aOtherType ) const = 0;
+
+        /**
+         * Returns true if this field type matches a Versit property.
+         *
+         * @param aMatchProperty A versit property to match against.
+         * @param aMatchPriority A matching priority. Priorities start
+         *                       from zero which is the highest priority.
+         *                       Priority is also a direct index to
+         *                       VersitProperties() array.
+         * @return ETrue if this field type matches aMatchProperty at
+         *         aMatchPriority. Returns always false if 
+         *         aMatchPriority >= VersitProperties().Count().
+         */
+        virtual TBool Matches(
+                const TVPbkFieldVersitProperty& aMatchProperty,
+                TInt aMatchPriority ) const = 0;
+
+        /**
+         * Returns the field type resource id from VPbkEng.rsg
+         * that be used to identify a type.
+         *
+         * @return A field type resource id.
+         */
+        virtual TInt FieldTypeResId() const = 0;
+
+        /**
+         * Returns an extension point for this interface or NULL.
+         *
+         * @param aExtensionUid no extensions defined currently.
+         * @return an extension point for this interface or NULL.
+         */
+        virtual TAny* FieldTypeExtension(TUid /*aExtensionUid*/) 
+                { return NULL; }
+    };
+
+/**
+ * An interface for a list of field types.
+ *
+ */
+class MVPbkFieldTypeList
+    {
+    public: // Interface
+        /**
+         * Destructor.
+         */
+        virtual ~MVPbkFieldTypeList() { }
+
+        /**
+         * Returns the number of field type objects in this list.
+         *
+         * @return A number of field types.
+         */
+        virtual TInt FieldTypeCount() const = 0;
+
+        /**
+         * Returns the field type object at aIndex. 
+         *
+         * The objects are not in any specific order.
+         *
+         * @precond aIndex >= 0 && aIndex < FieldTypeCount()
+         * @param aIndex An index of a field type.
+         * @return A reference to Virtual Phonebook field type.
+         *         The reference is valid for the lifetime of this object.
+         */
+        virtual const MVPbkFieldType& FieldTypeAt(
+                TInt aIndex ) const = 0;
+
+        /**
+         * Returns true if this list contains aFieldType.
+         *
+         * @param aFieldType The field type to look for.
+         * @return ETrue if the list contains the field type.
+         */
+        virtual TBool ContainsSame(
+                const MVPbkFieldType& aFieldType ) const = 0;
+
+        /**
+         * Returns the maximum matching priority held by this field type list.
+         *
+         * @return A maximum match priority.
+         */
+        virtual TInt MaxMatchPriority() const = 0;
+
+        /**
+         * Returns a matching field type in this list or NULL if no match is
+         * found.
+         *
+         * @param aMatchProperty A Versit property to match.
+         * @param aMatchPriority A match priority.
+         * @return A matching field type.
+         */
+        virtual const MVPbkFieldType* FindMatch(
+                const TVPbkFieldVersitProperty& aMatchProperty,
+                TInt aMatchPriority ) const = 0;
+
+        /**
+         * Returns a matching field type in this list or NULL if no match is 
+         * found.
+         *
+         * @param aNonVersitType A non Versit field type to match.
+         * @return A matching field type.
+         */
+        virtual const MVPbkFieldType* FindMatch(
+                TVPbkNonVersitFieldType aNonVersitType ) const = 0;
+
+        /**
+         * Returns the field type corresponding to field type resource id.
+         *
+         * If no match is found returns NULL. The resource id aFieldTypeResId
+         * corresponds to the VPBK_FIELD_TYPE types in VPbkEng.rsg.
+         *
+         * @param aFieldTypeResId The field type resource id.
+         * @return The corresponding field type.
+         */
+        virtual const MVPbkFieldType* Find( TInt /*aFieldTypeResId*/ ) const
+            { return NULL; }
+
+        /**
+         * Returns an extension point for this interface or NULL.
+         *
+         * @param aExtensionUid no extensions defined currently.
+         * @return an extension point for this interface or NULL.
+         */
+        virtual TAny* FieldTypeListExtension(TUid /*aExtensionUid*/) 
+                { return NULL; }
+    };
+
+/**
+ * An interface for composites of MVPbkFieldTypeList objects.
+ */
+class MVPbkMultiFieldTypeList : public MVPbkFieldTypeList
+    {
+    public: // Interface
+
+        /**
+         * Destructor.
+         */
+        virtual ~MVPbkMultiFieldTypeList() { }
+
+        /**
+         * Adds aTypeList to this composite by reference. New lists are 
+         * appended to the end of current lists, starting from index
+         * FieldTypeCount().
+         *
+         * @param aTypelist A field type list to append.
+         */
+        virtual void AppendL( const MVPbkFieldTypeList& aTypeList ) = 0;
+
+        /**
+         * Removes aTypeList from this composite.
+         *
+         * @param aTypelist A field type list to remove.
+         */
+        virtual void Remove( const MVPbkFieldTypeList& aTypeList ) = 0;
+
+        /**
+         * Returns an extension point for this interface or NULL.
+         *
+         * @param aExtensionUid no extensions defined currently.
+         * @return an extension point for this interface or NULL.
+         */
+        virtual TAny* MultiFieldTypeListExtension(TUid /*aExtensionUid*/) 
+                { return NULL; }
+    };
+
+
+namespace VPbkFieldTypeList {
+
+// --------------------------------------------------------------------------
+// IsSame
+// Compares two field type lists. Fieldtypes must be from same 
+// contact manager. Uses MVPbkFieldType::IsSame. 
+// --------------------------------------------------------------------------
+//
+IMPORT_C TBool IsSame( const MVPbkFieldTypeList& aLeft, 
+        const MVPbkFieldTypeList& aRight );
+
+}
+#endif // MVPBKFIELDTYPE_H
+
+//End of file