IncidenceEditorNG::IncidenceDialog *KODialogManager::createDialog(const Akonadi::Item &item) { const KCalCore::Incidence::Ptr incidence = CalendarSupport::incidence(item); if (!incidence) { return Q_NULLPTR; } IncidenceEditorNG::IncidenceDialog *dialog = IncidenceEditorNG::IncidenceDialogFactory::create( /*needs initial saving=*/false, incidence->type(), mMainView->incidenceChanger(), mMainView); return dialog; }
bool NemoCalendarImportModel::importToMemory(const QString &fileName) { if (!mEventList.isEmpty()) mEventList.clear(); beginResetModel(); KCalCore::MemoryCalendar::Ptr cal(new KCalCore::MemoryCalendar(KDateTime::Spec::LocalZone())); importFromFile(fileName, cal); KCalCore::Incidence::List incidenceList = cal->incidences(); for (int i = 0; i < incidenceList.size(); i++) { KCalCore::Incidence::Ptr incidence = incidenceList.at(i); if (incidence->type() == KCalCore::IncidenceBase::TypeEvent) mEventList.append(incidence.staticCast<KCalCore::Event>()); } if (!mEventList.isEmpty()) qSort(mEventList.begin(), mEventList.end(), incidenceLessThan); endResetModel(); emit countChanged(); return true; }
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() ); }