creator/engine/src/creator_contactelement.cpp
changeset 19 4b22a598b890
parent 17 4f2773374eff
child 23 c9bf25a20c9f
equal deleted inserted replaced
17:4f2773374eff 19:4b22a598b890
    17 
    17 
    18 
    18 
    19 
    19 
    20 #include "creator_contactelement.h"
    20 #include "creator_contactelement.h"
    21 #include "creator_traces.h"
    21 #include "creator_traces.h"
       
    22 #include "creator_phonebook.h"
    22 #include "creator_factory.h"
    23 #include "creator_factory.h"
    23 #include "creator_contactsetcache.h"
    24 #include "creator_contactsetcache.h"
    24 #include <xml/documentparameters.h>
    25 #include <xml/documentparameters.h>
       
    26 #include <qtcontacts.h>
    25 
    27 
    26 using namespace Xml;
    28 using namespace Xml;
    27 using namespace creatorcontact;
    29 using namespace creatorcontact;
    28 
    30 
    29 /**
    31 /**
    38     
    40     
    39 class FieldMapping
    41 class FieldMapping
    40 {
    42 {
    41 public:
    43 public:
    42     TPtrC iElementName;
    44     TPtrC iElementName;
    43     TInt  iFieldCode;
    45     QString iDetail;
       
    46     QString iContext;
       
    47     QString  iFieldCode;
    44     TContactFieldDataType iDataType;
    48     TContactFieldDataType iDataType;
    45 };
    49 };
       
    50 //*********************************************************************************
       
    51 FieldMapping fieldMappingTbl[] = {
       
    52        {TPtrC(KFirstname), (QContactName::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactName::FieldFirstName).operator QString() /*R_VPBK_FIELD_TYPE_FIRSTNAME*/, EDataTypeText},
       
    53        {TPtrC(KLastname), (QContactName::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactName::FieldLastName).operator QString() /*R_VPBK_FIELD_TYPE_LASTNAME*/, EDataTypeText},
       
    54        {TPtrC(KPrefix), (QContactName::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactName::FieldPrefix).operator QString()/*R_VPBK_FIELD_TYPE_PREFIX*/, EDataTypeText},
       
    55        {TPtrC(KSuffix), (QContactName::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactName::FieldSuffix).operator QString()/*R_VPBK_FIELD_TYPE_SUFFIX*/, EDataTypeText},
       
    56        {TPtrC(KSecondname), (QContactName::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactName::FieldMiddleName).operator QString()/*R_VPBK_FIELD_TYPE_SECONDNAME*/, EDataTypeText},
       
    57        {TPtrC(KLandphoneHome), (QContactPhoneNumber::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactPhoneNumber::SubTypeLandline).operator QString()/*R_VPBK_FIELD_TYPE_LANDPHONEHOME*/, EDataTypeText},
       
    58        
       
    59        {TPtrC(KMobilephoneHome), (QContactPhoneNumber::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactPhoneNumber::SubTypeMobile).operator QString()/*R_VPBK_FIELD_TYPE_MOBILEPHONEHOME*/, EDataTypeText},
       
    60        {TPtrC(KVideonumberHome), (QContactPhoneNumber::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactPhoneNumber::SubTypeVideo).operator QString()/*R_VPBK_FIELD_TYPE_VIDEONUMBERHOME*/, EDataTypeText},
       
    61        {TPtrC(KFaxnumberHome), (QContactPhoneNumber::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactPhoneNumber::SubTypeFacsimile).operator QString()/*R_VPBK_FIELD_TYPE_FAXNUMBERHOME*/, EDataTypeText},
       
    62        //{TPtrC(KVoipHome), (QContactPhoneNumber::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactPhoneNumber::SubType).operator QString()/*R_VPBK_FIELD_TYPE_VOIPHOME*/, EDataTypeText},
       
    63        {TPtrC(KEmailHome), (QContactEmailAddress::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),""/*R_VPBK_FIELD_TYPE_EMAILHOME*/, EDataTypeText},
       
    64        {TPtrC(KUrlHome), (QContactUrl::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactUrl::SubTypeHomePage).operator QString()/*R_VPBK_FIELD_TYPE_URLHOME*/, EDataTypeText},
       
    65        //{TPtrC(KAddrlabelHome), R_VPBK_FIELD_TYPE_ADDRLABELHOME, EDataTypeText},
       
    66        {TPtrC(KAddrpoHome), (QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactAddress::FieldPostOfficeBox).operator QString()/*R_VPBK_FIELD_TYPE_ADDRPOHOME*/, EDataTypeText},
       
    67        
       
    68       // {TPtrC(KAddrextHome), (QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactAddress::Field).operator QString()/*R_VPBK_FIELD_TYPE_ADDREXTHOME*/, EDataTypeText},
       
    69        {TPtrC(KAddrstreetHome), (QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactAddress::FieldStreet).operator QString()/*R_VPBK_FIELD_TYPE_ADDRSTREETHOME*/, EDataTypeText},
       
    70        {TPtrC(KAddrlocalHome), (QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactAddress::FieldLocality).operator QString()/*R_VPBK_FIELD_TYPE_ADDRLOCALHOME*/, EDataTypeText},
       
    71        {TPtrC(KAddrregionHome), (QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactAddress::FieldRegion).operator QString()/*R_VPBK_FIELD_TYPE_ADDRREGIONHOME*/, EDataTypeText},
       
    72        {TPtrC(KAddrpostcodeHome), (QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactAddress::FieldPostcode).operator QString()/*R_VPBK_FIELD_TYPE_ADDRPOSTCODEHOME*/, EDataTypeText},
       
    73        {TPtrC(KAddrcountryHome), (QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactAddress::FieldCountry).operator QString()/*R_VPBK_FIELD_TYPE_ADDRCOUNTRYHOME*/, EDataTypeText},
       
    74        {TPtrC(KJobtitle), (QContactOrganization::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactOrganization::FieldTitle).operator QString()/*R_VPBK_FIELD_TYPE_JOBTITLE*/, EDataTypeText},
       
    75        {TPtrC(KCompanyname), (QContactOrganization::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactOrganization::FieldName).operator QString()/*R_VPBK_FIELD_TYPE_COMPANYNAME*/, EDataTypeText},
       
    76        
       
    77        {TPtrC(KLandphoneWork), (QContactPhoneNumber::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactPhoneNumber::SubTypeLandline).operator QString()/*R_VPBK_FIELD_TYPE_LANDPHONEWORK*/, EDataTypeText},
       
    78        {TPtrC(KMobilephoneWork), (QContactPhoneNumber::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactPhoneNumber::SubTypeMobile).operator QString()/*R_VPBK_FIELD_TYPE_MOBILEPHONEWORK*/, EDataTypeText},
       
    79        {TPtrC(KVideonumberWork), (QContactPhoneNumber::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactPhoneNumber::SubTypeVideo).operator QString()/*R_VPBK_FIELD_TYPE_VIDEONUMBERWORK*/, EDataTypeText},
       
    80        {TPtrC(KFaxnumberWork), (QContactPhoneNumber::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactPhoneNumber::SubTypeFacsimile).operator QString()/*R_VPBK_FIELD_TYPE_FAXNUMBERWORK*/, EDataTypeText},
       
    81        //{TPtrC(KVoipWork), R_VPBK_FIELD_TYPE_VOIPWORK, EDataTypeText},
       
    82        {TPtrC(KEmailWork), (QContactEmailAddress::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),""/*R_VPBK_FIELD_TYPE_EMAILWORK*/, EDataTypeText},
       
    83        {TPtrC(KUrlWork), (QContactUrl::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactUrl::SubTypeHomePage).operator QString()/*R_VPBK_FIELD_TYPE_URLWORK*/, EDataTypeText},
       
    84        //{TPtrC(KAddrlabelWork), R_VPBK_FIELD_TYPE_ADDRLABELWORK, EDataTypeText},
       
    85        
       
    86        {TPtrC(KAddrpoWork), (QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactAddress::FieldPostOfficeBox).operator QString()/*R_VPBK_FIELD_TYPE_ADDRPOWORK*/, EDataTypeText},
       
    87        //{TPtrC(KAddrextWork), (QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactAddress::FieldPostOfficeBox).operator QString()/*R_VPBK_FIELD_TYPE_ADDREXTWORK*/, EDataTypeText},
       
    88        {TPtrC(KAddrstreetWork), (QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactAddress::FieldStreet).operator QString()/*R_VPBK_FIELD_TYPE_ADDRSTREETWORK*/, EDataTypeText},
       
    89        {TPtrC(KAddrlocalWork), (QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactAddress::FieldLocality).operator QString()/*R_VPBK_FIELD_TYPE_ADDRLOCALWORK*/, EDataTypeText},
       
    90        {TPtrC(KAddrregionWork), (QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactAddress::FieldRegion).operator QString()/*R_VPBK_FIELD_TYPE_ADDRREGIONWORK*/, EDataTypeText},
       
    91        {TPtrC(KAddrpostcodeWork), (QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactAddress::FieldPostcode).operator QString()/*R_VPBK_FIELD_TYPE_ADDRPOSTCODEWORK*/, EDataTypeText},
       
    92        {TPtrC(KAddrcountryWork), (QContactAddress::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactAddress::FieldCountry).operator QString()/*R_VPBK_FIELD_TYPE_ADDRCOUNTRYWORK*/, EDataTypeText},
       
    93        
       
    94        {TPtrC(KLandphoneGen), (QContactPhoneNumber::DefinitionName).operator QString(), "",(QContactPhoneNumber::SubTypeLandline).operator QString(), EDataTypeText},
       
    95        {TPtrC(KMobilephoneGen), (QContactPhoneNumber::DefinitionName).operator QString(), "",(QContactPhoneNumber::SubTypeMobile).operator QString(), EDataTypeText},
       
    96        {TPtrC(KVideonumberGen), (QContactPhoneNumber::DefinitionName).operator QString(), "",(QContactPhoneNumber::SubTypeVideo).operator QString(), EDataTypeText},
       
    97        {TPtrC(KFaxnumberGen), (QContactPhoneNumber::DefinitionName).operator QString(), "",(QContactPhoneNumber::SubTypeFacsimile).operator QString(), EDataTypeText},
       
    98      //  {TPtrC(KVoipGen), R_VPBK_FIELD_TYPE_VOIPGEN, EDataTypeText},
       
    99      //  {TPtrC(KPoc), R_VPBK_FIELD_TYPE_POC, EDataTypeText},
       
   100      //  {TPtrC(KSwis), R_VPBK_FIELD_TYPE_SWIS, EDataTypeText},
       
   101      //  {TPtrC(KSip), R_VPBK_FIELD_TYPE_SIP, EDataTypeText},
       
   102        {TPtrC(KEmailGen), (QContactEmailAddress::DefinitionName).operator QString(), "","", EDataTypeText},
       
   103        
       
   104        {TPtrC(KUrlGen), (QContactUrl::DefinitionName).operator QString(), "","", EDataTypeText},
       
   105      //  {TPtrC(KAddrlabelGen), R_VPBK_FIELD_TYPE_ADDRLABELGEN, EDataTypeText},
       
   106        {TPtrC(KAddrpoGen), (QContactAddress::DefinitionName).operator QString(), "",(QContactAddress::FieldPostOfficeBox).operator QString()/*R_VPBK_FIELD_TYPE_ADDRPOGEN*/, EDataTypeText},
       
   107      //  {TPtrC(KAddrextGen), R_VPBK_FIELD_TYPE_ADDREXTGEN, EDataTypeText},
       
   108        {TPtrC(KAddrstreetGen), (QContactAddress::DefinitionName).operator QString(), "" , (QContactAddress::FieldStreet).operator QString()/*R_VPBK_FIELD_TYPE_ADDRSTREETGEN*/, EDataTypeText},
       
   109        {TPtrC(KAddrlocalGen), (QContactAddress::DefinitionName).operator QString(), "" , (QContactAddress::FieldLocality).operator QString()/*R_VPBK_FIELD_TYPE_ADDRLOCALGEN*/, EDataTypeText},
       
   110        {TPtrC(KAddrregionGen), (QContactAddress::DefinitionName).operator QString(), "" , (QContactAddress::FieldRegion).operator QString()/*R_VPBK_FIELD_TYPE_ADDRREGIONGEN*/, EDataTypeText},
       
   111        {TPtrC(KAddrpostcodeGen), (QContactAddress::DefinitionName).operator QString(), "" , (QContactAddress::FieldPostcode).operator QString()/*R_VPBK_FIELD_TYPE_ADDRPOSTCODEGEN*/, EDataTypeText},
       
   112        {TPtrC(KAddrcountryGen), (QContactAddress::DefinitionName).operator QString(), "" , (QContactAddress::FieldCountry).operator QString()/*R_VPBK_FIELD_TYPE_ADDRCOUNTRYGEN*/, EDataTypeText},
       
   113        
       
   114        {TPtrC(KPagerNumber),(QContactPhoneNumber::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactPhoneNumber::SubTypePager).operator QString()/* R_VPBK_FIELD_TYPE_PAGERNUMBER*/, EDataTypeText},
       
   115        {TPtrC(KDtmfString), (QContactPhoneNumber::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactPhoneNumber::SubTypeDtmfMenu).operator QString()/* R_VPBK_FIELD_TYPE_DTMFSTRING*/, EDataTypeText},
       
   116      //  {TPtrC(KWvAddress), R_VPBK_FIELD_TYPE_WVADDRESS, EDataTypeText},
       
   117        {TPtrC(KDate), (QContactBirthday::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactBirthday::FieldBirthday).operator QString()/* R_VPBK_FIELD_TYPE_DATE*/, EDataTypeDateTime},
       
   118        {TPtrC(KNote), (QContactNote::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(), (QContactNote::FieldNote).operator QString()/* R_VPBK_FIELD_TYPE_NOTE*/, EDataTypeText},
       
   119        {TPtrC(KThumbnailPath), (QContactAvatar::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactAvatar::SubTypeImage).operator QString()/* R_VPBK_FIELD_TYPE_THUMBNAILPIC*/, EDataTypeText},
       
   120       // {TPtrC(KThumbnailId), R_VPBK_FIELD_TYPE_THUMBNAILPIC, EDataTypeText},
       
   121       // {TPtrC(KRingTone),  R_VPBK_FIELD_TYPE_RINGTONE, EDataTypeText},
       
   122       // {TPtrC(KRingToneId), R_VPBK_FIELD_TYPE_RINGTONE, EDataTypeText},
       
   123        
       
   124        //{TPtrC(KCallerobjImg), R_VPBK_FIELD_TYPE_CALLEROBJIMG, EDataTypeText},
       
   125       // {TPtrC(KCallerobjText), R_VPBK_FIELD_TYPE_CALLEROBJTEXT, EDataTypeText},
       
   126        {TPtrC(KMiddlename), (QContactName::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactName::FieldMiddleName).operator QString()/*R_VPBK_FIELD_TYPE_MIDDLENAME*/, EDataTypeText},
       
   127        {TPtrC(KDepartment), (QContactOrganization::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactOrganization::FieldDepartment).operator QString()/*R_VPBK_FIELD_TYPE_DEPARTMENT*/, EDataTypeText},
       
   128        {TPtrC(KAsstname), (QContactOrganization::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactOrganization::FieldAssistantName).operator QString()/*R_VPBK_FIELD_TYPE_ASSTNAME*/, EDataTypeText},
       
   129        {TPtrC(KSpouse), (QContactFamily::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactFamily::FieldSpouse).operator QString()/* R_VPBK_FIELD_TYPE_SPOUSE*/, EDataTypeText},
       
   130        {TPtrC(KChildren), (QContactFamily::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactFamily::FieldChildren).operator QString()/*R_VPBK_FIELD_TYPE_CHILDREN, EDataTypeText},
       
   131        {TPtrC(KAsstphone), (QContactPhoneNumber::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactPhoneNumber::SubTypeAssistant).operator QString()/* R_VPBK_FIELD_TYPE_ASSTPHONE*/, EDataTypeText},
       
   132        
       
   133        {TPtrC(KCarphone), (QContactPhoneNumber::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactPhoneNumber::SubTypeCar).operator QString()/* R_VPBK_FIELD_TYPE_CARPHONE*/, EDataTypeText},
       
   134        {TPtrC(KAnniversary), (QContactAnniversary::DefinitionName).operator QString(), (QContactDetail::ContextWork).operator QString(),(QContactAnniversary::SubTypeEmployment).operator QString()/*R_VPBK_FIELD_TYPE_ANNIVERSARY*/, EDataTypeDateTime},
       
   135      //  {TPtrC(KSyncclass), R_VPBK_FIELD_TYPE_SYNCCLASS, EDataTypeText},
       
   136      //  {TPtrC(KLocPrivacy), R_VPBK_FIELD_TYPE_LOCPRIVACY, EDataTypeText},
       
   137        {TPtrC(KGenlabel), (QContactDisplayLabel::DefinitionName).operator QString(), (QContactDetail::ContextHome).operator QString(),(QContactDisplayLabel::FieldLabel).operator QString()/*R_VPBK_FIELD_TYPE_GENLABEL*/, EDataTypeText}
       
   138 };
       
   139 
       
   140 //*********************************************************************************
    46 
   141 
    47 CCreatorContactElementBase* CCreatorContactElementBase::NewL(CCreatorEngine* aEngine, const TDesC& aName, const TDesC& aContext)
   142 CCreatorContactElementBase* CCreatorContactElementBase::NewL(CCreatorEngine* aEngine, const TDesC& aName, const TDesC& aContext)
    48     {
   143     {
    49     LOGSTRING("Creator: CCreatorContactElementBase::NewL");
   144     LOGSTRING("Creator: CCreatorContactElementBase::NewL");
    50     CCreatorContactElementBase* self = new (ELeave) CCreatorContactElementBase(aEngine);
   145     CCreatorContactElementBase* self = new (ELeave) CCreatorContactElementBase(aEngine);
    72     iIsCommandElement = ETrue;
   167     iIsCommandElement = ETrue;
    73     }
   168     }
    74 
   169 
    75 
   170 
    76 void CCreatorContactElement::ExecuteCommandL()
   171 void CCreatorContactElement::ExecuteCommandL()
       
   172     {    
       
   173     LOGSTRING("Creator: CCreatorContactElement::ExecuteCommandL");
       
   174     // Find out how many contacts should we create:
       
   175     const CCreatorScriptAttribute* contactAmountAttr = this->FindAttributeByName(KAmount);    
       
   176     TInt contactAmount = 1;    
       
   177     if( contactAmountAttr )
       
   178         {
       
   179         contactAmount = ConvertStrToIntL(contactAmountAttr->Value());
       
   180         }
       
   181     CCreatorScriptElement* fieldsElement = FindSubElement(KFields);
       
   182     TInt fieldMappingTblSize = sizeof(fieldMappingTbl)/sizeof(FieldMapping);
       
   183     for( TInt cI = 0; cI < contactAmount; ++cI )
       
   184         {
       
   185         CPhonebookParameters* param = (CPhonebookParameters*) TCreatorFactory::CreatePhoneBookParametersL();
       
   186         CleanupStack::PushL(param);
       
   187         // Loop all the field elements
       
   188         if( fieldsElement && fieldsElement->SubElements().Count() > 0 )
       
   189             {
       
   190             
       
   191             const RPointerArray<CCreatorScriptElement>& fieldList = fieldsElement->SubElements();
       
   192             
       
   193             if( fieldList.Count() == 0 )
       
   194                 {
       
   195                 
       
   196                 }
       
   197             for( TInt i = 0; i < fieldList.Count(); ++i )
       
   198                 {
       
   199                 TPtrC fieldName = fieldList[i]->Name();
       
   200                 CCreatorContactField* field = 0;
       
   201 				field = CCreatorContactField::NewL();
       
   202 
       
   203                 const CCreatorScriptAttribute* amountAttr = fieldList[i]->FindAttributeByName(KAmount);
       
   204                 const CCreatorScriptAttribute* rndLenAttr = fieldList[i]->FindAttributeByName(KRandomLength);
       
   205                 const CCreatorScriptAttribute* increaseAttr = fieldList[i]->FindAttributeByName(KIncrease);
       
   206                 TBool increase( EFalse );
       
   207                 if ( increaseAttr )
       
   208                     {
       
   209                     increase = ConvertStrToBooleanL( increaseAttr->Value() );
       
   210                     }
       
   211                 for( TInt j = 0; j < fieldMappingTblSize; ++j )
       
   212                     {
       
   213                     const FieldMapping& mapping = fieldMappingTbl[j];
       
   214                     if( fieldName == mapping.iElementName )
       
   215                         {
       
   216                         TInt rndLen = 0;
       
   217                         TPtrC content = fieldList[i]->Content();
       
   218                                                                         
       
   219 //                        MCreatorRandomDataField::TRandomLengthType randomLenType = MCreatorRandomDataField::ERandomLengthUndefined;
       
   220                     
       
   221                         if( content == TPtrC(KEmpty) || content == TPtrC(KNullDesC) )
       
   222                             {
       
   223                         // random
       
   224 							CleanupStack::PushL( field );
       
   225 							QContactDetail cntDetail = field->CreateContactDetail(iEngine,param,mapping.iDetail,mapping.iContext,mapping.iFieldCode, KErrNotFound );
       
   226                             if(!cntDetail.isEmpty())
       
   227                             	{
       
   228 								field->AddFieldToParam( param, cntDetail ); //it will do "param->iContactFields.AppendL(field);"
       
   229                             	}
       
   230                             CleanupStack::Pop( field );
       
   231                             }
       
   232                         else
       
   233                             {
       
   234 							CleanupStack::PushL( field );
       
   235                         	QContactDetail cntDetail = field->CreateContactDetail(iEngine,param,mapping.iDetail,mapping.iContext,mapping.iFieldCode, content );
       
   236                             if(!cntDetail.isEmpty())
       
   237                             	{
       
   238                         		field->AddFieldToParam( param, cntDetail ); //it will do "param->iContactFields.AppendL(field);"
       
   239                                 }
       
   240                             CleanupStack::Pop( field );
       
   241                             }
       
   242 
       
   243                         break;
       
   244                         
       
   245                         }
       
   246                     }
       
   247 
       
   248                 }
       
   249             } 
       
   250         else
       
   251             {
       
   252             // No fields specified, so add all fields with random content:
       
   253             for( TInt i = 0; i < fieldMappingTblSize; ++i )
       
   254                 {
       
   255                 if( fieldMappingTbl[i].iElementName == KThumbnailId || 
       
   256                     fieldMappingTbl[i].iElementName == KRingToneId )
       
   257                     {
       
   258                     // Skip thumbnail and ringtone IDs, since they are duplicates with thumbnailpath and ringtonepath
       
   259                     continue;
       
   260                     }
       
   261                 
       
   262                 CCreatorContactField* field = CCreatorContactField::NewL();
       
   263                 CleanupStack::PushL( field );
       
   264                 QContactDetail cntDetail = field->CreateContactDetail(iEngine,param,fieldMappingTbl[i].iDetail,fieldMappingTbl[i].iContext,fieldMappingTbl[i].iFieldCode, KErrNotFound );
       
   265                 if(!cntDetail.isEmpty())
       
   266                 	{
       
   267 					field->AddFieldToParam( param, cntDetail ); //it will do "param->iContactFields.AppendL(field);"
       
   268                 	}
       
   269                 CleanupStack::Pop( field );
       
   270                 }
       
   271             }
       
   272         iEngine->AppendToCommandArrayL(ECmdCreatePhoneBookEntryContacts, param);
       
   273         iParameters.AppendL(param); // Save the pointer to the parametes. 
       
   274         CleanupStack::Pop(param);
       
   275         }
       
   276     }
       
   277 
       
   278 
       
   279 /*
       
   280 void CCreatorContactElement::ExecuteCommandL()
    77     {}
   281     {}
    78 
   282 */
    79 CCreatorContactSetElement* CCreatorContactSetElement::NewL(CCreatorEngine* aEngine, const TDesC& aName, const TDesC& aContext)
   283 CCreatorContactSetElement* CCreatorContactSetElement::NewL(CCreatorEngine* aEngine, const TDesC& aName, const TDesC& aContext)
    80     {
   284     {
    81     LOGSTRING("Creator: CCreatorContactSetElement::NewL");
   285     LOGSTRING("Creator: CCreatorContactSetElement::NewL");
    82     CCreatorContactSetElement* self = new (ELeave) CCreatorContactSetElement(aEngine);
   286     CCreatorContactSetElement* self = new (ELeave) CCreatorContactSetElement(aEngine);
    83     CleanupStack::PushL(self);
   287     CleanupStack::PushL(self);
   145     iIsCommandElement = ETrue;
   349     iIsCommandElement = ETrue;
   146     }
   350     }
   147 
   351 
   148 
   352 
   149 void CCreatorContactGroupElement::ExecuteCommandL()
   353 void CCreatorContactGroupElement::ExecuteCommandL()
       
   354     {
       
   355     LOGSTRING("Creator: CCreatorContactGroupElement::ExecuteCommandL");
       
   356     // Get attributes (amount and name)
       
   357     const CCreatorScriptAttribute* groupAmountAttr = this->FindAttributeByName(KAmount);        
       
   358     const CCreatorScriptAttribute* groupNameAttr = this->FindAttributeByName(KName);
       
   359     // How many groups to create:
       
   360     TInt groupAmount = 1;        
       
   361     if( groupAmountAttr )
       
   362         {
       
   363         groupAmount = ConvertStrToIntL(groupAmountAttr->Value());
       
   364         }
       
   365     
       
   366     for( TInt i = 0; i < groupAmount; ++i )
       
   367         {        
       
   368         CCreatorScriptElement* membersElement = FindSubElement(KMembers);
       
   369         
       
   370         if( membersElement )
       
   371             {    
       
   372             CPhonebookParameters* param = (CPhonebookParameters*) TCreatorFactory::CreatePhoneBookParametersL();            
       
   373             CleanupStack::PushL(param);
       
   374             
       
   375             // Links to contact-sets:
       
   376             const RPointerArray<CCreatorScriptElement>& linkList = membersElement->SubElements();
       
   377             if( linkList.Count() > 0 )
       
   378                 {
       
   379                 for( TInt i = 0; i < linkList.Count(); ++i )
       
   380                     {
       
   381                     AppendContactSetReferenceL(*linkList[i], param->iLinkIds);
       
   382                     }                
       
   383                 }
       
   384             
       
   385             if( groupNameAttr )
       
   386                 {
       
   387                 param ->iGroupName = QString::fromUtf16(groupNameAttr->Value().Ptr(), groupNameAttr->Value().Length()); 	//param->iGroupName->Des().Copy( groupNameAttr->Value() );
       
   388                 }
       
   389             else
       
   390                 {
       
   391                 param->iGroupName =   QString::fromUtf16( iEngine->RandomString(CCreatorEngine::EGroupName).Ptr(), iEngine->RandomString(CCreatorEngine::EGroupName).Length()); 	//->Des().Copy( iEngine->RandomString(CCreatorEngine::EGroupName) );
       
   392                 }                
       
   393             iEngine->AppendToCommandArrayL(ECmdCreatePhoneBookEntryGroups, param);
       
   394             CleanupStack::Pop(param);
       
   395             }
       
   396         }
       
   397     }
       
   398 
       
   399 /*
       
   400 void CCreatorContactGroupElement::ExecuteCommandL()
   150     {}
   401     {}
   151 
   402 */
   152 CCreatorContactFieldElement* CCreatorContactFieldElement::NewL(CCreatorEngine* aEngine, const TDesC& aName, const TDesC& aContext)
   403 CCreatorContactFieldElement* CCreatorContactFieldElement::NewL(CCreatorEngine* aEngine, const TDesC& aName, const TDesC& aContext)
   153     {
   404     {
   154     LOGSTRING("Creator: CCreatorContactFieldElement::NewL");
   405     LOGSTRING("Creator: CCreatorContactFieldElement::NewL");
   155     CCreatorContactFieldElement* self = new (ELeave) CCreatorContactFieldElement(aEngine);
   406     CCreatorContactFieldElement* self = new (ELeave) CCreatorContactFieldElement(aEngine);
   156     CleanupStack::PushL(self);
   407     CleanupStack::PushL(self);