static bool incidenceLessThan(const KCalCore::Incidence::Ptr e1, const KCalCore::Incidence::Ptr e2) { if (e1->dtStart() == e2->dtStart()) { int cmp = QString::compare(e1->summary(), e2->summary(), Qt::CaseInsensitive); if (cmp == 0) return QString::compare(e1->uid(), e2->uid()) < 0; else return cmp < 0; } else { return e1->dtStart() < e2->dtStart(); } }
void MailClient::mailTo( const KCalCore::IncidenceBase::Ptr &incidence, const KPIMIdentities::Identity &identity, const QString &from, bool bccMe, const QString &recipients, const QString &attachment, const QString &mailTransport ) { QString subject; if ( incidence->type() != KCalCore::Incidence::TypeFreeBusy ) { KCalCore::Incidence::Ptr inc = incidence.staticCast<KCalCore::Incidence>() ; subject = inc->summary(); } else { subject = i18n( "Free Busy Message" ); } const QString body = KCalUtils::IncidenceFormatter::mailBodyStr( incidence, KSystemTimeZones::local() ); send( identity, from, recipients, QString(), subject, body, false, bccMe, attachment, mailTransport ); }
void MailClient::mailOrganizer( const KCalCore::IncidenceBase::Ptr &incidence, const KPIMIdentities::Identity &identity, const QString &from, bool bccMe, const QString &attachment, const QString &sub, const QString &mailTransport ) { const QString to = incidence->organizer()->fullName(); QString subject = sub; if ( incidence->type() != KCalCore::Incidence::TypeFreeBusy ) { KCalCore::Incidence::Ptr inc = incidence.staticCast<KCalCore::Incidence>(); if ( subject.isEmpty() ) { subject = inc->summary(); } } else { subject = i18n( "Free Busy Message" ); } const QString body = KCalUtils::IncidenceFormatter::mailBodyStr( incidence, KSystemTimeZones::local() ); send( identity, from, to, QString(), subject, body, false, bccMe, attachment, mailTransport ); }
QByteArray mailOrganizer( const KCalCore::IncidenceBase::Ptr &incidence, // const KPIMIdentities::Identity &identity, const QString &from, bool bccMe, const QString &attachment, const QString &sub/*, const QString &mailTransport*/ ) { const QString to = incidence->organizer()->fullName(); QString subject = sub; if ( incidence->type() != KCalCore::Incidence::TypeFreeBusy ) { KCalCore::Incidence::Ptr inc = incidence.staticCast<KCalCore::Incidence>(); if ( subject.isEmpty() ) { subject = inc->summary(); } } else { subject = QString( "Free Busy Message" ); } QString body = KCalUtils::IncidenceFormatter::mailBodyStr( incidence, KSystemTimeZones::local() ); return createMessage( /*identity, */from, to, QString(), subject, body, false, bccMe, attachment/*, mailTransport */)->encodedContent(); }
void MailClient::mailAttendees( const KCalCore::IncidenceBase::Ptr &incidence, const KPIMIdentities::Identity &identity, bool bccMe, const QString &attachment, const QString &mailTransport ) { Q_ASSERT( incidence ); KCalCore::Attendee::List attendees = incidence->attendees(); if ( attendees.isEmpty() ) { kWarning() << "There are no attendees to e-mail"; emit finished( ResultNoAttendees, i18n( "There are no attendees to e-mail" ) ); return; } const QString from = incidence->organizer()->fullName(); const QString organizerEmail = incidence->organizer()->email(); QStringList toList; QStringList ccList; const int numberOfAttendees = attendees.count(); for ( int i=0; i<numberOfAttendees; ++i ) { KCalCore::Attendee::Ptr a = attendees.at( i ); const QString email = a->email(); if ( email.isEmpty() ) { continue; } // In case we (as one of our identities) are the organizer we are sending // this mail. We could also have added ourselves as an attendee, in which // case we don't want to send ourselves a notification mail. if ( organizerEmail == email ) { continue; } // Build a nice address for this attendee including the CN. QString tname, temail; const QString username = KPIMUtils::quoteNameIfNecessary( a->name() ); // ignore the return value from extractEmailAddressAndName() because // it will always be false since tusername does not contain "@domain". KPIMUtils::extractEmailAddressAndName( username, temail/*byref*/, tname/*byref*/ ); tname += QLatin1String( " <" ) + email + QLatin1Char( '>' ); // Optional Participants and Non-Participants are copied on the email if ( a->role() == KCalCore::Attendee::OptParticipant || a->role() == KCalCore::Attendee::NonParticipant ) { ccList << tname; } else { toList << tname; } } if( toList.isEmpty() && ccList.isEmpty() ) { // Not really to be called a groupware meeting, eh kWarning() << "There are really no attendees to e-mail"; emit finished( ResultReallyNoAttendees, i18n( "There are no attendees to e-mail" ) ); return; } QString to; if ( !toList.isEmpty() ) { to = toList.join( QLatin1String( ", " ) ); } QString cc; if ( !ccList.isEmpty() ) { cc = ccList.join( QLatin1String( ", " ) ); } QString subject; if ( incidence->type() != KCalCore::Incidence::TypeFreeBusy ) { KCalCore::Incidence::Ptr inc = incidence.staticCast<KCalCore::Incidence>(); subject = inc->summary(); } else { subject = i18n( "Free Busy Object" ); } const QString body = KCalUtils::IncidenceFormatter::mailBodyStr( incidence, KSystemTimeZones::local() ); send( identity, from, to, cc, subject, body, false, bccMe, attachment, mailTransport ); }
void TodoPlugin::processDropEvent( QDropEvent *event ) { const QMimeData *md = event->mimeData(); if ( KABC::VCardDrag::canDecode( md ) ) { KABC::Addressee::List contacts; KABC::VCardDrag::fromMimeData( md, contacts ); KABC::Addressee::List::Iterator it; QStringList attendees; for ( it = contacts.begin(); it != contacts.end(); ++it ) { QString email = (*it).fullEmail(); if ( email.isEmpty() ) { attendees.append( (*it).realName() + "<>" ); } else { attendees.append( email ); } } interface()->openTodoEditor( i18nc( "@item", "Meeting" ), QString(), QStringList(), attendees ); return; } if ( KCalUtils::ICalDrag::canDecode( event->mimeData() ) ) { KCalCore::MemoryCalendar::Ptr cal( new KCalCore::MemoryCalendar( KSystemTimeZones::local() ) ); if ( KCalUtils::ICalDrag::fromMimeData( event->mimeData(), cal ) ) { KCalCore::Incidence::List incidences = cal->incidences(); Q_ASSERT( incidences.count() ); if ( !incidences.isEmpty() ) { event->accept(); KCalCore::Incidence::Ptr i = incidences.first(); QString summary; if ( i->type() == KCalCore::Incidence::TypeJournal ) { summary = i18nc( "@item", "Note: %1", i->summary() ); } else { summary = i->summary(); } interface()->openTodoEditor( summary, i->description(), QStringList() ); return; } // else fall through to text decoding } } if ( md->hasText() ) { QString text = md->text(); interface()->openTodoEditor( text ); return; } if ( KPIM::MailList::canDecode( md ) ) { KPIM::MailList mails = KPIM::MailList::fromMimeData( md ); event->accept(); if ( mails.count() != 1 ) { KMessageBox::sorry( core(), i18nc( "@info", "Dropping multiple mails is not supported." ) ); } else { KPIM::MailSummary mail = mails.first(); QString txt = i18nc( "@item", "From: %1\nTo: %2\nSubject: %3", mail.from(), mail.to(), mail.subject() ); QString uri = QLatin1String( "kmail:" ) + QString::number( mail.serialNumber() ) + '/' + mail.messageId(); KTemporaryFile tf; tf.setAutoRemove( true ); tf.write( event->encodedData( "message/rfc822" ) ); interface()->openTodoEditor( i18nc( "@item", "Mail: %1", mail.subject() ), txt, uri, tf.fileName(), QStringList(), "message/rfc822" ); tf.close(); } return; } kWarning() << QString( "Cannot handle drop events of type '%1'." ).arg( event->format() ); }