void OrganizerItemTransform::addTodoPostSaveDetails(QOrganizerItem *item, CTodo *ctodo) { // Priority int tempint = ctodo->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); } // Date start QDateTime tempdt = QDateTime::fromTime_t(ctodo->getDateStart()); if (!tempdt.isNull()) { QOrganizerTodoTime todoTime = item->detail<QOrganizerTodoTime>(); todoTime.setStartDateTime(tempdt); item->saveDetail(&todoTime); } // Due tempdt = QDateTime::fromTime_t(ctodo->getDue()); if (!tempdt.isNull()) { QOrganizerTodoTime todoTime = item->detail<QOrganizerTodoTime>(); todoTime.setDueDateTime(tempdt); item->saveDetail(&todoTime); } // Completed time tempdt = QDateTime::fromTime_t(ctodo->getCompleted()); if (!tempdt.isNull()) { QOrganizerTodoProgress todoProgress = item->detail<QOrganizerTodoProgress>(); todoProgress.setFinishedDateTime(tempdt); item->saveDetail(&todoProgress); } // Percent complete tempint = ctodo->getPercentComplete(); if (!tempdt.isNull()) { QOrganizerTodoProgress todoProgress = item->detail<QOrganizerTodoProgress>(); todoProgress.setPercentageComplete(tempint); item->saveDetail(&todoProgress); } // Status QOrganizerTodoProgress todoProgress = item->detail<QOrganizerTodoProgress>(); todoProgress.setStatus(static_cast<QOrganizerTodoProgress::Status>(ctodo->getStatus())); item->saveDetail(&todoProgress); // Timestamps time_t createdTime = ctodo->getCreatedTime(); time_t lastModifiedTime = ctodo->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 OrganizerTodoTimeTransform::transformToDetailL(const CCalInstance& instance, QOrganizerItem *itemOccurrence) { if (itemOccurrence->type() == QOrganizerItemType::TypeTodo || itemOccurrence->type() == QOrganizerItemType::TypeTodoOccurrence) { TCalTime startTime = instance.StartTimeL(); TCalTime endTime = instance.EndTimeL(); QOrganizerTodoTime range; if (startTime.TimeUtcL() != Time::NullTTime()) range.setStartDateTime(toQDateTimeL(startTime)); if (endTime.TimeUtcL() != Time::NullTTime()) range.setDueDateTime(toQDateTimeL(endTime)); if (!range.isEmpty()) itemOccurrence->saveDetail(&range); } }
void tst_QOrganizerItemDetails::todoTime() { QOrganizerTodoTime r; QOrganizerTodo t; QVERIFY(r.isEmpty()); QVERIFY(!r.isAllDay()); r.setStartDateTime(QDateTime(QDate(2010, 10, 13))); QVERIFY(r.startDateTime() == QDateTime(QDate(2010, 10, 13))); QVERIFY(!r.isAllDay()); r.setAllDay(true); QVERIFY(r.isAllDay()); r.setDueDateTime(QDateTime(QDate(2010, 10, 14))); QVERIFY(r.dueDateTime() == QDateTime(QDate(2010, 10, 14))); // add QOrganizerTodoTime r2; r2.setStartDateTime(QDateTime(QDate(2010, 10, 23))); r2.setDueDateTime(QDateTime(QDate(2010, 10, 24))); QVERIFY(t.saveDetail(&r)); QVERIFY(t.details(QOrganizerItemDetail::TypeTodoTime).size() == 1); QVERIFY(t.detail(QOrganizerItemDetail::TypeTodoTime) == r); QVERIFY(t.saveDetail(&r2)); // note that we don't enforce uniqueness in organizeritem; that's done by the manager! QVERIFY(t.details(QOrganizerItemDetail::TypeTodoTime).size() == 2); QVERIFY(t.removeDetail(&r2)); QVERIFY(t.details(QOrganizerItemDetail::TypeTodoTime).size() == 1); QVERIFY(t.detail(QOrganizerItemDetail::TypeTodoTime) == r); // update r.setAllDay(false); QVERIFY(t.detail(QOrganizerItemDetail::TypeTodoTime) != r); QVERIFY(t.saveDetail(&r)); QVERIFY(t.detail(QOrganizerItemDetail::TypeTodoTime) == r); QVERIFY(t.details(QOrganizerItemDetail::TypeTodoTime).size() == 1); // remove QVERIFY(t.removeDetail(&r)); QVERIFY(t.details(QOrganizerItemDetail::TypeTodoTime).size() == 0); }
/*! Sets the date time by which the task should be completed to \a dueDateTime. For all-day tasks, the time part can be set to any valid value. */ void QOrganizerTodoOccurrence::setDueDateTime(const QDateTime &dueDateTime) { QOrganizerTodoTime ttr = detail(QOrganizerItemDetail::TypeTodoTime); ttr.setDueDateTime(dueDateTime); saveDetail(&ttr); }