/** * Create a new template and add it to the database * @param aDb Contact database * @param aTemplateName Name for the template * @param aFieldSet Array of fields which should are added to the template * @return TContactItemId Id of the newly created template */ TContactItemId CreatePhonebookTemplateL(CContactDatabase& aDb, const TDesC& aTemplateName, RArray<TFieldEntry>& aFieldSet) { CContactItem* temp = aDb.CreateContactCardTemplateLC(aTemplateName); TContactItemId templateId = temp->Id(); CleanupStack::PopAndDestroy(temp); temp=NULL; //Remove all the unnecessary fields temp = aDb.OpenContactLX(templateId); CleanupStack::PushL(temp); const TInt fieldCount = temp->CardFields().Count(); for(TInt i=fieldCount-1;i>=0;i--) temp->RemoveField(i); // Add each of the required fields to the template for (TInt j=0; j<aFieldSet.Count(); ++j) { TFieldEntry fieldEntry=aFieldSet[j]; CContactItemField* field = CContactItemField::NewLC(KStorageTypeText,fieldEntry.iField); if (fieldEntry.iFieldType!=KNullUid) field->AddFieldTypeL(fieldEntry.iFieldType); temp->AddFieldL(*field); CleanupStack::Pop(field); } aDb.CommitContactL(*temp); CleanupStack::PopAndDestroy(2); // temp, close template return templateId; }
/** * Create template card for ICC contact items * @param aDb Contact database */ TContactItemId CreateICCTemplateL(CContactDatabase& aDb) { CContactItem* temp = aDb.CreateContactCardTemplateLC(KTemplateName); TContactItemId templateId = temp->Id(); CleanupStack::PopAndDestroy(temp); temp=NULL; //Remove all the unnecessary fields temp = aDb.OpenContactLX(templateId); CleanupStack::PushL(temp); const TInt fieldCount = temp->CardFields().Count(); for(TInt i=fieldCount-1;i>=0;i--) temp->RemoveField(i); CContactItemField* name = CContactItemField::NewLC(KStorageTypeText,KUidContactFieldFamilyName); name->SetMapping(KUidContactFieldVCardMapUnusedN); temp->AddFieldL(*name); CleanupStack::Pop(name); CContactItemField* number = CContactItemField::NewLC(KStorageTypeText,KUidContactFieldPhoneNumber); number->SetMapping(KUidContactFieldVCardMapTEL); temp->AddFieldL(*number); CleanupStack::Pop(number); CContactItemField* slotnum = CContactItemField::NewLC(KStorageTypeText,KUidContactFieldICCSlot); temp->AddFieldL(*slotnum); CleanupStack::Pop(slotnum); CContactItemField* phonebook = CContactItemField::NewLC(KStorageTypeText,KUidContactFieldICCPhonebook); temp->AddFieldL(*phonebook); CleanupStack::Pop(phonebook); aDb.CommitContactL(*temp); CleanupStack::PopAndDestroy(2); // temp, close template return templateId; }