diff -r b3cee849fa46 -r fad26422216a creator/engine/src/creator_phonebook.cpp --- a/creator/engine/src/creator_phonebook.cpp Tue Aug 31 15:15:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,770 +0,0 @@ -/* -* Copyright (c) 2010 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 "engine.h" -#include "enginewrapper.h" -#include "creator_contactsetcache.h" - -#include "creator_phonebook.h" -#include "creator_traces.h" - -#include - -_LIT(KTempPath, "C:\\Data\\Creator\\"); - - -typedef struct { -TInt iFieldCode; -TInt iRandomType; -} DetailFieldInfo; -static const TInt RND_TYPE_UNDEF = -99; -DetailFieldInfo CreatorPbkMiscTextFields[] = { - {CCreatorPhonebookWrapper::EFirstName, (TInt) CCreatorEngine::EFirstName}, - {CCreatorPhonebookWrapper::EFirstNameReading, (TInt) CCreatorEngine::EFirstName}, - {CCreatorPhonebookWrapper::ELastName, (TInt) CCreatorEngine::ESurname}, - {CCreatorPhonebookWrapper::ELastNameReading, (TInt) CCreatorEngine::ESurname}, - {CCreatorPhonebookWrapper::ECompanyName, (TInt) CCreatorEngine::ECompany}, - {CCreatorPhonebookWrapper::EJobTitle, (TInt) CCreatorEngine::EJobTitle}, - {CCreatorPhonebookWrapper::EPrefix, (TInt) CCreatorEngine::EPrefix}, - {CCreatorPhonebookWrapper::ESuffix, (TInt) CCreatorEngine::ESuffix}, - {CCreatorPhonebookWrapper::ESecondName, (TInt) CCreatorEngine::EFirstName}, - {CCreatorPhonebookWrapper::EAddrLabelGen, (TInt) CCreatorEngine::EAddress}, - {CCreatorPhonebookWrapper::EAddrPoGen, (TInt) CCreatorEngine::EPobox}, - {CCreatorPhonebookWrapper::EAddrExtGen, (TInt) CCreatorEngine::EAddress}, - {CCreatorPhonebookWrapper::EAddrStreetGen, (TInt) CCreatorEngine::EAddress}, - {CCreatorPhonebookWrapper::EAddrLocalGen, (TInt) CCreatorEngine::ECity}, - {CCreatorPhonebookWrapper::EAddrRegionGen, (TInt) CCreatorEngine::EState}, - {CCreatorPhonebookWrapper::EAddrPostCodeGen, (TInt) CCreatorEngine::EPostcode}, - {CCreatorPhonebookWrapper::EAddrCountryGen, (TInt) CCreatorEngine::ECountry}, - {CCreatorPhonebookWrapper::EAddrLabelHome, (TInt) CCreatorEngine::EAddress}, - {CCreatorPhonebookWrapper::EAddrPoHome, (TInt) CCreatorEngine::EPobox}, - {CCreatorPhonebookWrapper::EAddrExtHome, (TInt) CCreatorEngine::EAddress}, - {CCreatorPhonebookWrapper::EAddrStreetHome, (TInt) CCreatorEngine::EAddress}, - {CCreatorPhonebookWrapper::EAddrLocalHome, (TInt) CCreatorEngine::ECity}, - {CCreatorPhonebookWrapper::EAddrRegionHome, (TInt) CCreatorEngine::EState}, - {CCreatorPhonebookWrapper::EAddrPostCodeHome, (TInt) CCreatorEngine::EPostcode}, - {CCreatorPhonebookWrapper::EAddrCountryHome, (TInt) CCreatorEngine::ECountry}, - {CCreatorPhonebookWrapper::EAddrLabelWork, (TInt) CCreatorEngine::EAddress}, - {CCreatorPhonebookWrapper::EAddrPoWork, (TInt) CCreatorEngine::EPobox}, - {CCreatorPhonebookWrapper::EAddrExtWork, (TInt) CCreatorEngine::EAddress}, - {CCreatorPhonebookWrapper::EAddrStreetWork, (TInt) CCreatorEngine::EAddress}, - {CCreatorPhonebookWrapper::EAddrLocalWork, (TInt) CCreatorEngine::ECity}, - {CCreatorPhonebookWrapper::EAddrRegionWork, (TInt) CCreatorEngine::EState}, - {CCreatorPhonebookWrapper::EAddrPostCodeWork, (TInt) CCreatorEngine::EPostcode}, - {CCreatorPhonebookWrapper::EAddrCountryWork, (TInt) CCreatorEngine::ECountry}, - {CCreatorPhonebookWrapper::EPoc, (TInt) CCreatorEngine::EPhoneNumber}, - {CCreatorPhonebookWrapper::ESwis, (TInt) CCreatorEngine::EPhoneNumber}, - {CCreatorPhonebookWrapper::ESip, (TInt) CCreatorEngine::EPhoneNumber}, - {CCreatorPhonebookWrapper::EDtmfString, (TInt) CCreatorEngine::EFirstName}, - {CCreatorPhonebookWrapper::ENote,(TInt) CCreatorEngine::EMemoText}, - {CCreatorPhonebookWrapper::EMiddleName, (TInt) CCreatorEngine::EFirstName}, - {CCreatorPhonebookWrapper::EDepartment, (TInt) CCreatorEngine::ECompany}, - {CCreatorPhonebookWrapper::EAsstName, (TInt) CCreatorEngine::EFirstName}, - {CCreatorPhonebookWrapper::ESpouse, (TInt) CCreatorEngine::EFirstName}, - {CCreatorPhonebookWrapper::EChildren, (TInt) CCreatorEngine::EFirstName}, - {CCreatorPhonebookWrapper::ESyncClass, RND_TYPE_UNDEF}, - {CCreatorPhonebookWrapper::ELocPrivacy, RND_TYPE_UNDEF}, - {CCreatorPhonebookWrapper::EGenLabel, (TInt) CCreatorEngine::EFirstName}, - {CCreatorPhonebookWrapper::EWVAddress, (TInt) CCreatorEngine::EPhoneNumber}, - {CCreatorPhonebookWrapper::ERingTone, RND_TYPE_UNDEF}, - {CCreatorPhonebookWrapper::EThumbnailPic, RND_TYPE_UNDEF}, - {CCreatorPhonebookWrapper::ECallerObjText, (TInt) CCreatorEngine::EFirstName} - }; - - -TInt CreatorPbkBinaryFields[] = { - CCreatorPhonebookWrapper::ECallerObjImg//, - //R_VPBK_FIELD_TYPE_THUMBNAILPATH - }; - -TInt CreatorPbkDateTimeFields[] = { - CCreatorPhonebookWrapper::EAnniversary - }; - -//---------------------------------------------------------------------------- -TInt CreatorPbkPhoneNumberFields[] = - { - CCreatorPhonebookWrapper::ELandPhoneGen, - CCreatorPhonebookWrapper::ELandPhoneHome, - CCreatorPhonebookWrapper::ELandPhoneWork, - CCreatorPhonebookWrapper::EMobilePhoneGen, - CCreatorPhonebookWrapper::EMobilePhoneHome, - CCreatorPhonebookWrapper::EMobilePhoneWork, - CCreatorPhonebookWrapper::EFaxNumberGen, - CCreatorPhonebookWrapper::EFaxNumberHome, - CCreatorPhonebookWrapper::EFaxNumberWork, - CCreatorPhonebookWrapper::EPagerNumber, - CCreatorPhonebookWrapper::EVideoNumberGen, - CCreatorPhonebookWrapper::EVideoNumberHome, - CCreatorPhonebookWrapper::EVideoNumberWork, - CCreatorPhonebookWrapper::EVoipGen, - CCreatorPhonebookWrapper::EVoipHome, - CCreatorPhonebookWrapper::EVoipWork, - CCreatorPhonebookWrapper::EAsstPhone, - CCreatorPhonebookWrapper::ECarPhone - }; - -TInt CreatorPbkUrlFields[] = - { - CCreatorPhonebookWrapper::EUrlGen, - CCreatorPhonebookWrapper::EUrlHome, - CCreatorPhonebookWrapper::EUrlWork - }; - -TInt CreatorPbkEmailFields[] = - { - CCreatorPhonebookWrapper::EEmailGen, - CCreatorPhonebookWrapper::EEmailHome, - CCreatorPhonebookWrapper::EEmailWork - }; - -CPhonebookParameters::CPhonebookParameters() - { - LOGSTRING("Creator: CPhonebookParameters::CVirtualPhonebookParameters"); - iGroupName = HBufC::New(KPhonebookFieldLength); - } - -CPhonebookParameters::~CPhonebookParameters() - { - LOGSTRING("Creator: CPhonebookParameters::~CPhonebookParameters"); - - delete iGroupName; - for( TCreatorContactFields::iterator it = iContactFields.begin(); it != iContactFields.end(); ++it) - { - HBufC* temp = (*it).second; - iContactFields.erase(it); - delete temp; - } - iLinkIds.Reset(); - iLinkIds.Close(); - } - -void CPhonebookParameters::ParseL(CCommandParser* /*parser*/, TParseParams /*aCase = 0*/) - { - } - -TInt CPhonebookParameters::ScriptLinkId() const - { - return iLinkId; - } - -void CPhonebookParameters::SetScriptLinkId(TInt aLinkId) - { - iLinkId = aLinkId; - } - - -//---------------------------------------------------------------------------- - -CCreatorPhonebook* CCreatorPhonebook::NewL(CCreatorEngine* aEngine) - { - CCreatorPhonebook* self = CCreatorPhonebook::NewLC(aEngine); - CleanupStack::Pop(self); - return self; - } - -CCreatorPhonebook* CCreatorPhonebook::NewLC(CCreatorEngine* aEngine) - { - CCreatorPhonebook* self = new (ELeave) CCreatorPhonebook(); - CleanupStack::PushL(self); - self->ConstructL(aEngine); - return self; - } - - -CCreatorPhonebook::CCreatorPhonebook() - { - iAddAllFields = EFalse; - } - -void CCreatorPhonebook::ConstructL(CCreatorEngine* aEngine) - { - LOGSTRING("Creator: CCreatorPhonebook::ConstructL"); - - iEngine = aEngine; - - iPhonebookWrapper = CCreatorPhonebookWrapper::NewL(); - - SetDefaultParameters(); - } - - -CCreatorPhonebook::~CCreatorPhonebook() - { - LOGSTRING("Creator: CCreatorPhonebook::~CCreatorPhonebook"); - - if ( iContactsToDelete.Count() ) - { - TRAP_IGNORE( StoreLinksForDeleteL( iContactsToDelete, KUidDictionaryUidContacts ) ); - } - if ( iContactGroupsToDelete.Count() ) - { - TRAP_IGNORE( StoreLinksForDeleteL( iContactGroupsToDelete, KUidDictionaryUidContactGroups ) ); - } - - if( iPhonebookWrapper ) - { - delete iPhonebookWrapper; - } - - if (iParameters) - { - delete iParameters; - } - - } - -//---------------------------------------------------------------------------- - -TInt CCreatorPhonebook::CreateContactEntryL(CCreatorModuleBaseParameters *aParameters) - { - TInt err = KErrNone; - delete iParameters; - iParameters = 0; - CPhonebookParameters* parameters = 0; - - if( aParameters == 0 ) - { - InitializeContactParamsL(); - parameters = iParameters; - } - else - { - parameters = (CPhonebookParameters*) aParameters; - } - - int numberOfFields = parameters->iContactFields.size(); - // create a new contact item - - TUint32 contactId = iPhonebookWrapper->CreateContactEntryL( parameters->iContactFields ); //wrapper should return contact id to store - iContactsToDelete.Append( contactId ); - - - // If this contact has a link id in script (i.e. belongs to a contact-set), we must cache the contact id: - if( parameters->ScriptLinkId() > 0 ) - { - RPointerArray& contactsets = ContactLinkCache::Instance()->ContactSets(); - TBool setFound(EFalse); - for(TInt i = 0; i < contactsets.Count(); ++i ) - { - if( contactsets[i]->LinkId() == parameters->ScriptLinkId() ) - { - if( contactId ) - { - contactsets[i]->AppendL( contactId ); - iContactLinkArray.AppendL( contactId ); - } - setFound = ETrue; - break; - } - } - if( !setFound ) - { - LOGSTRING2("Error: Contact set id %d not found.", parameters->ScriptLinkId()); - } - } - - return err; - } - - -//---------------------------------------------------------------------------- - - - -//---------------------------------------------------------------------------- - -void CCreatorPhonebook::DeleteAllL() - { - iPhonebookWrapper->DeleteAllL(); - } - -//---------------------------------------------------------------------------- -void CCreatorPhonebook::DeleteAllCreatedByCreatorL() - { - LOGSTRING("Creator: CCreatorPhonebook::DeleteAllCreatedByCreatorL"); - DeleteItemsCreatedWithCreatorL( KUidDictionaryUidContacts ); - } - -//---------------------------------------------------------------------------- -void CCreatorPhonebook::DeleteAllGroupsL() - { - LOGSTRING("Creator: CCreatorPhonebook::DeleteAllGroupsL"); - iPhonebookWrapper->DeleteAllGroupsL(); - } - -//---------------------------------------------------------------------------- -void CCreatorPhonebook::DeleteAllGroupsCreatedByCreatorL() - { - LOGSTRING("Creator: CCreatorPhonebook::DeleteAllGroupsCreatedByCreatorL"); - DeleteItemsCreatedWithCreatorL( KUidDictionaryUidContactGroups ); - } - -//---------------------------------------------------------------------------- -void CCreatorPhonebook::DeleteContactsL( RArray& aContactsToDelete, TUid aStoreUid ) - { - iPhonebookWrapper->DeleteContactsL( aContactsToDelete, aStoreUid ); - } - -//---------------------------------------------------------------------------- - - -void CCreatorPhonebook::DeleteItemsCreatedWithCreatorL( TUid aStoreUid ) - { - CDictionaryFileStore* store = iEngine->FileStoreLC(); - User::LeaveIfNull( store ); - - RArray contacts; - // backup previous contact links from store - // otherwise they would be overwritten when calling out.WriteL - TUint32 creatorLink; - if ( store->IsPresentL( aStoreUid ) ) - { - RDictionaryReadStream in; - in.OpenLC( *store, aStoreUid ); - TRAP_IGNORE( - do{ - creatorLink = in.ReadUint32L(); - contacts.AppendL( creatorLink ); - }while( creatorLink ); - ); - - CleanupStack::PopAndDestroy(); // in - } - - - iPhonebookWrapper->DeleteContactsL( contacts, aStoreUid ); - - store->Remove( aStoreUid ); - store->CommitL(); - - CleanupStack::PopAndDestroy( store ); - } - -//---------------------------------------------------------------------------- -void CCreatorPhonebook::DoDeleteItemsCreatedWithCreatorL( TUid /*aStoreUid*/, CDictionaryFileStore* /*aStore*/ ) - { - - } - -//---------------------------------------------------------------------------- -TBool CCreatorPhonebook::HasOtherThanGroupsL() - { - LOGSTRING("Creator: CCreatorPhonebook::HasOtherThanGroupsL"); - TBool result( EFalse ); - return result; - } - - -//---------------------------------------------------------------------------- - - -//---------------------------------------------------------------------------- -void CCreatorPhonebook::StoreLinksForDeleteL( RArray& aLinks, TUid aStoreUid ) - { - LOGSTRING("Creator: CCreatorPhonebook::StoreLinksForDeleteL"); - CDictionaryFileStore* store = iEngine->FileStoreLC(); - User::LeaveIfNull( store ); - - // backup previous contact links from store - // otherwise they would be overwritten when calling out.WriteL - TUint32 previousLink; - if ( store->IsPresentL( aStoreUid ) ) - { - RDictionaryReadStream in; - in.OpenLC( *store, aStoreUid ); - bool r = false; - TRAP_IGNORE( - do{ //iContactMngr->CreateLinksLC( in )) != NULL ) // will leave with KErrEof - previousLink = in.ReadUint32L(); - iPreviousDeleteLinks.Append( previousLink ); - if(previousLink) - { - r=true; - } - else - { - r=false; - } - }while(r==true); ); - - CleanupStack::PopAndDestroy(); // in - } - - RDictionaryWriteStream out; - out.AssignLC( *store, aStoreUid ); - - // restore previous links - for ( TInt i = 0; i < iPreviousDeleteLinks.Count(); i++ ) - { - out.WriteUint32L( iPreviousDeleteLinks[i] ); - } - - // write new links - for(int i=0; i < aLinks.Count(); i++) - { - out.WriteUint32L( aLinks[i] ); - } - out.CommitL(); - CleanupStack::PopAndDestroy(); // out - - store->CommitL(); - - CleanupStack::PopAndDestroy( store ); - } - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -void CCreatorPhonebook::InitializeContactParamsL() - { - LOGSTRING("Creator: CCreatorPhonebook::InitializeContactParamsL"); - - iParameters = new (ELeave) CPhonebookParameters; - - iParameters->iNumberOfPhoneNumberFields = iNumberOfPhoneNumberFields; - iParameters->iNumberOfURLFields = iNumberOfURLFields; - iParameters->iNumberOfEmailAddressFields = iNumberOfEmailAddressFields; - - TPtrC fname = iEngine->RandomString(CCreatorEngine::EFirstName); - TPtrC lname = iEngine->RandomString(CCreatorEngine::ESurname); - - - if( iAddAllFields ) - { - TInt textFieldCount = sizeof(CreatorPbkMiscTextFields) / sizeof(DetailFieldInfo); - for( TInt tfIndex = 0; tfIndex < textFieldCount; ++tfIndex ) - { - CCreatorContactField* field = CCreatorContactField::NewL(); - CleanupStack::PushL(field); - field->AddFieldToParamL( iEngine,iParameters, CreatorPbkMiscTextFields[tfIndex].iFieldCode, CreatorPbkMiscTextFields[tfIndex].iRandomType ); - CleanupStack::Pop(field); - } - - // Add binary fields: - - RFs& fs = CCoeEnv::Static()->FsSession(); - - TBuf srcPath; - iEngine->RandomPictureFileL(srcPath); - TBuf destPath(KTempPath); - - if(!BaflUtils::FolderExists( fs, destPath )) - { - BaflUtils::EnsurePathExistsL( fs, destPath ); - } - - TInt err=BaflUtils::CopyFile( fs, srcPath, destPath ); - - TParse temp; - temp.Set( srcPath,NULL,NULL ); - destPath.Append(temp.NameAndExt()); - TPtrC picture; - picture.Set(destPath); - CCreatorContactField* picturefield = CCreatorContactField::NewL(); - CleanupStack::PushL(picturefield); - picturefield->AddFieldToParamL( iParameters, CCreatorPhonebookWrapper::EThumbnailPic, picture ); - CleanupStack::Pop(picturefield); - // Add date-time fields: - TPtrC anniv; - TBuf<20> timeString; - TTime datetime = iEngine->RandomDate( CCreatorEngine::EDateFuture ); - _LIT(KDateString,"%D%M%Y%/0%1%/1%2%/2%3%/3"); - TRAP_IGNORE( datetime.FormatL(timeString, KDateString) ); - - anniv.Set(timeString); - - CCreatorContactField* fieldAnniv = CCreatorContactField::NewL(); - CleanupStack::PushL( fieldAnniv ); - fieldAnniv->AddFieldToParamL(iParameters,CCreatorPhonebookWrapper::EAnniversary, anniv ); - CleanupStack::Pop( fieldAnniv ); - //*************************************************************************** - - } - else - { - CCreatorContactField* field = CCreatorContactField::NewL(); - CleanupStack::PushL(field); - field->AddFieldToParamL( iParameters, CCreatorPhonebookWrapper::EFirstName, fname ); - field->AddFieldToParamL( iParameters, CCreatorPhonebookWrapper::ELastName, lname ); - CleanupStack::Pop(field); - } - - // Phone numbers: - TInt phoneFieldCount = sizeof(CreatorPbkPhoneNumberFields) / sizeof(TInt); - - TInt inc=0; - for( TInt i=0; i= phoneFieldCount ) - { - inc = 0; - } - - CCreatorContactField* field = CCreatorContactField::NewL(); - CleanupStack::PushL(field); - field->AddFieldToParamL(iEngine, iParameters, CreatorPbkPhoneNumberFields[inc] ); - CleanupStack::Pop(field); - - inc++; - } - - - - // URLs: - TInt urlFieldCount = sizeof(CreatorPbkUrlFields) / sizeof(TInt); - inc = 0; - for( TInt i=0; i= urlFieldCount ) - { - inc = 0; - } - - CCreatorContactField* field = CCreatorContactField::NewL(); - CleanupStack::PushL(field); - field->AddFieldToParamL(iEngine, iParameters, CreatorPbkUrlFields[inc] ); - CleanupStack::Pop(field); - inc++; - } - - // EMail addresses: - TInt emailFieldCount = sizeof(CreatorPbkEmailFields) / sizeof(TInt); - inc = 0; - for( int i=0; i= emailFieldCount ) - { - inc = 0; - } - CCreatorContactField* field = CCreatorContactField::NewL(); - CleanupStack::PushL(field); - field->AddFieldToParamL(iEngine, iParameters, CreatorPbkEmailFields[inc] ); - CleanupStack::Pop(field); - inc++; - } - - TestPrintOut(iParameters); - - } - -void CCreatorPhonebook::TestPrintOut(CPhonebookParameters* aParam) - { - LOGSTRING("Creator: CCreatorPhonebook::TestPrintOut"); - for( TCreatorContactFields::iterator it = aParam->iContactFields.begin(); it != aParam->iContactFields.end(); ++it) - { - HBufC* temp = (*it).second; - if(temp) - { - LOGSTRING3("Type: %d Content:%S ", (*it).first, &temp->Des() ); - } - } - } - -// Checks if the link is a group or not -TBool CCreatorPhonebook::IsContactGroupL( TUint32& aLink ) - { - //not used right now - return EFalse; - } - - -TInt CCreatorPhonebook::CreateGroupEntryL(CCreatorModuleBaseParameters *aParameters) - { - LOGSTRING("Creator: CCreatorPhonebook::CreateGroupEntryL"); - TInt err = KErrNone; - - delete iParameters; - iParameters = 0; - - CPhonebookParameters* parameters = (CPhonebookParameters*) aParameters; - - if( !parameters ) - { - iParameters = new (ELeave) CPhonebookParameters; - iParameters->iContactsInGroup = iContactsInGroup; - iParameters->iGroupName->Des().Copy( iEngine->RandomString(CCreatorEngine::EGroupName) ); - iParameters->iGroupName->Des().Append( _L(" #") ); - iParameters->iGroupName->Des().AppendNum( iEngine->RandomNumber(1000, 9999) ); - parameters = iParameters; - } - - // create a new contact group - - TUint32 newGroupId = iPhonebookWrapper->CreateGroupEntryL( parameters->iGroupName ); - - // define amounts of contacts to be added to the group - TInt amountOfContactsToBeAdded = 0; - if (parameters->iContactsInGroup == KCreateRandomAmountOfGroups) - { - amountOfContactsToBeAdded = iEngine->RandomNumber(30); - } - else - { - amountOfContactsToBeAdded = parameters->iContactsInGroup; - } - - if( parameters->iLinkIds.Count() > 0 ) - { - for( TInt i = 0; i < parameters->iLinkIds.Count(); ++i ) - { - const CCreatorContactSet& set = ContactLinkCache::Instance()->ContactSet(parameters->iLinkIds[i].iLinkId); - - const RArray links = set.ContactLinks();//ContactLinkCache::Instance()->ContactSets();//set.ContactLinks(); - TInt numberOfExplicitLinks = links.Count(); // Number of defined contacts in contact-set - TInt numberOfExistingContacts = set.NumberOfExistingContacts(); // Number of existing contacts in contact-set - TInt maxAmount = numberOfExplicitLinks + numberOfExistingContacts; - - if( parameters->iLinkIds[i].iLinkAmount > 0 ) - maxAmount = parameters->iLinkIds[i].iLinkAmount; // Max amount is limited - - TInt addedMembers = 0; - - for( TInt j = 0; j < links.Count() && addedMembers < maxAmount; ++j ) - { - - addedMembers += iPhonebookWrapper->AddContactToGroup(newGroupId,links[j]); - - } - if( addedMembers < maxAmount ) - { - // Add existing contacts, withing the limits set by maxAmount: - amountOfContactsToBeAdded += maxAmount - addedMembers; - } - } - } - if( amountOfContactsToBeAdded > 0 ) - { - TInt addedContacts = iPhonebookWrapper->AddToGroup(newGroupId, amountOfContactsToBeAdded); - - } - - // store the link to contact, so that Creator is able to delete - // it when user requests deletion of contacts that were created with Creator - iContactGroupsToDelete.Append( newGroupId ); - - return err; - } - -//---------------------------------------------------------------------------- - -TInt CCreatorPhonebook::CreateSubscribedContactEntryL(CCreatorModuleBaseParameters* /*aParameters*/) - { - LOGSTRING("Creator: CCreatorPhonebook::CreateSubscribedContactEntryL"); - - return KErrNotSupported; - } - -//---------------------------------------------------------------------------- - -CCreatorContactField::CCreatorContactField() - { - } -CCreatorContactField::~CCreatorContactField() - { - } - -CCreatorContactField* CCreatorContactField::NewL() - { - CCreatorContactField* self = new (ELeave) CCreatorContactField(); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - return self; - } -void CCreatorContactField::ConstructL() - { - } - - -void CCreatorContactField::AddFieldToParamL( CCreatorEngine* aEngine, CPhonebookParameters* aParam, TInt aType, TInt aRand ) - { - HBufC* content = NULL; - if( aRand == KErrNotFound ) - { - TInt textFieldCount = sizeof(CreatorPbkPhoneNumberFields)/sizeof(TInt);; - for( TInt tfIndex = 0; tfIndex < textFieldCount; ++tfIndex ) - { - if( CreatorPbkPhoneNumberFields[tfIndex] == aType ) - { - content = aEngine->RandomString(CCreatorEngine::EPhoneNumber).AllocL(); - break; - } - } - - textFieldCount = sizeof(CreatorPbkUrlFields)/sizeof(TInt);; - for( TInt tfIndex = 0; tfIndex < textFieldCount; ++tfIndex ) - { - if( CreatorPbkUrlFields[tfIndex] == aType ) - { - content = aEngine->CreateHTTPUrlLC(); - CleanupStack::Pop(); - break; - } - } - textFieldCount = sizeof(CreatorPbkEmailFields)/sizeof(TInt);; - for( TInt tfIndex = 0; tfIndex < textFieldCount; ++tfIndex ) - { - if( CreatorPbkEmailFields[tfIndex] == aType ) - { - content = aEngine->CreateEmailAddressLC(); - CleanupStack::Pop(); - break; - } - } - - - //if there is textfield without specified random number - textFieldCount = sizeof(CreatorPbkMiscTextFields) / sizeof(DetailFieldInfo); - for( TInt tfIndex = 0; tfIndex < textFieldCount; ++tfIndex ) - { - if( CreatorPbkMiscTextFields[tfIndex].iFieldCode == aType && CreatorPbkMiscTextFields[tfIndex].iRandomType != RND_TYPE_UNDEF ) - { - TInt rand = CreatorPbkMiscTextFields[tfIndex].iRandomType; - content = aEngine->RandomString((CCreatorEngine::TRandomStringType) rand).AllocL(); - break; - } - } - } - - if( aRand != KErrNotFound && aRand != RND_TYPE_UNDEF ) - { - TInt textFieldCount = sizeof(CreatorPbkMiscTextFields) / sizeof(DetailFieldInfo); - for( TInt tfIndex = 0; tfIndex < textFieldCount; ++tfIndex ) - { - if( CreatorPbkMiscTextFields[tfIndex].iFieldCode == aType ) - { - content = aEngine->RandomString((CCreatorEngine::TRandomStringType) aRand).AllocL(); - } - } - } - - aParam->iContactFields.insert( TCreatorContactField(aType, content) ); - } - -void CCreatorContactField::AddFieldToParamL( CPhonebookParameters* aParam, TInt aType, TPtrC aContent ) - { - aParam->iContactFields.insert( TCreatorContactField(aType, aContent.AllocL()) ); - } - -//---------------------------------------------------------------------------- - -//---------------------------------------------------------------------------- -