void tst_QOrganizerItemDetails::todoProgress() { QOrganizerTodoProgress p; QOrganizerTodo t; QVERIFY(p.status() == QOrganizerTodoProgress::StatusNotStarted); QVERIFY(p.isEmpty()); p.setStatus(QOrganizerTodoProgress::StatusInProgress); QVERIFY(!p.isEmpty()); QVERIFY(p.status() == QOrganizerTodoProgress::StatusInProgress); p.setPercentageComplete(50); QVERIFY(p.percentageComplete() == 50); p.setPercentageComplete(200); // this should fail QVERIFY(p.percentageComplete() == 50); // value should remain unchanged. p.setFinishedDateTime(QDateTime(QDate(2010, 10, 13))); QVERIFY(p.finishedDateTime() == QDateTime(QDate(2010, 10, 13))); QVERIFY(p.status() != QOrganizerTodoProgress::StatusComplete); // XXX TODO: should this be automatic? p.setPercentageComplete(100); QVERIFY(p.percentageComplete() == 100); QVERIFY(p.status() != QOrganizerTodoProgress::StatusComplete); // XXX TODO: should this be automatic? // add QVERIFY(t.saveDetail(&p)); QVERIFY(t.details(QOrganizerItemDetail::TypeTodoProgress).size() == 1); QVERIFY(t.detail(QOrganizerItemDetail::TypeTodoProgress) == p); // update p.setStatus(QOrganizerTodoProgress::StatusComplete); QVERIFY(p.status() == QOrganizerTodoProgress::StatusComplete); QVERIFY(t.detail(QOrganizerItemDetail::TypeTodoProgress) != p); QVERIFY(t.saveDetail(&p)); QVERIFY(t.details(QOrganizerItemDetail::TypeTodoProgress).size() == 1); // update, not add another QVERIFY(t.detail(QOrganizerItemDetail::TypeTodoProgress) == p); // remove QVERIFY(t.removeDetail(&p)); QVERIFY(t.details(QOrganizerItemDetail::TypeTodoProgress).size() == 0); }
/*! Returns the percentage of progress completed on the task described by the todo occurrence. */ int QOrganizerTodoOccurrence::progressPercentage() const { QOrganizerTodoProgress tp = detail(QOrganizerItemDetail::TypeTodoProgress); return tp.percentageComplete(); }