void DistributionListEditorWidget::changeEmail() { DistributionList *list = mManager->list(mNameCombo->currentText()); if(!list) return; EntryItem *entryItem = static_cast< EntryItem * >(mEntryView->selectedItem()); if(!entryItem) return; QString email = EmailSelector::getEmail(entryItem->addressee().emails(), entryItem->email(), this); list->removeEntry(entryItem->addressee(), entryItem->email()); list->insertEntry(entryItem->addressee(), email); updateEntryView(); }
void TestDistrList::testRemoveEntry() { kDebug() ; KABC::AddressBook *ab = KABC::StdAddressBook::self(); DistributionList dl = DistributionList::findByName( ab, "foo" ); assert( !dl.isEmpty() ); DistributionList::Entry::List entries = dl.entries( ab ); check( "entries count before removeEntry", QString::number( entries.count() ), "3" ); // Removing an empty entry shouldn't do anything dl.removeEntry( KABC::Addressee() ); check( "entries count after removing empty entry", QString::number( dl.entries(ab).count() ), "3" ); KABC::Addressee addr1 = ab->findByName( "addr1" ).first(); assert( !addr1.isEmpty() ); // Removing an entry with the wrong email passed, shouldn't do anything dl.removeEntry( addr1, "*****@*****.**" ); check( "entries count after removing entry with invalid email", QString::number( dl.entries(ab).count() ), "3" ); // Now remove entry correctly dl.removeEntry( addr1 ); check( "removeEntry(addr1) worked", QString::number( dl.entries(ab).count() ), "2" ); QStringList emails = dl.emails( ab ); assert( emails.count() == 2 ); check( "first email", emails[0], "addr2 <*****@*****.**>" ); // Now move on to addr2. First remove with no or a wrong email (nothing should happen) KABC::Addressee addr2 = ab->findByName( "addr2" ).first(); assert( !addr2.isEmpty() ); dl.removeEntry( addr2 ); check( "entries count after removing entry with no email", QString::number( dl.entries(ab).count() ), "2" ); // Now remove addr2 correctly dl.removeEntry( addr2, "*****@*****.**" ); check( "entries count after removing addr2", QString::number( dl.entries(ab).count() ), "1" ); dl.removeEntry( addr2, "*****@*****.**" ); check( "entries count after removing alternate addr2", QString::number( dl.entries(ab).count() ), "0" ); assert( dl.entries(ab).isEmpty() ); assert( dl.emails(ab).isEmpty() ); assert( DistributionList::isDistributionList( dl ) ); ab->insertAddressee( dl ); }