--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines/contactsmodel/tsrc/Integration/CntPerfTest/src/AddModifyDeleteContactFields.cpp Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,673 @@
+// Copyright (c) 2007-2009 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 "AddModifyDeleteContactFields.h"
+
+/* The following set of functions are available for creating and updating desired contact items fields
+* A contact item field has 3 important parts to it
+* 1) Field Type
+* 2) Storage Type
+* 3) Content
+* Functions are available which construct the contact items fields with meet the above criteria
+* In General, the contact item fields are set with random string as their content
+* In specific case, the contact item field will be supplied withh desired content
+* useful in case of find views and Sub Views
+* In case of filtered views, it is required that the contact item possess fields that meet the
+* contact item view filter. Functions are available to added contact item fields in order to meet
+* the contact item view filter criteria
+*/
+
+/**
+* Retrieve the relevant contact field storage type for the specified contact field
+* @param aFieldType - Contact field information
+* @return TStorageType - The contact field storage type
+*/
+TStorageType TAddModifyDeleteContactFields::GetStorageType(const TFieldType& aFieldType)
+ {
+ if((aFieldType == KUidContactFieldAnniversary) || (aFieldType == KUidContactFieldBirthday))
+ {
+ return KStorageTypeDateTime ;
+ }
+ return KStorageTypeText;
+ }
+
+/**
+* Adds content to the specified field based on the available contact field type information
+* @param aFieldType - Contact field type information
+* @param aField - The contact field to be updated
+*/
+void TAddModifyDeleteContactFields::SetDataL(const TFieldType& aFieldType, CContactItemField& aField)
+ {
+ HBufC* buf = HBufC::NewLC(SharedConstants::KMaxBufferLength);
+ TPtr bufPtr = buf->Des();
+
+ if ((aFieldType == KUidContactFieldJobTitle) || (aFieldType == KUidContactFieldNote) ||
+
+ (aFieldType == KUidContactFieldAssistant) || (aFieldType == KUidContactFieldSpouse) ||
+
+ (aFieldType == KUidContactFieldChildren) || (aFieldType == KUidContactFieldRegion) ||
+
+ (aFieldType == KUidContactFieldCountry) || (aFieldType == KUidContactFieldCompanyName) ||
+
+ (aFieldType == KUidContactFieldCompanyNamePronunciation) || (aFieldType == KUidContactFieldGivenName) ||
+
+ (aFieldType == KUidContactFieldFamilyName) || (aFieldType == KUidContactFieldGivenNamePronunciation) ||
+
+ (aFieldType == KUidContactFieldFamilyNamePronunciation) || (aFieldType == KUidContactFieldAdditionalName) ||
+
+ (aFieldType == KUidContactFieldSuffixName) || (aFieldType == KUidContactFieldPrefixName) ||
+
+ (aFieldType == KUidContactFieldDepartmentName) || (aFieldType == KUidContactFieldClass) ||
+
+ (aFieldType == KUidContactFieldClass))
+ {
+ SetRandomAlphaString(bufPtr, SharedConstants::KMaxBufferLength);
+ aField.TextStorage()->SetTextL(bufPtr);
+ }
+
+ else if ((aFieldType == KUidContactFieldPostcode ) || (aFieldType == KUidContactFieldPhoneNumber) ||
+
+ (aFieldType == KUidContactFieldAnniversary ) || (aFieldType == KUidContactFieldSms) ||
+
+ (aFieldType == KUidContactFieldFax ) || (aFieldType == KUidContactFieldBirthday) ||
+
+ (aFieldType == KUidContactFieldICCPhonebook ) || (aFieldType == KUidContactFieldDTMF) ||
+
+ (aFieldType == KUidContactFieldICCSlot) || (aFieldType == KUidContactsVoiceDialField))
+ {
+ SetRandomNumericString(bufPtr, SharedConstants::KMaxBufferLength);
+ aField.TextStorage()->SetTextL(bufPtr);
+ }
+
+ else if ((aFieldType == KUidContactFieldAddress ) || (aFieldType == KUidContactFieldPostOffice) ||
+
+ (aFieldType == KUidContactFieldExtendedAddress ) || (aFieldType == KUidContactFieldLocality) ||
+
+ (aFieldType == KUidContactFieldEMail ) || (aFieldType == KUidContactFieldMsg) ||
+
+ (aFieldType == KUidContactFieldUrl ) || (aFieldType == KUidContactFieldPicture) ||
+
+ (aFieldType == KUidContactFieldRingTone) || (aFieldType == KUidContactFieldICCGroup) ||
+
+ (aFieldType == KUidContactFieldIMAddress ) || (aFieldType == KUidContactFieldSecondName) ||
+
+ (aFieldType == KUidContactFieldSIPID))
+ {
+ SetRandomAlphaNumericString(bufPtr, SharedConstants::KMaxBufferLength);
+ aField.TextStorage()->SetTextL(bufPtr);
+ }
+ CleanupStack::PopAndDestroy(); // buf
+ }
+
+/**
+ * Update the specified buffer with random alpha content as per specified length
+ * @param aBuf - Buffer to be updated
+ * @param aLength - Length information
+ */
+void TAddModifyDeleteContactFields::SetRandomAlphaString(TDes& aBuf,TInt aLength)
+ {
+ aBuf.SetLength(aLength);
+
+ for (TInt ii = 0; ii < aLength; ++ii)
+ {
+ aBuf[ii] = RandomAlphaCharCode();
+ }
+ }
+
+/**
+ * Update the specified buffer with random numeric content as per specified length
+ * @param aBuf - Buffer to be updated
+ * @param aLength - Length information
+ */
+void TAddModifyDeleteContactFields::SetRandomNumericString(TDes& aBuf,TInt aLength)
+ {
+ aBuf.SetLength(aLength);
+
+ for (TInt ii = 0; ii < aLength; ++ii)
+ {
+ aBuf[ii] = RandomNumericCharCode();
+ }
+ }
+
+/**
+ * Update the specified buffer with random alpha and numeric content as per specified length
+ * @param aBuf - Buffer to be updated
+ * @param aLength - Length information
+ */
+void TAddModifyDeleteContactFields::SetRandomAlphaNumericString(TDes& aBuf,TInt aLength)
+ {
+ aBuf.SetLength(aLength);
+ for (TInt ii = 0; ii < (aLength-1); ii = ii+2)
+ {
+ aBuf[ii] = RandomAlphaCharCode();
+ aBuf[ii+1] = RandomNumericCharCode();
+ }
+ }
+
+/**
+ * Returns any random character between A to Z
+ * @return TText - Random Character
+ */
+TText TAddModifyDeleteContactFields::RandomAlphaCharCode()
+ {
+ return RandomCharCode('A','Z',' ');
+ }
+
+/**
+ * Returns any random ascii character equivalent of number between 0 to 9
+ * @return TText - Random Number
+ */
+TText TAddModifyDeleteContactFields::RandomNumericCharCode()
+ {
+ return RandomCharCode('0','9',' ');
+ }
+
+
+TText TAddModifyDeleteContactFields::RandomCharCode(TText aLowerBound,TText aUpperBound,TText aException)
+ {
+ TText charCode = 0;
+
+ do
+ {
+ charCode=RandomCharCode(aLowerBound,aUpperBound);
+ }
+ while (charCode == aException);
+
+ return charCode;
+ }
+
+TText TAddModifyDeleteContactFields::RandomCharCode(TText aLowerBound,TText aUpperBound)
+ {
+ TText charCode = STATIC_CAST(TText,(Math::Rand(iRandSeed) % (aUpperBound - aLowerBound)) + aLowerBound);
+ ASSERT(charCode >= aLowerBound && charCode <= aUpperBound);
+ return charCode;
+ }
+
+
+/**
+* Retrieve the contact field uid information based on the contact field information specified in string format
+* @param aContactFieldString - Contact field information in String format
+* @return TUid - The contact field information in uid format
+*/
+
+TUid TAddModifyDeleteContactFields::GetContactFieldType(const TPtrC& aContactFieldString)
+ {
+
+ _LIT(KAddress, "Address");
+ _LIT(KPostOffice, "PostOffice");
+ _LIT(KExtendedAddress, "ExtendedAddress");
+ _LIT(KLocality, "Locality");
+ _LIT(KRegion, "Region");
+ _LIT(KPostCode, "PostCode");
+ _LIT(KCountry, "Country");
+ _LIT(KCompanyName, "CompanyName");
+ _LIT(KCompanyNamePronunciation, "CompanyNamePronunciation");
+ _LIT(KPhoneNumber, "PhoneNumber");
+ _LIT(KGivenName, "GivenName");
+ _LIT(KFamilyName, "FamilyName");
+ _LIT(KGivenNamePronunciation, "GivenNamePronunciation");
+ _LIT(KFamilyNamePronunciation, "FamilyNamePronunciation");
+ _LIT(KAdditionalName, "AdditionalName");
+ _LIT(KSuffixName, "SuffixName");
+ _LIT(KPrefixName, "PrefixName");
+ _LIT(KHidden, "Hidden");
+ _LIT(KEMail, "EMail");
+ _LIT(KMsg, "Msg");
+ _LIT(KSms, "Sms");
+ _LIT(KFax, "Fax");
+ _LIT(KNote, "Note");
+ _LIT(KBirthday, "Birthday");
+ _LIT(KUrl, "Url");
+ _LIT(KPicture, "Picture");
+ _LIT(KRingTone, "RingTone");
+ _LIT(KDTMF, "DTMF");
+ _LIT(KVoiceDialField, "VoiceDialField");
+ _LIT(KJobTitle, "JobTitle");
+ _LIT(KICCSlot, "ICCSlot");
+ _LIT(KICCPhonebook, "ICCPhonebook");
+ _LIT(KICCGroup, "ICCGroup");
+ _LIT(KIMAddress, "IMAddress");
+ _LIT(KSecondName, "SecondName");
+ _LIT(KSIPID, "SIPID");
+ _LIT(KAssistant, "Assistant");
+ _LIT(KAnniversary, "Anniversary");
+ _LIT(KSpouse, "Spouse");
+ _LIT(KChildren, "Children");
+ _LIT(KClass, "Class");
+ _LIT(KDepartmentName, "DepartmentName");
+
+ TUid uid;
+
+ if ( aContactFieldString.Compare(KAddress) == 0)
+ {
+ uid = KUidContactFieldAddress;
+ }
+ else if ( aContactFieldString.Compare(KPostOffice) == 0)
+ {
+ uid = KUidContactFieldPostOffice;
+ }
+ else if ( aContactFieldString.Compare(KExtendedAddress) == 0)
+ {
+ uid = KUidContactFieldExtendedAddress;
+ }
+ else if ( aContactFieldString.Compare(KLocality) == 0)
+ {
+ uid = KUidContactFieldLocality;
+ }
+ else if ( aContactFieldString.Compare(KRegion) == 0)
+ {
+ uid = KUidContactFieldRegion;
+ }
+ else if ( aContactFieldString.Compare(KPostCode) == 0)
+ {
+ uid = KUidContactFieldPostcode;
+ }
+ else if ( aContactFieldString.Compare(KCountry) == 0)
+ {
+ uid = KUidContactFieldCountry;
+ }
+ else if ( aContactFieldString.Compare(KCompanyName) == 0)
+ {
+ uid = KUidContactFieldCompanyName;
+ }
+ else if ( aContactFieldString.Compare(KCompanyNamePronunciation) == 0)
+ {
+ uid = KUidContactFieldCompanyNamePronunciation;
+ }
+ else if ( aContactFieldString.Compare(KPhoneNumber) == 0)
+ {
+ uid = KUidContactFieldPhoneNumber;
+ }
+ else if ( aContactFieldString.Compare(KGivenName) == 0)
+ {
+ uid = KUidContactFieldGivenName;
+ }
+ else if ( aContactFieldString.Compare(KFamilyName) == 0)
+ {
+ uid = KUidContactFieldFamilyName;
+ }
+ else if ( aContactFieldString.Compare(KGivenNamePronunciation) == 0)
+ {
+ uid = KUidContactFieldGivenNamePronunciation;
+ }
+ else if ( aContactFieldString.Compare(KFamilyNamePronunciation) == 0)
+ {
+ uid = KUidContactFieldFamilyNamePronunciation;
+ }
+ else if ( aContactFieldString.Compare(KAdditionalName) == 0)
+ {
+ uid = KUidContactFieldAdditionalName;
+ }
+ else if ( aContactFieldString.Compare(KSuffixName) == 0)
+ {
+ uid = KUidContactFieldSuffixName;
+ }
+ else if ( aContactFieldString.Compare(KPrefixName) == 0)
+ {
+ uid = KUidContactFieldPrefixName;
+ }
+ else if ( aContactFieldString.Compare(KHidden) == 0)
+ {
+ uid = KUidContactFieldHidden;
+ }
+ else if ( aContactFieldString.Compare(KEMail) == 0)
+ {
+ uid = KUidContactFieldEMail;
+ }
+ else if ( aContactFieldString.Compare(KMsg) == 0)
+ {
+ uid = KUidContactFieldMsg;
+ }
+ else if ( aContactFieldString.Compare(KSms) == 0)
+ {
+ uid = KUidContactFieldSms;
+ }
+ else if ( aContactFieldString.Compare(KFax) == 0)
+ {
+ uid = KUidContactFieldFax;
+ }
+ else if ( aContactFieldString.Compare(KNote) == 0)
+ {
+ uid = KUidContactFieldNote;
+ }
+ else if ( aContactFieldString.Compare(KBirthday) == 0)
+ {
+ uid = KUidContactFieldBirthday;
+ }
+ else if ( aContactFieldString.Compare(KUrl) == 0)
+ {
+ uid = KUidContactFieldUrl;
+ }
+ else if ( aContactFieldString.Compare(KPicture) == 0)
+ {
+ uid = KUidContactFieldPicture;
+ }
+ else if ( aContactFieldString.Compare(KRingTone) == 0)
+ {
+ uid = KUidContactFieldRingTone;
+ }
+ else if ( aContactFieldString.Compare(KDTMF) == 0)
+ {
+ uid = KUidContactFieldDTMF;
+ }
+ else if ( aContactFieldString.Compare(KVoiceDialField) == 0)
+ {
+ uid = KUidContactsVoiceDialField;
+ }
+ else if ( aContactFieldString.Compare(KJobTitle) == 0)
+ {
+ uid = KUidContactFieldJobTitle;
+ }
+ else if ( aContactFieldString.Compare(KICCSlot) == 0)
+ {
+ uid = KUidContactFieldICCSlot;
+ }
+ else if ( aContactFieldString.Compare(KICCPhonebook) == 0)
+ {
+ uid = KUidContactFieldICCPhonebook;
+ }
+ else if ( aContactFieldString.Compare(KICCGroup) == 0)
+ {
+ uid = KUidContactFieldICCGroup;
+ }
+ else if ( aContactFieldString.Compare(KIMAddress) == 0)
+ {
+ uid = KUidContactFieldIMAddress;
+ }
+ else if ( aContactFieldString.Compare(KSecondName) == 0)
+ {
+ uid = KUidContactFieldSecondName;
+ }
+ else if ( aContactFieldString.Compare(KSIPID) == 0)
+ {
+ uid = KUidContactFieldSIPID;
+ }
+ else if ( aContactFieldString.Compare(KAssistant) == 0)
+ {
+ uid = KUidContactFieldAssistant;
+ }
+ else if ( aContactFieldString.Compare(KAnniversary) == 0)
+ {
+ uid = KUidContactFieldAnniversary;
+ }
+ else if ( aContactFieldString.Compare(KSpouse) == 0)
+ {
+ uid = KUidContactFieldSpouse;
+ }
+ else if ( aContactFieldString.Compare(KChildren) == 0)
+ {
+ uid = KUidContactFieldChildren;
+ }
+ else if ( aContactFieldString.Compare(KClass) == 0)
+ {
+ uid = KUidContactFieldClass;
+ }
+ else if ( aContactFieldString.Compare(KDepartmentName) == 0)
+ {
+ uid = KUidContactFieldDepartmentName;
+ }
+ else
+ {
+ uid = KUidContactFieldNone;
+ }
+
+ return uid;
+ }
+
+/**
+ * Adds contact field to meet the specified contact based to meet the filter requirements
+ * @param aContact contact to be updated
+ * @param aBitWiseFilter desired view filter
+ */
+void TAddModifyDeleteContactFields::AddFilterBasedFieldsL(CContactItem& aContact, TInt aBitWiseFilter)
+ {
+ HBufC* buf = HBufC::NewLC(SharedConstants::KMaxBufferLength);
+ TPtr bufPtr = buf->Des();
+
+ if(aBitWiseFilter & CContactDatabase::ELandLine)
+ {
+ SetRandomNumericString(bufPtr,SharedConstants::KMaxBufferLength);
+ SetWorkPhoneL(aContact, bufPtr);
+ }
+
+ if(aBitWiseFilter & CContactDatabase::ESmsable)
+ {
+ SetRandomNumericString(bufPtr, SharedConstants::KMaxBufferLength);
+ SetWorkMobileL(aContact, bufPtr);
+ }
+
+ if(aBitWiseFilter & CContactDatabase::EMailable)
+ {
+ SetRandomAlphaNumericString(bufPtr, SharedConstants::KMaxBufferLength);
+ if (aBitWiseFilter&CContactDatabase::EHome)
+ SetHomeEmailAddressL(aContact, bufPtr);
+ else
+ SetWorkEmailAddressL(aContact, bufPtr);
+ }
+
+ if(aBitWiseFilter & CContactDatabase::EFaxable)
+ {
+ SetRandomNumericString(bufPtr, SharedConstants::KMaxBufferLength);
+ SetFaxL(aContact, bufPtr);
+ }
+
+ if(aBitWiseFilter & CContactDatabase::ERingTone)
+ {
+ SetRandomNumericString(bufPtr, SharedConstants::KMaxBufferLength);
+ SetRingToneL(aContact, bufPtr);
+ }
+
+ if(aBitWiseFilter & CContactDatabase::EVoiceDial)
+ {
+ SetRandomNumericString(bufPtr, SharedConstants::KMaxBufferLength);
+ SetVoiceDialL(aContact, bufPtr);
+ }
+
+ if(aBitWiseFilter & CContactDatabase::EWirelessVillage)
+ {
+ SetRandomNumericString(bufPtr, SharedConstants::KMaxBufferLength);
+ SetIMAddressL(aContact, bufPtr);
+ }
+ if(aBitWiseFilter & CContactDatabase::EIMAddress)
+ {
+ SetRandomAlphaNumericString(bufPtr, SharedConstants::KMaxBufferLength);
+ SetIMAddressL(aContact, bufPtr);
+ }
+
+ CleanupStack::PopAndDestroy(buf);
+ }
+
+/**
+ * Adds contact field to meet the work phone filter requirement
+ * @param aContact contact to be updated
+ * @param aWorkPhone content for work phone contact field
+ */
+void TAddModifyDeleteContactFields::SetWorkPhoneL(CContactItem& aContact, const TDesC& aWorkPhone)
+ {
+ CContentType* contentType = CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapWORK);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ SetTextFieldL(aContact, *contentType,aWorkPhone);
+ CleanupStack::PopAndDestroy(contentType);
+ }
+
+/**
+ * Adds contact field to meet the work mobile filter requirement
+ * @param aContact contact to be updated
+ * @param aWorkMobile content for work mobile contact field
+ */
+void TAddModifyDeleteContactFields::SetWorkMobileL(CContactItem& aContact, const TDesC& aWorkMobile)
+ {
+ CContentType* contentType = CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapWORK);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapCELL);
+ SetTextFieldL(aContact, *contentType,aWorkMobile);
+ CleanupStack::PopAndDestroy(contentType);
+ }
+
+/**
+ * Adds contact field to meet the home phone filter requirement
+ * @param aContact contact to be updated
+ * @param aHomePhone content for home phone contact field
+ */
+void TAddModifyDeleteContactFields::SetHomePhoneL(CContactItem& aContact, const TDesC& aHomePhone)
+ {
+ CContentType* contentType = CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapHOME);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ SetTextFieldL(aContact, *contentType,aHomePhone);
+ CleanupStack::PopAndDestroy(contentType);
+ }
+
+/**
+ * Adds contact field to meet the home mobile filter requirement
+ * @param aContact contact to be updated
+ * @param aHomeMobile content for home mobile contact field
+ */
+void TAddModifyDeleteContactFields::SetHomeMobileL(CContactItem& aContact, const TDesC& aHomeMobile)
+ {
+ CContentType* contentType = CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldPhoneNumber);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapHOME);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapVOICE);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapCELL);
+ SetTextFieldL(aContact, *contentType,aHomeMobile);
+ CleanupStack::PopAndDestroy(contentType);
+ }
+
+/**
+ * Adds contact field to meet the home email filter requirement
+ * @param aContact contact to be updated
+ * @param aEmailAddress content for home email contact field
+ */
+void TAddModifyDeleteContactFields::SetHomeEmailAddressL(CContactItem& aContact, const TDesC& aEmailAddress)
+ {
+ CContentType* contentType = CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldEMail);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapHOME);
+ SetTextFieldL(aContact, *contentType,aEmailAddress);
+ CleanupStack::PopAndDestroy(contentType);
+ }
+
+/**
+ * Adds contact field to meet the work email filter requirement
+ * @param aContact contact to be updated
+ * @param aEmailAddress content for work email contact field
+ */
+void TAddModifyDeleteContactFields::SetWorkEmailAddressL(CContactItem& aContact, const TDesC& aEmailAddress)
+ {
+ CContentType* contentType = CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldEMail);
+ contentType->AddFieldTypeL(KUidContactFieldVCardMapWORK);
+ SetTextFieldL(aContact, *contentType,aEmailAddress);
+ CleanupStack::PopAndDestroy(contentType);
+ }
+
+/**
+ * Adds a new contact field to meet the fax filter requirement
+ * @param aContact contact to be updated
+ * @param aFax content for fax contact field
+ */
+void TAddModifyDeleteContactFields::SetFaxL(CContactItem& aContact, const TDesC& aFax)
+ {
+ CContentType* contentType = CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldFax);
+ SetTextFieldL(aContact, *contentType, aFax);
+ CleanupStack::PopAndDestroy(contentType);
+ }
+
+/**
+ * Adds a new contact field to meet the IMAddress filter requirement
+ * @param aContact contact to be updated
+ * @param aIMAddress content for fax contact field
+ */
+void TAddModifyDeleteContactFields::SetIMAddressL(CContactItem& aContact, const TDesC& aIMAddress)
+ {
+ CContentType* contentType = CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldIMAddress);
+ SetTextFieldL(aContact, *contentType, aIMAddress);
+ CleanupStack::PopAndDestroy(contentType);
+ }
+
+/**
+ * Adds a new contact field to meet the voice dial filter requirement
+ * @param aContact contact to be updated
+ * @param aVoiceDial content for voice dial contact field
+ */
+void TAddModifyDeleteContactFields::SetVoiceDialL(CContactItem& aContact, const TDesC& aVoiceDial)
+ {
+ CContentType* contentType = CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactsVoiceDialField);
+ SetTextFieldL(aContact, *contentType, aVoiceDial );
+ CleanupStack::PopAndDestroy(contentType);
+ }
+
+/**
+ * Adds a new contact field to meet the ring tone filter requirement
+ * @param aContact contact to be updated
+ * @param aRingTone content for ring tone contact field
+ */
+void TAddModifyDeleteContactFields::SetRingToneL(CContactItem& aContact, const TDesC& aRingTone)
+ {
+ CContentType* contentType = CContentType::NewL();
+ CleanupStack::PushL(contentType);
+ contentType->AddFieldTypeL(KUidContactFieldRingTone);
+ SetTextFieldL(aContact, *contentType, aRingTone );
+ CleanupStack::PopAndDestroy(contentType);
+ }
+
+/**
+ * Adds desired contact field content to the contact specified
+ * @param aContact contact to be updated
+ * @param aTypesToMatch Storage type for Contact Field
+ * @param aText content for the desired field
+ */
+void TAddModifyDeleteContactFields::SetTextFieldL(CContactItem& aContact, const CContentType& aTypesToMatch, const TDesC& aText)
+ {
+ TStorageType storageType = KStorageTypeText;
+ CContactItemField* field = CContactItemField::NewL(storageType, aTypesToMatch);
+ CleanupStack::PushL(field);
+ field->TextStorage()->SetTextL(aText);
+ aContact.AddFieldL(*field);
+ CleanupStack::Pop(field);
+ }
+
+/**
+ * Update the contact item fields with new content
+ * @param aContact contact to be updated
+ */
+void TAddModifyDeleteContactFields::UpdateFieldsL(CContactItem& aContact)
+ {
+ CContactItemFieldSet& fieldSet = aContact.CardFields();
+ for(TInt i = 0; i < fieldSet.Count();i++)
+ {
+ TFieldType fieldType(KUidContactFieldNone);
+ CContactItemField& field = fieldSet[i];
+ SetDataL(fieldType, field);
+ }
+ }