williamr@4: /* williamr@4: * Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). williamr@4: * All rights reserved. williamr@4: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@4: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: * williamr@4: * Initial Contributors: williamr@4: * Nokia Corporation - initial contribution. williamr@4: * williamr@4: * Contributors: williamr@4: * williamr@4: * Description: williamr@4: * Phonebook Contact item class. williamr@4: * williamr@4: */ williamr@4: williamr@4: williamr@4: #ifndef __CPbkContactItem_H__ williamr@4: #define __CPbkContactItem_H__ williamr@4: williamr@4: // INCLUDES williamr@4: #include <e32base.h> // CBase, CArrayFixFlat williamr@4: #include "MPbkFieldData.h" // MPbkFieldDataArray williamr@4: #include "PbkFields.hrh" // TPbkFieldId williamr@4: #include "TPbkContactItemField.h" williamr@4: williamr@4: // FORWARD DECLARATIONS williamr@4: class CPbkFieldsInfo; williamr@4: class CPbkFieldInfo; williamr@4: class CContactItemField; williamr@4: class CContactItem; williamr@4: class MPbkContactNameFormat; williamr@4: williamr@4: williamr@4: // CLASS DECLARATION williamr@4: williamr@4: /** williamr@4: * Array of TPbkContactItemField instances. williamr@4: */ williamr@4: class CPbkFieldArray : public CArrayFixFlat<TPbkContactItemField> williamr@4: { williamr@4: public: williamr@4: enum williamr@4: { williamr@4: /// Default array reallocation granularity williamr@4: KDefaultGranularity = 8 williamr@4: }; williamr@4: williamr@4: /** williamr@4: * Constructor. williamr@4: */ williamr@4: inline CPbkFieldArray() williamr@4: : CArrayFixFlat<TPbkContactItemField>(KDefaultGranularity) williamr@4: { williamr@4: } williamr@4: williamr@4: /** williamr@4: * Constructor. williamr@4: * @param aGranularity Reallocation granularity of this array. williamr@4: */ williamr@4: inline CPbkFieldArray(TInt aGranurality) williamr@4: : CArrayFixFlat<TPbkContactItemField>(aGranurality) williamr@4: { williamr@4: } williamr@4: }; williamr@4: williamr@4: williamr@4: /** williamr@4: * Phonebook Contact item class. Contact items can be read from the contact williamr@4: * database by using the Phonebook engine, @see CPbkContactEngine. williamr@4: * This class extends Symbian Contacts model class CContactItem capabilities williamr@4: * to better suit Phonebook application's needs. williamr@4: */ williamr@4: class CPbkContactItem : williamr@4: public CBase, public MPbkFieldDataArray williamr@4: { williamr@4: public: // Constructor and destructor williamr@4: /** williamr@4: * Creates an instance of this class. williamr@4: * williamr@4: * @param aItem Contact item this object wraps. This object williamr@4: * takes ownership of aItem. If this function williamr@4: * leaves, ownership is not taken. williamr@4: * @param aFieldsInfo Collection of Phonebook field types. williamr@4: * @param aNameFormat Contact name formatter. williamr@4: * @return A new instance of this class. williamr@4: */ williamr@4: IMPORT_C static CPbkContactItem* NewL( williamr@4: CContactItem* aItem, williamr@4: const CPbkFieldsInfo& aFieldsInfo, williamr@4: MPbkContactNameFormat& aNameFormat); williamr@4: williamr@4: /** williamr@4: * Destructor. williamr@4: */ williamr@4: ~CPbkContactItem(); williamr@4: williamr@4: public: // CContactItem functions williamr@4: /** williamr@4: * Returns this contact item's id. williamr@4: * @see CContactItem::Id() williamr@4: */ williamr@4: IMPORT_C TContactItemId Id() const; williamr@4: williamr@4: /** williamr@4: * Returns type of this contact item. The contact types are documented in williamr@4: * the Symbian Contacts model CContactItem::Type(). williamr@4: * @return Contact type. williamr@4: * @see CContactItem::Type() williamr@4: */ williamr@4: IMPORT_C TUid Type() const; williamr@4: williamr@4: /** williamr@4: * Gets the groups this contact belongs to. williamr@4: * @return Array of group ids. Caller owns the array. williamr@4: * @see CContactItem::GroupsJoinedLC() williamr@4: */ williamr@4: IMPORT_C CContactIdArray* GroupsJoinedLC() const; williamr@4: williamr@4: /** williamr@4: * Converts this object to a CContactItem. Use only if this class's API williamr@4: * is not enough. williamr@4: * @return The underlying Symbian Contacts model contact item object. williamr@4: */ williamr@4: IMPORT_C CContactItem& ContactItem(); williamr@4: williamr@4: /** williamr@4: * Converts this object to a const CContactItem. Use only if this williamr@4: * class's API is not enough. williamr@4: * @return The underlying Symbian Contacts model contact item object. williamr@4: */ williamr@4: IMPORT_C const CContactItem& ContactItem() const; williamr@4: williamr@4: public: // Field set operations williamr@4: /** williamr@4: * Returns the field set of this contact item. williamr@4: * @return Field array of this contact item. williamr@4: */ williamr@4: IMPORT_C CPbkFieldArray& CardFields() const; williamr@4: williamr@4: /** williamr@4: * Creates a new field based on aFieldInfo and adds it to this contact. williamr@4: * williamr@4: * @param aFieldInfo Type of field to create. williamr@4: * @return The created field. williamr@4: */ williamr@4: IMPORT_C TPbkContactItemField& AddFieldL(CPbkFieldInfo& aFieldInfo); williamr@4: williamr@4: /** williamr@4: * Returns ETrue if data of type aFieldInfo can be added to this williamr@4: * contact. williamr@4: * @param aFieldInfo The field type that we are trying to add. williamr@4: * @return ETrue if the contact can accept this type of data, EFalse williamr@4: * otherwise. williamr@4: */ williamr@4: IMPORT_C TBool CanAcceptDataOfType(CPbkFieldInfo& aFieldInfo) const; williamr@4: williamr@4: /** williamr@4: * Finds an unused or creates a new field based on aFieldInfo. An williamr@4: * unused field is a field that is in the contact template, but williamr@4: * doesnt contain any data, in other words it is empty. So a unused williamr@4: * field is preferred ad the next field to add user data before williamr@4: * adding a new field to the contact. williamr@4: * williamr@4: * @param aFieldInfo Type of field to search or create. williamr@4: * @return Pointer to the found or created field. NULL only if<br> williamr@4: * field exists AND <br> williamr@4: * field is nonempty AND <br> williamr@4: * aFieldInfo.Multiplicity()==EPbkFieldMultiplicityOne. williamr@4: */ williamr@4: IMPORT_C TPbkContactItemField* AddOrReturnUnusedFieldL williamr@4: (CPbkFieldInfo& aFieldInfo); williamr@4: williamr@4: /** williamr@4: * Deletes field at aIndex. williamr@4: * @param aIndex Field index to delete from the contact item. williamr@4: */ williamr@4: IMPORT_C void RemoveField(TInt aIndex); williamr@4: williamr@4: /** williamr@4: * Updates this contacts field set to match the field set of williamr@4: * the owned CContactItem. No need to call unless contact item's williamr@4: * field set has been manipulated directly. In other words williamr@4: * remaps the field types of this contact item from the underlying williamr@4: * Symbian Contacts model contact item. williamr@4: * @param aFieldsInfo The new fields set for this contact. williamr@4: */ williamr@4: IMPORT_C void UpdateFieldSetL(const CPbkFieldsInfo& aFieldsInfo); williamr@4: williamr@4: public: // Field searching williamr@4: /** williamr@4: * Returns first field matching aFieldId. williamr@4: * williamr@4: * @param aFieldId Field id to search. williamr@4: * @return First field matching aFieldId, NULL if none found. williamr@4: */ williamr@4: IMPORT_C TPbkContactItemField* FindField(TPbkFieldId aFieldId) const; williamr@4: williamr@4: /** williamr@4: * Returns first field matching aFieldId starting from aIndex. williamr@4: * williamr@4: * @param aFieldId Field id to search. williamr@4: * @param aIndex Input: field index where to start the search from, williamr@4: * output: index of the found field or -1 if not found. williamr@4: * @return Field matching aFieldId, NULL if none found. williamr@4: */ williamr@4: IMPORT_C TPbkContactItemField* FindField williamr@4: (TPbkFieldId aFieldId, TInt& aIndex) const; williamr@4: williamr@4: /** williamr@4: * Returns first field matching aFieldInfo. williamr@4: * williamr@4: * @param aFieldInfo Field type to find from the contact. williamr@4: * @return First field matching aFieldInfo, NULL if none found. williamr@4: */ williamr@4: IMPORT_C TPbkContactItemField* FindField(const CPbkFieldInfo& aFieldInfo) const; williamr@4: williamr@4: /** williamr@4: * Returns first field matching aFieldInfo starting from aIndex. williamr@4: * williamr@4: * @param aFieldInfo Field type to find from the contact. williamr@4: * @param aIndex Input: field index where to start the search from, williamr@4: * output: index of the found field or -1 if not found. williamr@4: * @return Field matching aFieldInfo, NULL if none found. williamr@4: */ williamr@4: IMPORT_C TPbkContactItemField* FindField williamr@4: (const CPbkFieldInfo& aFieldInfo, TInt& aIndex) const; williamr@4: williamr@4: /** williamr@4: * Returns aField's index from this contact item. williamr@4: * williamr@4: * @param aField Field to search for. Field is matched with williamr@4: * TPbkContactItemField::IsSame -function. williamr@4: * @return Index of aField in this contact item's field set, williamr@4: * KErrNotFound if not found. williamr@4: * @see TPbkContactItemField::IsSame williamr@4: */ williamr@4: IMPORT_C TInt FindFieldIndex(const TPbkContactItemField& aField) const; williamr@4: williamr@4: /** williamr@4: * Returns aField's index from ContactItem()'s CardFields() or williamr@4: * KErrNotFound if not found. williamr@4: * @param aField The field which index we are querying. williamr@4: * @return The fields index in this contact item, KErrNotFound is not found. williamr@4: */ williamr@4: IMPORT_C TInt FindContactItemFieldIndex(const CContactItemField& aField) const; williamr@4: williamr@4: /** williamr@4: * Searches phone number fields of this contact for a match. williamr@4: * Uses PbkEngUtils::ContainSameDigits to perform the matching. williamr@4: * williamr@4: * @param aNumber Phone number to match to. williamr@4: * @param aNumberOfDigits Number of digits to compare from the end williamr@4: * of the phone numbers. Full comparison williamr@4: * performed if 0. williamr@4: * @param aIndex Input: field index where to start the search from, williamr@4: * output: index of the found field or KErrNotFound if not found. williamr@4: * @return The matching field, NULL if not found. williamr@4: * @see PbkEngUtils::ContainSameDigits williamr@4: */ williamr@4: IMPORT_C TPbkContactItemField* FindNextFieldWithPhoneNumber williamr@4: (const TDesC& aNumber, williamr@4: TInt aNumberOfDigits, williamr@4: TInt &aIndex) const; williamr@4: williamr@4: /** williamr@4: * Searches for a text in this contact's fields. Uses TDesC::FindF() williamr@4: * search the text from the fields. williamr@4: * williamr@4: * @param aIndex Input: field index from where to start the search, williamr@4: * Output: index of the found field or KErrNotFound williamr@4: * if not found. williamr@4: * @return The matching field, NULL if not found. williamr@4: * @see TDesC::FindF williamr@4: */ williamr@4: IMPORT_C TPbkContactItemField* FindNextFieldWithText williamr@4: (const TDesC& aText, williamr@4: TInt& aIndex) const; williamr@4: williamr@4: /** williamr@4: * Returns field matching aField from this contact item's field set, NULL if williamr@4: * not found. williamr@4: * @param aField The field that we a mathing. williamr@4: * @return Matching field or NULL if not found. williamr@4: * @postcond !FindSameField(field) || FindSameField(field)->IsSame(field) williamr@4: */ williamr@4: IMPORT_C TPbkContactItemField* FindSameField williamr@4: (const TPbkContactItemField& aField) const; williamr@4: williamr@4: public: // Contact presentation williamr@4: /** williamr@4: * Gets a title text for this contact or localized unnamed text. williamr@4: * williamr@4: * @return A buffer containing the title or localized unnamed text if no williamr@4: * title can be generated. Caller is responsible for deleting williamr@4: * the returned buffer. williamr@4: */ williamr@4: IMPORT_C HBufC* GetContactTitleL() const; williamr@4: williamr@4: /** williamr@4: * Gets a title text for this contact. williamr@4: * williamr@4: * @return A buffer containing the title text, NULL if title is empty. williamr@4: * Caller is responsible for deleting the returned buffer. williamr@4: */ williamr@4: IMPORT_C HBufC* GetContactTitleOrNullL() const; williamr@4: williamr@4: /** williamr@4: * Returns an Phonebook icon id for a contact. This icon id is the icon williamr@4: * of the field that is set as the default number to call. williamr@4: * williamr@4: * @return Icon index for this contact, EPbkNullIconId for no icon. williamr@4: */ williamr@4: IMPORT_C TPbkIconId ContactIconIdL() const; williamr@4: williamr@4: public: // Defaults williamr@4: /** williamr@4: * Returns the default phone number field of this contact. williamr@4: * williamr@4: * @return Default phone number field of this contact, williamr@4: * NULL if no default set. williamr@4: */ williamr@4: IMPORT_C TPbkContactItemField* DefaultPhoneNumberField() const; williamr@4: williamr@4: /** williamr@4: * Sets this contact's default phone number field to aField. williamr@4: * williamr@4: * @param aField Field to set as default, if NULL phone number williamr@4: * default is removed. Guaranteed not to leave if williamr@4: * aField is NULL. williamr@4: * @exception KErrNotFound If aField is not this contact's field. williamr@4: * @exception KErrNotSupported If aField is not a phone number field. williamr@4: */ williamr@4: IMPORT_C void SetDefaultPhoneNumberFieldL williamr@4: (TPbkContactItemField* aField); williamr@4: williamr@4: /** williamr@4: * Removes phone number default from this contact. williamr@4: * williamr@4: * @postcond DefaultPhoneNumberField()==NULL. williamr@4: */ williamr@4: IMPORT_C void RemoveDefaultPhoneNumberField(); williamr@4: williamr@4: /** williamr@4: * Returns the default video number field of this contact. williamr@4: * williamr@4: * @return Default video number field of this contact, williamr@4: * NULL if no default set. williamr@4: */ williamr@4: IMPORT_C TPbkContactItemField* DefaultVideoNumberField() const; williamr@4: williamr@4: /** williamr@4: * Sets this contact's default video number field to aField. williamr@4: * williamr@4: * @param aField Field to set as default, if NULL video number williamr@4: * default is removed. Guaranteed not to leave if williamr@4: * aField is NULL. williamr@4: * @exception KErrNotFound if aField is not this contact's field. williamr@4: * @exception KErrNotSupported if aField is not a phone number field. williamr@4: */ williamr@4: IMPORT_C void SetDefaultVideoNumberFieldL williamr@4: (TPbkContactItemField* aField); williamr@4: williamr@4: /** williamr@4: * Removes video number default from this contact. williamr@4: * williamr@4: * @postcond DefaultVideoNumberField()==NULL. williamr@4: */ williamr@4: IMPORT_C void RemoveDefaultVideoNumberField(); williamr@4: williamr@4: /** williamr@4: * Returns the default SMS field of this contact. williamr@4: * williamr@4: * @return Default SMS field of this contact, williamr@4: * NULL if no default set. williamr@4: */ williamr@4: IMPORT_C TPbkContactItemField* DefaultSmsField() const; williamr@4: williamr@4: /** williamr@4: * Sets this contact's default SMS field to aField. williamr@4: * williamr@4: * @param aField Field to set as default, if NULL SMS williamr@4: * default is removed. Guaranteed not to leave if williamr@4: * aField is NULL. williamr@4: * @exception KErrNotFound if aField is not this contact's field. williamr@4: * @exception KErrNotSupported if aField is not a phone number field. williamr@4: */ williamr@4: IMPORT_C void SetDefaultSmsFieldL(TPbkContactItemField* aField); williamr@4: williamr@4: /** williamr@4: * Removes SMS field default from this contact. williamr@4: * williamr@4: * @postcond DefaultSmsField()==NULL. williamr@4: */ williamr@4: IMPORT_C void RemoveDefaultSmsField(); williamr@4: williamr@4: /** williamr@4: * Returns the default email field of this contact. williamr@4: * williamr@4: * @return Default email field of this contact, williamr@4: * NULL if no default set. williamr@4: */ williamr@4: IMPORT_C TPbkContactItemField* DefaultEmailField() const; williamr@4: williamr@4: /** williamr@4: * Sets this contact's default email address field to aField. williamr@4: * williamr@4: * @param aField Field to set as default, if NULL email williamr@4: * default is removed. Guaranteed not to leave if williamr@4: * aField is NULL. williamr@4: * @exception KErrNotFound If aField is not this contact's field. williamr@4: * @exception KErrNotSupported If aField is not an email field. williamr@4: */ williamr@4: IMPORT_C void SetDefaultEmailFieldL(TPbkContactItemField* aField); williamr@4: williamr@4: /** williamr@4: * Removes email field default from this contact. williamr@4: * williamr@4: * @postcond DefaultEmailField()==NULL. williamr@4: */ williamr@4: IMPORT_C void RemoveDefaultEmailField(); williamr@4: williamr@4: /** williamr@4: * Returns the default Mms field of this contact. williamr@4: * williamr@4: * @return Default Mms field of this contact, williamr@4: * NULL if no default set. williamr@4: */ williamr@4: IMPORT_C TPbkContactItemField* DefaultMmsField() const; williamr@4: williamr@4: /** williamr@4: * Sets this contact's default MMS address field to aField. williamr@4: * williamr@4: * @param aField Field to set as default, if NULL MMS williamr@4: * default is removed. Guaranteed not to leave if williamr@4: * aField is NULL. williamr@4: * @exception KErrNotFound If aField is not this contact's field. williamr@4: * @exception KErrNotSupported If aField is not an email field. williamr@4: */ williamr@4: IMPORT_C void SetDefaultMmsFieldL(TPbkContactItemField* aField); williamr@4: williamr@4: /** williamr@4: * Removes MMS field default from this contact. williamr@4: * williamr@4: * @postcond DefaultMmsField()==NULL. williamr@4: */ williamr@4: IMPORT_C void RemoveDefaultMmsField(); williamr@4: williamr@4: /** williamr@4: * Returns the default Poc field of this contact. williamr@4: * williamr@4: * @return Default Poc field of this contact, williamr@4: * NULL if no default set. williamr@4: */ williamr@4: IMPORT_C TPbkContactItemField* DefaultPocField() const; williamr@4: williamr@4: /** williamr@4: * Sets this contact's default POC address field to aField. williamr@4: * williamr@4: * @param aField Field to set as default, if NULL POC williamr@4: * default is removed. Guaranteed not to leave if williamr@4: * aField is NULL. williamr@4: * @exception KErrNotFound If aField is not this contact's field. williamr@4: * @exception KErrNotSupported If aField is not an email field. williamr@4: */ williamr@4: IMPORT_C void SetDefaultPocFieldL(TPbkContactItemField* aField); williamr@4: williamr@4: /** williamr@4: * Removes POC field default from this contact. williamr@4: * williamr@4: * @postcond DefaultPocField()==NULL. williamr@4: */ williamr@4: IMPORT_C void RemoveDefaultPocField(); williamr@4: williamr@4: /** williamr@4: * Returns the default VOIP field of this contact. williamr@4: * williamr@4: * @return Default VOIP field of this contact, williamr@4: * NULL if no default set. williamr@4: */ williamr@4: IMPORT_C TPbkContactItemField* DefaultVoipField() const; williamr@4: williamr@4: /** williamr@4: * Sets this contact's default VOIP address field to aField. williamr@4: * williamr@4: * @param aField Field to set as default, if NULL VOIP williamr@4: * default is removed. Guaranteed not to leave if williamr@4: * aField is NULL. williamr@4: * @exception KErrNotFound If aField is not this contact's field. williamr@4: * @exception KErrNotSupported If aField is not an email field. williamr@4: */ williamr@4: IMPORT_C void SetDefaultVoipFieldL(TPbkContactItemField* aField); williamr@4: williamr@4: /** williamr@4: * Removes VOIP field default from this contact. williamr@4: * williamr@4: * @postcond DefaultVoipField()==NULL. williamr@4: */ williamr@4: IMPORT_C void RemoveDefaultVoipField(); williamr@4: williamr@4: /** williamr@4: * Returns the default EmailOverSms field of this contact. williamr@4: * williamr@4: * @return Default EmailOverSms field of this contact, williamr@4: * NULL if no default set. williamr@4: */ williamr@4: IMPORT_C TPbkContactItemField* DefaultEmailOverSmsField() const; williamr@4: williamr@4: /** williamr@4: * Sets this contact's default Sms With Email address field to aField. williamr@4: * williamr@4: * @param aField Field to set as default, if NULL Sms With Email williamr@4: * default is removed. Guaranteed not to leave if williamr@4: * aField is NULL. williamr@4: * @exception KErrNotFound If aField is not this contact's field. williamr@4: * @exception KErrNotSupported If aField is not an email field. williamr@4: */ williamr@4: IMPORT_C void SetDefaultEmailOverSmsFieldL(TPbkContactItemField* aField); williamr@4: williamr@4: /** williamr@4: * Removes EmailOverSms field default from this contact. williamr@4: * williamr@4: * @postcond DefaultEmailOverSmsField()==NULL. williamr@4: */ williamr@4: IMPORT_C void RemoveDefaultEmailOverSmsField(); williamr@4: williamr@4: public: // Voice tags williamr@4: /** williamr@4: * Returns the voice tag field of this contact. williamr@4: * NOTE: If this function is unable to make a connection to williamr@4: * the voice tag handling system for some reason, this function will williamr@4: * return null. williamr@4: * williamr@4: * @return Voice tag field of this contact, williamr@4: * NULL if no voice tag set. williamr@4: * @deprecated williamr@4: */ williamr@4: IMPORT_C TPbkContactItemField* VoiceTagField() const; williamr@4: williamr@4: /** williamr@4: * Sets this contact's voice tag field to aField. williamr@4: * williamr@4: * @param aField Field to set as default, if NULL voice tag mark williamr@4: * is removed. Guaranteed not to leave if williamr@4: * aField is NULL. williamr@4: * @exception KErrNotFound If aField is not this contact's field. williamr@4: * @exception KErrNotSupported If aField is not a phone number field. williamr@4: * @postcond (aField && VoiceTagField()->IsSame(*aField)) || (!aField && !VoiceTagField()) williamr@4: * @deprecated williamr@4: */ williamr@4: IMPORT_C void SetVoiceTagFieldL(TPbkContactItemField* aField); williamr@4: williamr@4: /** williamr@4: * Removes any voice tag mark from this contact. williamr@4: * williamr@4: * @postcond VoiceTagField()==NULL. williamr@4: * @deprecated williamr@4: */ williamr@4: IMPORT_C void RemoveVoiceTagField(); williamr@4: williamr@4: public: // from MPbkFieldDataArray williamr@4: TInt PbkFieldCount() const; williamr@4: MPbkFieldData& PbkFieldAt(TInt aIndex); williamr@4: const MPbkFieldData& PbkFieldAt(TInt aIndex) const; williamr@4: williamr@4: public: // Phonebook internal functions, do not call williamr@4: /** williamr@4: * @internal williamr@4: * Prepares this contact for saving into the contact database. williamr@4: * @see PrepareAfterLoad williamr@4: * @deprecated williamr@4: */ williamr@4: void PrepareForSaveL(); williamr@4: williamr@4: /** williamr@4: * @internal williamr@4: * Prepares this contact after loading it from the contact database. williamr@4: * @see PrepareForSaveL williamr@4: * @deprecated williamr@4: */ williamr@4: void PrepareAfterLoadL(); williamr@4: williamr@4: private: // Implementation williamr@4: CPbkContactItem(MPbkContactNameFormat& aNameFormat); williamr@4: void ConstructL(CContactItem* aItem, const CPbkFieldsInfo& aFieldsInfo); williamr@4: void CreateFieldArrayL(CContactItem& aContactItem, const CPbkFieldsInfo& aFieldsInfo); williamr@4: TInt InsertionPos(const TPbkContactItemField& aField) const; williamr@4: __DECLARE_TEST; williamr@4: typedef CPbkContactItem SelfType; williamr@4: williamr@4: private: // Data williamr@4: /// Own: Embedded contact item. williamr@4: CContactItem* iItem; williamr@4: /// Own: array of phonebook contact item fields williamr@4: CPbkFieldArray iFields; williamr@4: /// Ref: Contact name formatting API williamr@4: MPbkContactNameFormat& iNameFormat; williamr@4: williamr@4: private: // Friend declarations williamr@4: friend IMPORT_C TBool operator== williamr@4: (const CPbkContactItem& aLeft, const CPbkContactItem& aRight); williamr@4: }; williamr@4: williamr@4: williamr@4: // FUNCTION DECLARATIONS williamr@4: williamr@4: /** williamr@4: * Returns ETrue if aLeft and aRight contents are the same. williamr@4: */ williamr@4: IMPORT_C TBool operator== williamr@4: (const CPbkContactItem& aLeft, const CPbkContactItem& aRight); williamr@4: williamr@4: /** williamr@4: * Returns ETrue if aLeft and aRight contents differ. williamr@4: */ williamr@4: inline TBool operator!= williamr@4: (const CPbkContactItem& aLeft, const CPbkContactItem& aRight) williamr@4: { williamr@4: return !(aLeft==aRight); williamr@4: } williamr@4: williamr@4: williamr@4: #endif // __CPbkContactItem_H__ williamr@4: williamr@4: // End of File