void DistributionListDialog::setRecipients( const Recipient::List &recipients ) { Recipient::List::ConstIterator it; for( it = recipients.constBegin(); it != recipients.constEnd(); ++it ) { QStringList emails = KPIMUtils::splitAddressList( (*it).email() ); QStringList::ConstIterator it2; for( it2 = emails.constBegin(); it2 != emails.constEnd(); ++it2 ) { QString name; QString email; KABC::Addressee::parseEmailAddress( *it2, name, email ); if ( !email.isEmpty() ) { DistributionListItem *item = new DistributionListItem( mRecipientsList ); KABC::Addressee::List addressees = KABC::StdAddressBook::self( true )->findByEmail( email ); if ( addressees.isEmpty() ) { KABC::Addressee a; a.setNameFromString( name ); a.insertEmail( email ); item->setTransientAddressee( a, email ); item->setCheckState( 0, Qt::Checked ); } else { KABC::Addressee::List::ConstIterator it3; for( it3 = addressees.constBegin(); it3 != addressees.constEnd(); ++it3 ) { item->setAddressee( *it3, email ); if ( it3 == addressees.constBegin() ) item->setCheckState( 0, Qt::Checked ); } } } } } }
void KOAttendeeListView::dropEvent( QDropEvent *e ) { const QMimeData *md = e->mimeData(); if ( KPIM::KVCardDrag::canDecode( md ) ) { KABC::Addressee::List list; KPIM::KVCardDrag::fromMimeData( md, list ); KABC::Addressee::List::ConstIterator it; for ( it = list.constBegin(); it != list.constEnd(); ++it ) { QString em( (*it).fullEmail() ); if ( em.isEmpty() ) { em = (*it).realName(); } addAttendee( em ); } } if ( md->hasText() ) { QString text = md->text(); kDebug() << "Dropped :" << text; QStringList emails = text.split( ',', QString::SkipEmptyParts ); for ( QStringList::ConstIterator it = emails.constBegin(); it != emails.constEnd(); ++it ) { addAttendee( *it ); } } }
void KMail::ACLEntryDialog::slotSelectAddresses() { AutoQPointer<KPIM::AddressesDialog> dlg( new KPIM::AddressesDialog( this ) ); dlg->setShowCC( false ); dlg->setShowBCC( false ); if ( mUserIdFormat == FullEmail ) // otherwise we have no way to go back from userid to email dlg->setSelectedTo( userIds() ); if ( dlg->exec() != QDialog::Accepted || !dlg ) { return; } const QStringList distrLists = dlg->toDistributionLists(); QString txt = distrLists.join( ", " ); const KABC::Addressee::List lst = dlg->toAddresses(); if ( !lst.isEmpty() ) { for( QList<KABC::Addressee>::ConstIterator it = lst.constBegin(); it != lst.constEnd(); ++it ) { if ( !txt.isEmpty() ) txt += ", "; txt += addresseeToUserId( *it, mUserIdFormat ); } } mUserIdLineEdit->setText( txt ); }
void KNotesPlugin::processDropEvent( QDropEvent *event ) { const QMimeData *md = event->mimeData(); if ( KVCardDrag::canDecode( md ) ) { KABC::Addressee::List contacts; KVCardDrag::fromMimeData( md, contacts ); KABC::Addressee::List::ConstIterator it; QStringList attendees; for ( it = contacts.constBegin(); it != contacts.constEnd(); ++it ) { QString email = (*it).fullEmail(); if ( email.isEmpty() ) { attendees.append( (*it).realName() + "<>" ); } else { attendees.append( email ); } } event->accept(); static_cast<KNotesPart *>( part() )->newNote( i18nc( "@item", "Meeting" ), attendees.join( ", " ) ); return; } if ( ICalDrag::canDecode( event->mimeData() ) ) { CalendarLocal cal( KSystemTimeZones::local() ); if ( ICalDrag::fromMimeData( event->mimeData(), &cal ) ) { Journal::List journals = cal.journals(); if ( !journals.isEmpty() ) { event->accept(); Journal *j = journals.first(); static_cast<KNotesPart *>( part() )-> newNote( i18nc( "@item", "Note: %1", j->summary() ), j->description() ); return; } // else fall through to text decoding } } if ( md->hasText() ) { static_cast<KNotesPart *>( part() )->newNote( i18nc( "@item", "New Note" ), md->text() ); return; } if ( MailList::canDecode( md ) ) { MailList mails = MailList::fromMimeData( md ); event->accept(); if ( mails.count() != 1 ) { KMessageBox::sorry( core(), i18nc( "@info", "Dropping multiple mails is not supported." ) ); } else { MailSummary mail = mails.first(); QString txt = i18nc( "@item", "From: %1\nTo: %2\nSubject: %3", mail.from(), mail.to(), mail.subject() ); static_cast<KNotesPart *>( part() )->newNote( i18nc( "@item", "Mail: %1", mail.subject() ), txt ); } return; } kWarning() << QString( "Cannot handle drop events of type '%1'." ).arg( event->format() ); }
void KOEditorAttachments::handlePasteOrDrop( const QMimeData *mimeData ) { KUrl::List urls; bool probablyWeHaveUris = false; bool weCanCopy = true; QStringList labels; if ( KPIM::KVCardDrag::canDecode( mimeData ) ) { KABC::Addressee::List addressees; KPIM::KVCardDrag::fromMimeData( mimeData, addressees ); for ( KABC::Addressee::List::ConstIterator it = addressees.constBegin(); it != addressees.constEnd(); ++it ) { urls.append( KDEPIMPROTOCOL_CONTACT + ( *it ).uid() ); // there is some weirdness about realName(), hence fromUtf8 labels.append( QString::fromUtf8( ( *it ).realName().toLatin1() ) ); } probablyWeHaveUris = true; } else if ( KUrl::List::canDecode( mimeData ) ) { QMap<QString,QString> metadata; urls = KUrl::List::fromMimeData( mimeData, &metadata ); probablyWeHaveUris = true; labels = metadata["labels"].split( ':', QString::SkipEmptyParts ); for ( QStringList::Iterator it = labels.begin(); it != labels.end(); ++it ) { *it = KUrl::fromPercentEncoding( (*it).toLatin1() ); } } else if ( mimeData->hasText() ) { QString text = mimeData->text(); QStringList lst = text.split( '\n', QString::SkipEmptyParts ); for ( QStringList::ConstIterator it = lst.constBegin(); it != lst.constEnd(); ++it ) { urls.append( *it ); } probablyWeHaveUris = true; } KMenu menu( this ); QAction *linkAction = 0, *cancelAction; if ( probablyWeHaveUris ) { linkAction = menu.addAction( i18nc( "@action:inmenu", "&Link here" ) ); // we need to check if we can reasonably expect to copy the objects for ( KUrl::List::ConstIterator it = urls.constBegin(); it != urls.constEnd(); ++it ) { if ( !( weCanCopy = KProtocolManager::supportsReading( *it ) ) ) { break; // either we can copy them all, or no copying at all } } if ( weCanCopy ) { menu.addAction( i18nc( "@action:inmenu", "&Copy here" ) ); } } else { menu.addAction( i18nc( "@action:inmenu", "&Copy here" ) ); } menu.addSeparator(); cancelAction = menu.addAction( i18nc( "@action:inmenu", "C&ancel" ) ); QByteArray data; QString mimeType; QString label; if(!mimeData->formats().isEmpty() && !probablyWeHaveUris) { data=mimeData->data( mimeData->formats().first() ); mimeType = mimeData->formats().first(); if( KMimeType::mimeType( mimeData->formats().first() ) ) label = KMimeType::mimeType( mimeData->formats().first() )->name(); } QAction *ret = menu.exec( QCursor::pos() ); if ( linkAction == ret ) { QStringList::ConstIterator jt = labels.constBegin(); for ( KUrl::List::ConstIterator it = urls.constBegin(); it != urls.constEnd(); ++it ) { addUriAttachment( (*it).url(), QString(), ( jt == labels.constEnd() ? QString() : *( jt++ ) ), true ); } } else if ( cancelAction != ret ) { if ( probablyWeHaveUris ) { for ( KUrl::List::ConstIterator it = urls.constBegin(); it != urls.constEnd(); ++it ) { KIO::Job *job = KIO::storedGet( *it ); connect( job, SIGNAL(result(KJob *)), SLOT(downloadComplete(KJob *)) ); } } else { // we take anything addDataAttachment( data, mimeType, label ); } } }