diff -r 000000000000 -r e686773b3f54 phonebookengines/contactsmodel/tsrc/Integration/CntPerfTest/src/AddModifyDeleteContactFields.cpp --- /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); + } + }