void CalendarResource::itemChanged(const Akonadi::Item &item, const QSet< QByteArray > &partIdentifiers) { Q_UNUSED(partIdentifiers); if (!canPerformTask<KCalCore::Event::Ptr>(item, KCalCore::Event::eventMimeType()) && !canPerformTask<KCalCore::Todo::Ptr>(item, KCalCore::Todo::todoMimeType())) { return; } KGAPI2::Job *job = Q_NULLPTR; if (item.hasPayload<KCalCore::Event::Ptr>()) { KCalCore::Event::Ptr event = item.payload<KCalCore::Event::Ptr>(); EventPtr kevent(new Event(*event)); kevent->setUid(item.remoteId()); job = new EventModifyJob(kevent, item.parentCollection().remoteId(), account(), this); connect(job, &EventCreateJob::finished, this, &CalendarResource::slotGenericJobFinished); } else if (item.hasPayload<KCalCore::Todo::Ptr>()) { KCalCore::Todo::Ptr todo = item.payload<KCalCore::Todo::Ptr>(); TaskPtr ktodo(new Task(*todo)); QString parentUid = todo->relatedTo(KCalCore::Incidence::RelTypeParent); job = new TaskMoveJob(item.remoteId(), item.parentCollection().remoteId(), parentUid, account(), this); job->setProperty(ITEM_PROPERTY, QVariant::fromValue(item)); connect(job, &EventCreateJob::finished, this, &CalendarResource::slotModifyTaskReparentFinished); } else { cancelTask(i18n("Invalid payload type")); return; } job->setProperty(ITEM_PROPERTY, QVariant::fromValue(item)); }
void KCalConversionTest::testTodoConversion() { QFETCH(KCalCore::Todo, kcal); QFETCH(Kolab::Todo, kolab); const KCalCore::Todo::Ptr e = toKCalCore(kolab); QCOMPARE(e->uid(), kcal.uid()); QCOMPARE(e->dtStart(), kcal.dtStart()); QCOMPARE(e->dtDue(), kcal.dtDue()); QCOMPARE(e->relatedTo(KCalCore::Incidence::RelTypeParent), kcal.relatedTo(KCalCore::Incidence::RelTypeParent)); const Kolab::Todo &b = fromKCalCore(kcal); QCOMPARE(b.uid(), kolab.uid()); QCOMPARE(b.start(), kolab.start()); QCOMPARE(b.due(), kolab.due()); QCOMPARE(b.relatedTo(), kolab.relatedTo()); }