void XXPortManager::slotImport( const QString &identifier ) { const XXPort *xxport = mFactory.createXXPort( identifier, mParentWidget ); if( !xxport ) { return; } const KABC::Addressee::List contacts = xxport->importContacts(); delete xxport; if ( contacts.isEmpty() ) { // nothing to import return; } const QStringList mimeTypes( KABC::Addressee::mimeType() ); QPointer<Akonadi::CollectionDialog> dlg = new Akonadi::CollectionDialog( mParentWidget ); dlg->setMimeTypeFilter( mimeTypes ); dlg->setAccessRightsFilter( Akonadi::Collection::CanCreateItem ); dlg->setCaption( i18n( "Select Address Book" ) ); dlg->setDescription( i18n( "Select the address book the imported contact(s) shall be saved in:" ) ); dlg->setDefaultCollection( mDefaultAddressBook ); if ( !dlg->exec() || !dlg ) { delete dlg; return; } const Akonadi::Collection collection = dlg->selectedCollection(); delete dlg; if ( !mImportProgressDialog ) { mImportProgressDialog = new KProgressDialog( mParentWidget, i18n( "Import Contacts" ) ); mImportProgressDialog->setLabelText( i18np( "Importing one contact to %2", "Importing %1 contacts to %2", contacts.count(), collection.name() ) ); mImportProgressDialog->setAllowCancel( false ); mImportProgressDialog->setAutoClose( true ); mImportProgressDialog->progressBar()->setRange( 1, contacts.count() ); } mImportProgressDialog->show(); for ( int i = 0; i < contacts.count(); ++i ) { Akonadi::Item item; item.setPayload<KABC::Addressee>( contacts.at( i ) ); item.setMimeType( KABC::Addressee::mimeType() ); Akonadi::ItemCreateJob *job = new Akonadi::ItemCreateJob( item, collection ); connect( job, SIGNAL(result(KJob*)), SLOT(slotImportJobDone(KJob*)) ); } }
bool DetailledPrintStyle::printEntries( const KABC::Addressee::List &contacts, KPrinter *printer, QPainter *painter, const QRect &window) { QRect brect; int ypos = 0, count = 0; KABC::Addressee::List::ConstIterator it; for ( it = contacts.begin(); it != contacts.end(); ++it ) { if ( !(*it).isEmpty() ) { // do a faked print to get the bounding rect: if ( !mPainter->printAddressee( *it, window, painter, ypos, true, &brect) ) { // it does not fit on the page beginning at ypos: printer->newPage(); // WORK_TO_DO: this assumes the entry fits on the whole page // (dunno how to fix this without being illogical) ypos = 0; } mPainter->printAddressee( *it, window, painter, ypos, false, &brect ); ypos += brect.height(); } mPrintProgress->setProgress( (count++ * 100) / contacts.count() ); } mPrintProgress->setProgress( 100 ); return true; }
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" ); }
void Groupwise::slotReadReceiveAddressees(const KABC::Addressee::List addressees) { kdDebug() << "Groupwise::slotReadReceiveAddressees() - passing " << addressees.count() << " contacts back to application" << endl; KABC::VCardConverter conv; QString vcard = conv.createVCards(addressees); data(vcard.utf8()); }
//----------------------------------------------------------------------------- void KAddrBookExternal::openEmail(const QString &addr, QWidget *parent) { QString email; QString name; KABC::Addressee::parseEmailAddress(addr, name, email); KABC::AddressBook *ab = KABC::StdAddressBook::self(true); // force a reload of the address book file so that changes that were made // by other programs are loaded ab->asyncLoad(); // if we have to reload the address book then we should also wait until // it's completely reloaded #if KDE_IS_VERSION(3,4,89) // This ugly hack will be removed in 4.0 while(!ab->loadingHasFinished()) { QApplication::eventLoop()->processEvents(QEventLoop::ExcludeUserInput); // use sleep here to reduce cpu usage usleep(100); } #endif KABC::Addressee::List addressees = ab->findByEmail(email); if(addressees.count() > 0) { if(kapp->dcopClient()->isApplicationRegistered("kaddressbook")) { //make sure kaddressbook is loaded, otherwise showContactEditor //won't work as desired, see bug #87233 DCOPRef call("kaddressbook", "kaddressbook"); call.send("newInstance()"); } else { kapp->startServiceByDesktopName("kaddressbook"); } DCOPRef call("kaddressbook", "KAddressBookIface"); call.send("showContactEditor(QString)", addressees.first().uid()); } else { //TODO: Enable the better message at the next string unfreeze #if 0 QString text = i18n("<qt>The email address <b>%1</b> cannot be " "found in your addressbook.</qt>").arg(email); #else QString text = email + " " + i18n("is not in address book"); #endif KMessageBox::information(parent, text, QString::null, "notInAddressBook"); } }
void ViewManager::startDrag() { // Get the list of all the selected addressees KABC::Addressee::List addrList; const QStringList uidList = selectedUids(); if(uidList.isEmpty()) return; kdDebug(5720) << "ViewManager::startDrag: starting to drag" << endl; QStringList::ConstIterator it; for(it = uidList.begin(); it != uidList.end(); ++it) addrList.append(mCore->addressBook()->findByUid(*it)); KMultipleDrag *drag = new KMultipleDrag(this); KABC::VCardConverter converter; QString vcards = converter.createVCards(addrList); // Best text representation is given by textdrag, so it must be first drag->addDragObject(new QTextDrag(AddresseeUtil::addresseesToEmails(addrList), this)); drag->addDragObject(new KVCardDrag(vcards, this)); KTempDir tempDir; // can't set tempDir to autoDelete, in case of dropping on the desktop, the copy is async... if(tempDir.status() == 0) { QString fileName; if(addrList.count() == 1) fileName = addrList[ 0 ].givenName() + "_" + addrList[ 0 ].familyName() + ".vcf"; else fileName = "contacts.vcf"; QFile tempFile(tempDir.name() + "/" + fileName); if(tempFile.open(IO_WriteOnly)) { tempFile.writeBlock(vcards.utf8()); tempFile.close(); KURLDrag *urlDrag = new KURLDrag(KURL(tempFile.name()), this); drag->addDragObject(urlDrag); } } drag->setPixmap(KGlobal::iconLoader()->loadIcon("vcard", KIcon::Desktop)); drag->dragCopy(); }
bool VCard_LDIFCreator::readContents( const QString &path ) { // read file contents QFile file( path ); if ( !file.open( QIODevice::ReadOnly ) ) return false; QString info; text.truncate(0); // read the file QByteArray contents = file.readAll(); file.close(); // convert the file contents to a KABC::Addressee address KABC::Addressee::List addrList; KABC::Addressee addr; KABC::VCardConverter converter; addrList = converter.parseVCards( contents); if ( addrList.count() == 0 ) { KABC::AddresseeList l; // FIXME porting if ( !KABC::LDIFConverter::LDIFToAddressee( contents, l ) ) return false; // FIXME porting KABC::AddresseeList::ConstIterator it( l.constBegin() ); for ( ; it != l.constEnd(); ++ it ) { addrList.append( *it ); } } if ( addrList.count()>1 ) { // create an overview (list of all names) name = i18np("One contact found:", "%1 contacts found:", addrList.count()); int no, linenr; for (linenr=no=0; linenr<30 && no<addrList.count(); ++no) { addr = addrList[no]; info = addr.formattedName().simplified(); if (info.isEmpty()) info = addr.givenName() + ' ' + addr.familyName(); info = info.simplified(); if (info.isEmpty()) continue; text.append(info); text.append("\n"); ++linenr; } return true; } // create card for _one_ contact addr = addrList[ 0 ]; // prepare the text name = addr.formattedName().simplified(); if ( name.isEmpty() ) name = addr.givenName() + ' ' + addr.familyName(); name = name.simplified(); KABC::PhoneNumber::List pnList = addr.phoneNumbers(); QStringList phoneNumbers; for (int no=0; no<pnList.count(); ++no) { QString pn = pnList[no].number().simplified(); if (!pn.isEmpty() && !phoneNumbers.contains(pn)) phoneNumbers.append(pn); } if ( !phoneNumbers.isEmpty() ) text += phoneNumbers.join("\n") + '\n'; info = addr.organization().simplified(); if ( !info.isEmpty() ) text += info + '\n'; // get an address KABC::Address address = addr.address(KABC::Address::Work); if (address.isEmpty()) address = addr.address(KABC::Address::Home); if (address.isEmpty()) address = addr.address(KABC::Address::Pref); info = address.formattedAddress(); if ( !info.isEmpty() ) text += info + '\n'; return true; }