// This tests tries to reproduce defect // EDNRTRN-4J5C5E "Groups in Cntmodel cannot be renamed.." // // This defect was caused because groups weren't included in the view and // MoveInSortArrayL doesn't check that the contact item will be in the // iSortedItems list (this list depends on the view chosen). // LOCAL_C void RenameDefectL() { test.Next(_L("Rename a group")); CntTest->CloseDatabase(); CntTest->DeleteDatabaseL(); CContactDatabase* db=CntTest->CreateDatabaseL(); _LIT(KCntmodelOriginalName,"Original"); _LIT(KCntmodelRevisedName,"Revised"); CContactItem* newGroup = CntTest->Db()->CreateContactGroupLC(KCntmodelOriginalName); TContactItemId groupId = newGroup->Id(); CleanupStack::PopAndDestroy(); //newGroup TContactItemId contactA=AddContactL(db,KUidContactFieldFamilyName,KUidContactFieldVCardMapUnusedN,_L("a")); TContactItemId contactB=AddContactL(db,KUidContactFieldFamilyName,KUidContactFieldVCardMapUnusedN,_L("b")); CntTest->Db()->AddContactToGroupL(contactA,groupId); CntTest->Db()->AddContactToGroupL(contactB,groupId); CntTest->Db()->SetDbViewContactType(KUidContactCard); CntTest->Db()->SortedItemsL(); // ensures theres a iSortedItems SetSortOrderL(*db,TUid::Uid(KUidContactFieldDefinedTextValue)); // required so that the comparision CContactGroup* group = static_cast<CContactGroup*>(CntTest->Db()->OpenContactL(groupId)); CleanupStack::PushL(group); group->SetGroupLabelL(KCntmodelRevisedName); CntTest->Db()->CommitContactL(*group); CntTest->Db()->CloseContactL(groupId); CleanupStack::PopAndDestroy(); //group CContactItem* revisedGroup = CntTest->Db()->ReadContactLC(groupId,*CntTest->Db()->AllFieldsView()); TPtrC testLabel = static_cast<CContactGroup*>(revisedGroup)->GetGroupLabelL(); test(testLabel==KCntmodelRevisedName); CleanupStack::PopAndDestroy(); //revisedGroup }
/** * Updates the specified group with details like group name, number of contacts in the group * @param aGroupSection - section in the ini file contains necessary details for group update * @param aGroup - Group to be updated */ void CTestContactViewDatabaseUtilitiesStep::UpdateGroupsL(const TPtrC& aGroupSection, CContactGroup& aGroup) { _LIT(KGroupName, "groupname"); TPtrC groupName; GetStringFromConfig(aGroupSection, KGroupName, groupName); aGroup.SetGroupLabelL(groupName); _LIT(KNumOfContacts, "numofcontacts"); TInt numOfContacts; GetIntFromConfig(aGroupSection, KNumOfContacts, numOfContacts); CCntFilter* filter = CCntFilter::NewL(); CleanupStack::PushL(filter); filter->SetContactFilterTypeCard(ETrue); DatabaseReference().FilterDatabaseL(*filter); for(TInt i = 0; i < numOfContacts; ++i) { CContactIdArray* idArray = filter->iIds; TContactItemId contactItemId = (*idArray)[i]; CContactItem* contactItem = DatabaseReference().OpenContactL(contactItemId); CleanupStack::PushL(contactItem); TRAP_IGNORE(DatabaseReference().RemoveContactFromGroupL(*contactItem, aGroup)); TRAP_IGNORE(DatabaseReference().AddContactToGroupL(*contactItem, aGroup)); CleanupStack::PopAndDestroy(contactItem); DatabaseReference().CloseContactL(contactItemId); } CleanupStack::PopAndDestroy(filter); }