void OrganizerItemTransform::addEventPostSaveDetails(QOrganizerItem *item, CEvent *cevent) { // Priority int tempint = cevent->getPriority(); if (tempint != -1) { QOrganizerItemPriority priority = item->detail<QOrganizerItemPriority>(); priority.setPriority(static_cast<QOrganizerItemPriority::Priority>(tempint)); // assume that the saved priority is vCal compliant. item->saveDetail(&priority); } // Start time QDateTime tempdt = QDateTime::fromTime_t(cevent->getDateStart()); if (!tempdt.isNull()) { QOrganizerEventTime eventTime = item->detail<QOrganizerEventTime>(); eventTime.setStartDateTime(tempdt); item->saveDetail(&eventTime); } // End time tempdt = QDateTime::fromTime_t(cevent->getDateEnd()); if (!tempdt.isNull()) { QOrganizerEventTime eventTime = item->detail<QOrganizerEventTime>(); eventTime.setEndDateTime(tempdt); item->saveDetail(&eventTime); } // Recurrence m_recTransformer.transformToQrecurrence(cevent->getRecurrence()); QOrganizerItemRecurrence recurrence = item->detail<QOrganizerItemRecurrence>(); recurrence.setRecurrenceRules(m_recTransformer.recurrenceRules()); recurrence.setExceptionRules(m_recTransformer.exceptionRules()); recurrence.setRecurrenceDates(m_recTransformer.recurrenceDates()); recurrence.setExceptionDates(m_recTransformer.exceptionDates()); item->saveDetail(&recurrence); // Timestamps time_t createdTime = cevent->getCreatedTime(); time_t lastModifiedTime = cevent->getLastModified(); if (createdTime || lastModifiedTime) { QOrganizerItemTimestamp timeStamps = item->detail<QOrganizerItemTimestamp>(); timeStamps.setCreated(QDateTime::fromTime_t(createdTime)); timeStamps.setLastModified(QDateTime::fromTime_t(lastModifiedTime)); item->saveDetail(&timeStamps); } }
void tst_QOrganizerItemDetails::recurrence() { QOrganizerItemRecurrence r; QOrganizerEvent e; QOrganizerRecurrenceRule testRule; testRule.setFrequency(QOrganizerRecurrenceRule::Weekly); testRule.setLimit(4); QSet<QOrganizerRecurrenceRule> rrules; rrules << testRule; QOrganizerRecurrenceRule exrule; exrule.setFrequency(QOrganizerRecurrenceRule::Daily); testRule.setLimit(12); QSet<QOrganizerRecurrenceRule> exrules; exrules << exrule; QSet<QDate> rdates, exdates; rdates << QDate(2010, 10, 13); exdates << QDate(2010, 11, 17) << QDate(2010, 11, 20); QVERIFY(e.details(QOrganizerItemDetail::TypeRecurrence).size() == 0); r.setRecurrenceRules(rrules); QVERIFY(r.recurrenceRules() == rrules); QVERIFY(r.recurrenceDates().isEmpty()); QVERIFY(r.exceptionRules().isEmpty()); r.setExceptionRules(exrules); QVERIFY(r.recurrenceRules() == rrules); QVERIFY(r.exceptionRules() == exrules); QVERIFY(r.exceptionDates().isEmpty()); r.setRecurrenceDates(rdates); QVERIFY(r.recurrenceDates() == rdates); QVERIFY(r.exceptionDates().isEmpty()); QVERIFY(r.recurrenceRules() == rrules); QVERIFY(r.exceptionRules() == exrules); r.setExceptionDates(exdates); QVERIFY(r.recurrenceDates() == rdates); QVERIFY(r.exceptionDates() == exdates); QVERIFY(r.recurrenceRules() == rrules); QVERIFY(r.exceptionRules() == exrules); // now save. QVERIFY(e.saveDetail(&r)); QVERIFY(e.details(QOrganizerItemDetail::TypeRecurrence).size() == 1); QVERIFY(e.detail(QOrganizerItemDetail::TypeRecurrence) == r); // update exdates << QDate(2010, 10, 17); r.setExceptionDates(exdates); QVERIFY(e.detail(QOrganizerItemDetail::TypeRecurrence) != r); QVERIFY(e.saveDetail(&r)); QVERIFY(e.detail(QOrganizerItemDetail::TypeRecurrence) == r); QVERIFY(e.details(QOrganizerItemDetail::TypeRecurrence).size() == 1); // should update, not add another. // remove. QVERIFY(e.removeDetail(&r)); QVERIFY(e.details(QOrganizerItemDetail::TypeRecurrence).size() == 0); }
/*! Sets the list of recurrence rules \a rrules to be the rules which define when the event occurs, other than those dates specified explicitly via setRecurrenceDates(). */ void QOrganizerEvent::setRecurrenceRules(const QSet<QOrganizerRecurrenceRule>& rrules) { QOrganizerItemRecurrence rec = detail<QOrganizerItemRecurrence>(); rec.setRecurrenceRules(rrules); saveDetail(&rec); }