creator/engine/src/creator_phonebook.cpp
changeset 55 2d9cac8919d3
parent 53 819e59dfc032
child 56 392f7045e621
--- a/creator/engine/src/creator_phonebook.cpp	Mon Oct 04 10:09:02 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 <bautils.h> 
-
-_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.AppendL( 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<CCreatorContactSet>& 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<TUint32>& aContactsToDelete, TUid aStoreUid	)
-    {
-	iPhonebookWrapper->DeleteContactsL( aContactsToDelete, aStoreUid );
-    }
-
-//----------------------------------------------------------------------------
-
-
-void CCreatorPhonebook::DeleteItemsCreatedWithCreatorL( TUid aStoreUid )
-    {
-	CDictionaryFileStore* store = iEngine->FileStoreLC();
-    User::LeaveIfNull( store );
-    
-    RArray<TUint32> 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<TUint32>& 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.AppendL( 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<KMaxFileName> srcPath;
-		iEngine->RandomPictureFileL(srcPath);
-		TBuf<KMaxFileName> 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<iNumberOfPhoneNumberFields; i++ )
-    	{
-    
-		if(inc >= 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<iNumberOfURLFields; i++ )
-        {
-    
-		if(inc >= 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<iNumberOfEmailAddressFields; i++ )
-    	{
-		if(inc >= 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<TUint32> 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.AppendL( 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()) );
-    }
-
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-