void TestDistrList::testDuplicate() { kDebug() ; // This is a special test for the case where we have a contact and a distr list with the same name KABC::AddressBook *ab = KABC::StdAddressBook::self(); KABC::Addressee addr; addr.setName( "foo" ); addr.insertEmail( "*****@*****.**", true ); ab->insertAddressee( addr ); #if 0 // we need a findByFormattedName KABC::Addressee::List addrList = ab->findByName( "foo" ); assert( addrList.count() == 2 ); bool a = DistributionList::isDistributionList( addrList.first() ); bool b = DistributionList::isDistributionList( addrList.last() ); // one is a distr list, but not both assert( a || b ); // assert( ! ( a && b ) ); #endif DistributionList dl = DistributionList::findByName( ab, "foo" ); assert( !dl.isEmpty() ); assert( DistributionList::isDistributionList( dl ) ); assert( dl.formattedName() == "foo" ); }
void TestDistrList::testNewList() { kDebug() ; DistributionList dl; dl.setName( "foo" ); assert( !dl.isEmpty() ); check( "name set", dl.formattedName(), "foo" ); assert( DistributionList::isDistributionList( dl ) ); KABC::AddressBook *ab = KABC::StdAddressBook::self(); ab->insertAddressee( dl ); #if 0 // can't do that until we have KABC::AddressBook::findByFormattedName, or we use setName() KABC::Addressee::List addrList = ab->findByName( "foo" ); assert( addrList.count() == 1 ); KABC::Addressee addr = addrList.first(); assert( !addr.isEmpty() ); check( "correct name", addr.name(), "foo" ); assert( DistributionList::isDistributionList( addr ) ); #else KABC::Addressee addr = dl; #endif DistributionList dl2 = DistributionList::findByName( ab, "foo" ); assert( !dl2.isEmpty() ); check( "correct name", dl2.formattedName(), "foo" ); assert( DistributionList::isDistributionList( dl2 ) ); // Test the ctor that takes an addressee DistributionList dl3( addr ); assert( !dl3.isEmpty() ); assert( DistributionList::isDistributionList( dl3 ) ); check( "correct name", dl3.formattedName(), "foo" ); }
DistributionList *DistributionListManager::list( const QString &name ) { DistributionList *list; for( list = mLists.first(); list; list = mLists.next() ) { if ( list->name() == name ) return list; } return 0; }
QStringList DistributionListManager::listNames() { QStringList names; DistributionList *list; for( list = mLists.first(); list; list = mLists.next() ) { names.append( list->name() ); } return names; }
void TestDistrList::testDeleteList() { kDebug() ; KABC::AddressBook *ab = KABC::StdAddressBook::self(); DistributionList dl = DistributionList::findByName( ab, "foo" ); assert( !dl.isEmpty() ); ab->removeAddressee( dl ); dl = DistributionList::findByName( ab, "foo" ); assert( dl.isEmpty() ); }
void DistributionListEditor::removeEntry() { DistributionList *list = mManager->list( mNameCombo->currentText() ); if ( !list ) return; EditEntryItem *entryItem = dynamic_cast<EditEntryItem *>( mEntryView->selectedItem() ); if ( !entryItem ) return; list->removeEntry( entryItem->addressee(), entryItem->email() ); delete entryItem; }
void DistributionListManager::remove( DistributionList *l ) { if ( !l ) return; DistributionList *list; for( list = mLists.first(); list; list = mLists.next() ) { if ( list->name() == l->name() ) { mLists.remove( list ); return; } } }
void DistributionListManager::insert( DistributionList *l ) { if ( !l ) return; DistributionList *list; for( list = mLists.first(); list; list = mLists.next() ) { if ( list->name() == l->name() ) { mLists.remove( list ); break; } } mLists.append( l ); }
void DistributionListEditor::changeEmail() { DistributionList *list = mManager->list( mNameCombo->currentText() ); if ( !list ) return; EditEntryItem *entryItem = dynamic_cast<EditEntryItem *>( mEntryView->selectedItem() ); if ( !entryItem ) return; QString email = EmailSelectDialog::getEmail( entryItem->addressee().emails(), entryItem->email(), this ); list->removeEntry( entryItem->addressee(), entryItem->email() ); list->insertEntry( entryItem->addressee(), email ); updateEntryView(); }
void DistributionListEditor::updateEntryView() { DistributionList *list = mManager->list( mNameCombo->currentText() ); if ( !list ) return; mEntryView->clear(); DistributionList::Entry::List entries = list->entries(); DistributionList::Entry::List::ConstIterator it; for( it = entries.begin(); it != entries.end(); ++it ) { new EditEntryItem( mEntryView, (*it).addressee, (*it).email ); } EditEntryItem *entryItem = dynamic_cast<EditEntryItem *>( mEntryView->selectedItem() ); bool state = (entryItem != 0L); changeEmailButton->setEnabled(state); removeEntryButton->setEnabled(state); }
bool DistributionListManager::load() { KSimpleConfig cfg( locateLocal( "data", "kabc/distlists" ) ); QMap<QString,QString> entryMap = cfg.entryMap( "DistributionLists" ); cfg.setGroup( "DistributionLists" ); // clear old lists mLists.clear(); d->mMissingEntries.clear(); QMap<QString,QString>::ConstIterator it; for( it = entryMap.constBegin(); it != entryMap.constEnd(); ++it ) { QString name = it.key(); QStringList value = cfg.readListEntry( name ); kdDebug(5700) << "DLM::load(): " << name << ": " << value.join(",") << endl; DistributionList *list = new DistributionList( this, name ); MissingEntryList missingEntries; QStringList::ConstIterator entryIt = value.constBegin(); while( entryIt != value.constEnd() ) { QString id = *entryIt++; QString email = *entryIt; kdDebug(5700) << "----- Entry " << id << endl; Addressee a = d->mAddressBook->findByUid( id ); if ( !a.isEmpty() ) { list->insertEntry( a, email ); } else { missingEntries.append( qMakePair( id, email ) ); } if ( entryIt == value.end() ) break; ++entryIt; } d->mMissingEntries.insert( name, missingEntries ); } return true; }
void DistributionListEditorWidget::updateEntryView() { if(mNameCombo->currentText().isEmpty()) { mListLabel->setText(i18n("Selected addressees:")); } else { mListLabel->setText(i18n("Selected addresses in '%1':").arg(mNameCombo->currentText())); } mEntryView->clear(); DistributionList *list = mManager->list(mNameCombo->currentText()); if(!list) { mEditButton->setEnabled(false); mRemoveButton->setEnabled(false); mChangeEmailButton->setEnabled(false); mRemoveEntryButton->setEnabled(false); mAddresseeView->setEnabled(false); mEntryView->setEnabled(false); return; } else { mEditButton->setEnabled(true); mRemoveButton->setEnabled(true); mAddresseeView->setEnabled(true); mEntryView->setEnabled(true); } DistributionList::Entry::List entries = list->entries(); DistributionList::Entry::List::ConstIterator it; for(it = entries.begin(); it != entries.end(); ++it) { new EntryItem(mEntryView, (*it).addressee, (*it).email); } EntryItem *entryItem = static_cast< EntryItem * >(mEntryView->selectedItem()); bool state = entryItem; mChangeEmailButton->setEnabled(state); mRemoveEntryButton->setEnabled(state); }
void DistributionListEditorWidget::editList() { TQString oldName = mNameCombo->currentText(); bool ok; TQString name = KInputDialog::getText( i18n( "Distribution List" ), i18n( "Please change &name:" ), oldName, &ok ); if (!ok) return; DistributionList *list = mManager->list( oldName ); list->setName( name ); mNameCombo->clear(); mNameCombo->insertStringList( mManager->listNames() ); mNameCombo->setCurrentItem( mNameCombo->count() - 1 ); updateEntryView(); slotSelectionAddresseeViewChanged(); }
void DistributionListEditor::addEntry() { AddresseeItem *addresseeItem = dynamic_cast<AddresseeItem *>( mAddresseeView->selectedItem() ); if( !addresseeItem ) { kdDebug(5700) << "DLE::addEntry(): No addressee selected." << endl; return; } DistributionList *list = mManager->list( mNameCombo->currentText() ); if ( !list ) { kdDebug(5700) << "DLE::addEntry(): No dist list '" << mNameCombo->currentText() << "'" << endl; return; } list->insertEntry( addresseeItem->addressee() ); updateEntryView(); slotSelectionAddresseeViewChanged(); }
void TestDistrList::testInsertEntry() { kDebug() ; KABC::AddressBook *ab = KABC::StdAddressBook::self(); DistributionList dl = DistributionList::findByName( ab, "foo" ); assert( !dl.isEmpty() ); #if 0 // the usual method KABC::Addressee addr1 = ab->findByName( "addr1" ).first(); assert( !addr1.isEmpty() ); dl.insertEntry( addr1 ); #else // the kolab-resource method dl.insertEntry( "addr1" ); #endif KABC::Addressee addr2 = ab->findByName( "addr2" ).first(); assert( !addr2.isEmpty() ); dl.insertEntry( addr2, "*****@*****.**" ); // Try inserting it again, should do nothing dl.insertEntry( addr2, "*****@*****.**" ); // And insert it with another email address dl.insertEntry( addr2, "*****@*****.**" ); // Test entries() DistributionList::Entry::List entries = dl.entries( ab ); check( "entries count", QString::number( entries.count() ), "3" ); check( "first entry", entries[0].addressee.name(), "addr1" ); check( "first entry", entries[0].email, QString() ); check( "second entry", entries[1].addressee.name(), "addr2" ); check( "second entry", entries[1].email, "*****@*****.**" ); check( "third entry", entries[2].addressee.name(), "addr2" ); check( "third entry", entries[2].email, "*****@*****.**" ); // Test emails() QStringList emails = dl.emails( ab ); kDebug() << emails; assert( emails.count() == 3 ); check( "first email", emails[0], "addr1 <*****@*****.**>" ); check( "second email", emails[1], "addr2 <*****@*****.**>" ); check( "third email", emails[2], "addr2 <*****@*****.**>" ); // Commit changes to the addressbook !! ab->insertAddressee( dl ); }
int main(int argc, char **argv) { KAboutData aboutData("testdistlist", I18N_NOOP("Test Distribution Lists"), "0.1"); KCmdLineArgs::init(argc, argv, &aboutData); KCmdLineArgs::addCmdLineOptions(options); KApplication app; KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); if(args->isSet("list")) { QString name = args->getOption("list"); DistributionListManager *manager = new DistributionListManager(StdAddressBook::self()); manager->load(); DistributionList *list = manager->list(name); if(!list) { kdDebug() << "No list with name '" << name << "'" << endl; return 1; } else { kdDebug() << "RESULT: " << list->emails().join(", ") << endl; return 0; } } DistributionListEditor *editor = new DistributionListEditor(StdAddressBook::self(), 0); editor->show(); app.setMainWidget(editor); QObject::connect(&app, SIGNAL(lastWindowClosed()), &app, SLOT(quit())); app.exec(); delete editor; }
void Guideline::removeFromDistributions(const bool force) { DistributionList dlist; // Don't delete using rels iterator, build a distrolist. for (RelsList::iterator r = relationships.begin(); r != relationships.end(); r++) { Distribution *distro = dynamic_cast<Distribution *> ((*r)->distro); if (distro && force) { dlist.push_back(distro); } } dlist.sort(); dlist.unique(); for (DistributionList::iterator d = dlist.begin(); d != dlist.end(); d++) { (*d)->RemoveGuideline(this); } }
bool DistributionListManager::save() { kdDebug(5700) << "DistListManager::save()" << endl; KSimpleConfig cfg( locateLocal( "data", "kabc/distlists" ) ); cfg.deleteGroup( "DistributionLists" ); cfg.setGroup( "DistributionLists" ); DistributionList *list; for( list = mLists.first(); list; list = mLists.next() ) { kdDebug(5700) << " Saving '" << list->name() << "'" << endl; QStringList value; const DistributionList::Entry::List entries = list->entries(); DistributionList::Entry::List::ConstIterator it; for( it = entries.begin(); it != entries.end(); ++it ) { value.append( (*it).addressee.uid() ); value.append( (*it).email ); } if ( d->mMissingEntries.find( list->name() ) != d->mMissingEntries.end() ) { const MissingEntryList missList = d->mMissingEntries[ list->name() ]; MissingEntryList::ConstIterator missIt; for ( missIt = missList.begin(); missIt != missList.end(); ++missIt ) { value.append( (*missIt).first ); value.append( (*missIt).second ); } } cfg.writeEntry( list->name(), value ); } cfg.sync(); return true; }
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 ); }
void TestDistrList::testConverter() { kDebug() ; KABC::AddressBook *ab = KABC::StdAddressBook::self(); QList<KABC::Resource*> resources = ab->resources(); assert( resources.count() == 1 ); DistributionListConverter converter( resources[ 0 ] ); DistributionList pimList; KABC::DistributionList *kabcList = converter.convertToKABC( pimList ); assert( kabcList != 0 ); assert( kabcList->entries().isEmpty() && kabcList->emails().isEmpty() ); assert( kabcList->identifier().isEmpty() && kabcList->name().isEmpty() ); DistributionList pimList2 = converter.convertFromKABC( kabcList ); assert( pimList2 == pimList ); delete kabcList; pimList.setName( "pimlist-name" ); pimList.setUid( "pimlist-id" ); kabcList = converter.convertToKABC( pimList ); assert( kabcList != 0 ); assert( kabcList->entries().isEmpty() && kabcList->emails().isEmpty() ); assert( kabcList->identifier() == "pimlist-id" && kabcList->name() == "pimlist-name" ); pimList2 = converter.convertFromKABC( kabcList ); assert( pimList2 == pimList ); delete kabcList; KABC::Addressee addr1 = ab->findByName( "addr1" ).first(); assert( !addr1.isEmpty() ); pimList.insertEntry( addr1 ); kabcList = converter.convertToKABC( pimList ); assert( kabcList != 0 ); assert( kabcList->identifier() == "pimlist-id" && kabcList->name() == "pimlist-name" ); assert( kabcList->entries().count() == 1 && kabcList->emails().count() == 1 ); assert( kabcList->entries()[ 0 ].addressee() == addr1 ); pimList2 = converter.convertFromKABC( kabcList ); assert( pimList2 == pimList ); delete kabcList; KABC::Addressee addr2 = ab->findByName( "addr2" ).first(); assert( !addr2.isEmpty() ); pimList.insertEntry( addr2 ); kabcList = converter.convertToKABC( pimList ); assert( kabcList != 0 ); assert( kabcList->identifier() == "pimlist-id" && kabcList->name() == "pimlist-name" ); assert( kabcList->entries().count() == 2 && kabcList->emails().count() == 2 ); assert( kabcList->entries()[ 0 ].addressee() == addr1 ); assert( kabcList->entries()[ 2 ].addressee() == addr2 ); pimList2 = converter.convertFromKABC( kabcList ); assert( pimList2 == pimList ); delete kabcList; }
void TestDistrList::testEmpty() { kDebug() ; DistributionList dl; assert( dl.isEmpty() ); }