Merge lp:~renatofilho/qtorganizer5-eds/fix-all-dayevents into lp:qtorganizer5-eds

Proposed by Renato Araujo Oliveira Filho
Status: Merged
Approved by: Bill Filler
Approved revision: 91
Merged at revision: 94
Proposed branch: lp:~renatofilho/qtorganizer5-eds/fix-all-dayevents
Merge into: lp:qtorganizer5-eds
Prerequisite: lp:~renatofilho/qtorganizer5-eds/fix-query-with-detached-events
Diff against target: 152 lines (+113/-2)
2 files modified
organizer/qorganizer-eds-engine.cpp (+26/-2)
tests/unittest/event-test.cpp (+87/-0)
To merge this branch: bzr merge lp:~renatofilho/qtorganizer5-eds/fix-all-dayevents
Reviewer Review Type Date Requested Status
PS Jenkins bot continuous-integration Approve
Ubuntu Phablet Team Pending
Review via email: mp+287973@code.launchpad.net

Commit message

Fix qdatetime value before convert it to time_t.
Update event end time if saving event with startDate > endDate;

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'organizer/qorganizer-eds-engine.cpp'
--- organizer/qorganizer-eds-engine.cpp 2016-03-03 17:20:40 +0000
+++ organizer/qorganizer-eds-engine.cpp 2016-03-03 17:20:40 +0000
@@ -1340,6 +1340,10 @@
1340 *tzId = QByteArray(icaltimezone_get_tzid(timezone));1340 *tzId = QByteArray(icaltimezone_get_tzid(timezone));
1341 return icaltime_from_timet_with_zone(finalDate.toTime_t(), allDay, timezone);1341 return icaltime_from_timet_with_zone(finalDate.toTime_t(), allDay, timezone);
1342 } else {1342 } else {
1343 if (!finalDate.isValid()) {
1344 finalDate = QDateTime(finalDate.date(),
1345 allDay || !finalDate.time().isValid() ? QTime(0, 0, 0) : finalDate.time());
1346 }
1343 *tzId = "";1347 *tzId = "";
1344 return icaltime_from_timet(finalDate.toTime_t(), allDay);1348 return icaltime_from_timet(finalDate.toTime_t(), allDay);
1345 }1349 }
@@ -2078,8 +2082,18 @@
2078{2082{
2079 QOrganizerEventTime etr = item.detail(QOrganizerItemDetail::TypeEventTime);2083 QOrganizerEventTime etr = item.detail(QOrganizerItemDetail::TypeEventTime);
2080 if (!etr.isEmpty()) {2084 if (!etr.isEmpty()) {
2085 QDateTime eventEndDateTime = etr.endDateTime();
2086 if (etr.startDateTime() > eventEndDateTime) {
2087 eventEndDateTime = etr.startDateTime();
2088 }
2089
2090 if (etr.isAllDay() &&
2091 (eventEndDateTime.date() == etr.startDateTime().date())) {
2092 eventEndDateTime = etr.startDateTime().addDays(1);
2093 }
2094
2081 QByteArray tzId;2095 QByteArray tzId;
2082 struct icaltimetype ict = fromQDateTime(etr.endDateTime(), etr.isAllDay(), &tzId);2096 struct icaltimetype ict = fromQDateTime(eventEndDateTime, etr.isAllDay(), &tzId);
2083 ECalComponentDateTime dt;2097 ECalComponentDateTime dt;
2084 dt.tzid = tzId.isEmpty() ? NULL : tzId.constData();2098 dt.tzid = tzId.isEmpty() ? NULL : tzId.constData();
2085 dt.value = &ict;2099 dt.value = &ict;
@@ -2270,8 +2284,18 @@
2270{2284{
2271 QOrganizerTodoTime ttr = item.detail(QOrganizerItemDetail::TypeTodoTime);2285 QOrganizerTodoTime ttr = item.detail(QOrganizerItemDetail::TypeTodoTime);
2272 if (!ttr.isEmpty() && !ttr.dueDateTime().isNull()) {2286 if (!ttr.isEmpty() && !ttr.dueDateTime().isNull()) {
2287 QDateTime dueDateTime = ttr.dueDateTime();
2288 if (ttr.startDateTime() > dueDateTime) {
2289 dueDateTime = ttr.startDateTime();
2290 }
2291
2292 if (ttr.isAllDay() &&
2293 (dueDateTime.date() == ttr.startDateTime().date())) {
2294 dueDateTime = ttr.startDateTime().addDays(1);
2295 }
2296
2273 QByteArray tzId;2297 QByteArray tzId;
2274 struct icaltimetype ict = fromQDateTime(ttr.dueDateTime(), ttr.isAllDay(), &tzId);2298 struct icaltimetype ict = fromQDateTime(dueDateTime, ttr.isAllDay(), &tzId);
2275 ECalComponentDateTime dt;2299 ECalComponentDateTime dt;
2276 dt.tzid = tzId.isEmpty() ? NULL : tzId.constData();2300 dt.tzid = tzId.isEmpty() ? NULL : tzId.constData();
2277 dt.value = &ict;2301 dt.value = &ict;
22782302
=== modified file 'tests/unittest/event-test.cpp'
--- tests/unittest/event-test.cpp 2016-03-03 17:20:40 +0000
+++ tests/unittest/event-test.cpp 2016-03-03 17:20:40 +0000
@@ -578,6 +578,93 @@
578 QCOMPARE(eventResult.endDateTime().time(), QTime(0, 0, 0));578 QCOMPARE(eventResult.endDateTime().time(), QTime(0, 0, 0));
579 }579 }
580580
581 void testModifyAllDayEvent()
582 {
583 static QString displayLabelValue = QStringLiteral("All day title");
584 static QString descriptionValue = QStringLiteral("All day description");
585
586 QDateTime eventDateTime = QDateTime(QDate(2013, 9, 3), QTime(0,30,0));
587 QOrganizerEvent event;
588 event.setStartDateTime(eventDateTime);
589 event.setEndDateTime(eventDateTime.addDays(1));
590 event.setDisplayLabel(displayLabelValue);
591 event.setDescription(descriptionValue);
592 event.setAllDay(true);
593
594 QtOrganizer::QOrganizerManager::Error error;
595 QMap<int, QtOrganizer::QOrganizerManager::Error> errorMap;
596 QList<QOrganizerItem> items;
597 items << event;
598 bool saveResult = m_engine->saveItems(&items,
599 QList<QtOrganizer::QOrganizerItemDetail::DetailType>(),
600 &errorMap,
601 &error);
602 QVERIFY(saveResult);
603
604 QOrganizerEvent eventResult = static_cast<QOrganizerEvent>(items[0]);
605 eventResult.setDescription(QStringLiteral("New description"));
606 items.clear();
607 items << eventResult;
608 saveResult = m_engine->saveItems(&items,
609 QList<QtOrganizer::QOrganizerItemDetail::DetailType>(),
610 &errorMap,
611 &error);
612
613 QOrganizerItemFetchHint hint;
614 QList<QOrganizerItemId> ids;
615 ids << items[0].id();
616 items = m_engine->items(ids, hint, &errorMap, &error);
617 QCOMPARE(items.count(), 1);
618
619 eventResult = static_cast<QOrganizerEvent>(items[0]);
620 QCOMPARE(eventResult.description(), QStringLiteral("New description"));
621 QCOMPARE(eventResult.isAllDay(), true);
622 QCOMPARE(eventResult.startDateTime().date(), eventDateTime.date());
623 QCOMPARE(eventResult.startDateTime().time(), QTime(0, 0, 0));
624 QCOMPARE(eventResult.endDateTime().date(), eventDateTime.date().addDays(1));
625 QCOMPARE(eventResult.endDateTime().time(), QTime(0, 0, 0));
626 }
627
628 void testCreateAllDayEventWithInvalidEndDate()
629 {
630 static QString displayLabelValue = QStringLiteral("All day title");
631 static QString descriptionValue = QStringLiteral("All day description");
632
633 QDateTime eventDateTime = QDateTime(QDate(2013, 9, 3), QTime(0,30,0));
634 QOrganizerEvent event;
635 event.setStartDateTime(eventDateTime);
636 event.setEndDateTime(eventDateTime.addDays(-10));
637 event.setDisplayLabel(displayLabelValue);
638 event.setDescription(descriptionValue);
639 event.setAllDay(true);
640
641 QtOrganizer::QOrganizerManager::Error error;
642 QMap<int, QtOrganizer::QOrganizerManager::Error> errorMap;
643 QList<QOrganizerItem> items;
644 items << event;
645 bool saveResult = m_engine->saveItems(&items,
646 QList<QtOrganizer::QOrganizerItemDetail::DetailType>(),
647 &errorMap,
648 &error);
649 QVERIFY(saveResult);
650 QCOMPARE(error, QOrganizerManager::NoError);
651 QVERIFY(errorMap.isEmpty());
652 QOrganizerItemId id = items[0].id();
653 QVERIFY(!id.isNull());
654
655 QOrganizerItemFetchHint hint;
656 QList<QOrganizerItemId> ids;
657 ids << items[0].id();
658 items = m_engine->items(ids, hint, &errorMap, &error);
659 QCOMPARE(items.count(), 1);
660
661 QOrganizerEvent eventResult = static_cast<QOrganizerEvent>(items[0]);
662 QCOMPARE(eventResult.isAllDay(), true);
663 QCOMPARE(eventResult.startDateTime().date(), eventDateTime.date());
664 QCOMPARE(eventResult.startDateTime().time(), QTime(0, 0, 0));
665 QCOMPARE(eventResult.endDateTime().date(), eventDateTime.date().addDays(1));
666 QCOMPARE(eventResult.endDateTime().time(), QTime(0, 0, 0));
667 }
581668
582 void testCreateTodoEventWithStartDate()669 void testCreateTodoEventWithStartDate()
583 {670 {

Subscribers

People subscribed via source and target branches