Merge lp:~renatofilho/qtorganizer5-eds/fix-1437305 into lp:qtorganizer5-eds

Proposed by Renato Araujo Oliveira Filho on 2015-06-10
Status: Merged
Merged at revision: 87
Proposed branch: lp:~renatofilho/qtorganizer5-eds/fix-1437305
Merge into: lp:qtorganizer5-eds
Diff against target: 148 lines (+74/-24)
2 files modified
organizer/qorganizer-eds-engine.cpp (+26/-21)
tests/unittest/event-test.cpp (+48/-3)
To merge this branch: bzr merge lp:~renatofilho/qtorganizer5-eds/fix-1437305
Reviewer Review Type Date Requested Status
Alan Pope 🍺🐧🐱 πŸ¦„ 2015-06-10 Needs Fixing on 2015-06-11
PS Jenkins bot continuous-integration Needs Fixing on 2015-06-10
Review via email: mp+261666@code.launchpad.net

Commit Message

Does not save timezone for allday events.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'organizer/qorganizer-eds-engine.cpp'
2--- organizer/qorganizer-eds-engine.cpp 2015-05-08 20:01:32 +0000
3+++ organizer/qorganizer-eds-engine.cpp 2015-06-10 20:16:23 +0000
4@@ -1212,7 +1212,8 @@
5 {
6 uint tmTime;
7
8- if (tzId) {
9+ // check if ialtimetype contais a time and timezone
10+ if (!icaltime_is_date(value) && tzId) {
11 icaltimezone *timezone = icaltimezone_get_builtin_timezone_from_tzid(tzId);
12 // fallback: sometimes the tzId contains the location name
13 if (!timezone) {
14@@ -1226,7 +1227,9 @@
15 tmTime = icaltime_as_timet(value);
16 QDateTime t = QDateTime::fromTime_t(tmTime).toUTC();
17 // floating time contains invalid timezone
18- return QDateTime(t.date(), t.time(), QTimeZone());
19+ return QDateTime(t.date(),
20+ (icaltime_is_date(value) ? QTime() : t.time()),
21+ QTimeZone());
22 }
23 }
24
25@@ -1237,26 +1240,28 @@
26 QDateTime finalDate(dateTime);
27 QTimeZone tz;
28
29- switch (finalDate.timeSpec()) {
30- case Qt::UTC:
31- case Qt::OffsetFromUTC:
32- // convert date to UTC timezone
33- tz = QTimeZone("UTC");
34- finalDate = finalDate.toTimeZone(tz);
35- break;
36- case Qt::TimeZone:
37- tz = finalDate.timeZone();
38- if (!tz.isValid()) {
39- // floating time
40- finalDate = QDateTime(finalDate.date(), finalDate.time(), Qt::UTC);
41+ if (!allDay) {
42+ switch (finalDate.timeSpec()) {
43+ case Qt::UTC:
44+ case Qt::OffsetFromUTC:
45+ // convert date to UTC timezone
46+ tz = QTimeZone("UTC");
47+ finalDate = finalDate.toTimeZone(tz);
48+ break;
49+ case Qt::TimeZone:
50+ tz = finalDate.timeZone();
51+ if (!tz.isValid()) {
52+ // floating time
53+ finalDate = QDateTime(finalDate.date(), finalDate.time(), Qt::UTC);
54+ }
55+ break;
56+ case Qt::LocalTime:
57+ tz = QTimeZone(QTimeZone::systemTimeZoneId());
58+ finalDate = finalDate.toTimeZone(tz);
59+ break;
60+ default:
61+ break;
62 }
63- break;
64- case Qt::LocalTime:
65- tz = QTimeZone(QTimeZone::systemTimeZoneId());
66- finalDate = finalDate.toTimeZone(tz);
67- break;
68- default:
69- break;
70 }
71
72 if (tz.isValid()) {
73
74=== modified file 'tests/unittest/event-test.cpp'
75--- tests/unittest/event-test.cpp 2015-04-13 21:30:00 +0000
76+++ tests/unittest/event-test.cpp 2015-06-10 20:16:23 +0000
77@@ -498,15 +498,16 @@
78 QCOMPARE(errorMap[1], QOrganizerManager::InvalidCollectionError);
79 }
80
81- void testCreateAllDayEvent()
82+ void testCreateAllDayTodo()
83 {
84 static QString displayLabelValue = QStringLiteral("All day title");
85 static QString descriptionValue = QStringLiteral("All day description");
86
87+ QDateTime eventDateTime = QDateTime(QDate(2013, 9, 3), QTime(0,30,0));
88 QOrganizerTodo todo;
89 todo.setCollectionId(m_collection.id());
90 todo.setAllDay(true);
91- todo.setStartDateTime(QDateTime(QDate(2013, 9, 3), QTime(0,30,0)));
92+ todo.setStartDateTime(eventDateTime);
93 todo.setDisplayLabel(displayLabelValue);
94 todo.setDescription(descriptionValue);
95
96@@ -532,7 +533,51 @@
97
98 QOrganizerTodo todoResult = static_cast<QOrganizerTodo>(items[0]);
99 QCOMPARE(todoResult.isAllDay(), true);
100- }
101+ QCOMPARE(todoResult.startDateTime().date(), eventDateTime.date());
102+ QCOMPARE(todoResult.startDateTime().time(), QTime(0, 0, 0));
103+ }
104+
105+ void testCreateAllDayEvent()
106+ {
107+ static QString displayLabelValue = QStringLiteral("All day title");
108+ static QString descriptionValue = QStringLiteral("All day description");
109+
110+ QDateTime eventDateTime = QDateTime(QDate(2013, 9, 3), QTime(0,30,0));
111+ QOrganizerEvent event;
112+ event.setStartDateTime(eventDateTime);
113+ event.setEndDateTime(eventDateTime.addDays(1));
114+ event.setDisplayLabel(displayLabelValue);
115+ event.setDescription(descriptionValue);
116+ event.setAllDay(true);
117+
118+ QtOrganizer::QOrganizerManager::Error error;
119+ QMap<int, QtOrganizer::QOrganizerManager::Error> errorMap;
120+ QList<QOrganizerItem> items;
121+ items << event;
122+ bool saveResult = m_engine->saveItems(&items,
123+ QList<QtOrganizer::QOrganizerItemDetail::DetailType>(),
124+ &errorMap,
125+ &error);
126+ QVERIFY(saveResult);
127+ QCOMPARE(error, QOrganizerManager::NoError);
128+ QVERIFY(errorMap.isEmpty());
129+ QOrganizerItemId id = items[0].id();
130+ QVERIFY(!id.isNull());
131+
132+ QOrganizerItemFetchHint hint;
133+ QList<QOrganizerItemId> ids;
134+ ids << items[0].id();
135+ items = m_engine->items(ids, hint, &errorMap, &error);
136+ QCOMPARE(items.count(), 1);
137+
138+ QOrganizerEvent eventResult = static_cast<QOrganizerEvent>(items[0]);
139+ QCOMPARE(eventResult.isAllDay(), true);
140+ QCOMPARE(eventResult.startDateTime().date(), eventDateTime.date());
141+ QCOMPARE(eventResult.startDateTime().time(), QTime(0, 0, 0));
142+ QCOMPARE(eventResult.endDateTime().date(), eventDateTime.date().addDays(1));
143+ QCOMPARE(eventResult.endDateTime().time(), QTime(0, 0, 0));
144+ }
145+
146
147 void testCreateTodoEventWithStartDate()
148 {

Subscribers

People subscribed via source and target branches