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

Proposed by Renato Araujo Oliveira Filho
Status: Merged
Merged at revision: 41
Proposed branch: lp:~renatofilho/qtorganizer5-eds/fix-1285958
Merge into: lp:qtorganizer5-eds
Diff against target: 127 lines (+97/-2)
2 files modified
qorganizer/qorganizer-eds-engine.cpp (+14/-2)
tests/unittest/recurrence-test.cpp (+83/-0)
To merge this branch: bzr merge lp:~renatofilho/qtorganizer5-eds/fix-1285958
Reviewer Review Type Date Requested Status
Bill Filler (community) Approve
PS Jenkins bot continuous-integration Approve
Review via email: mp+209791@code.launchpad.net

Commit message

Fixed parse from icalrecurrencetype to QtOrganizer::QOrganizerRecurrenceRule for weekly recurrence.

Description of the change

Are there any related MPs required for this MP to build/function as expected? NO

Is your branch in sync with latest trunk (e.g. bzr pull lp:trunk -> no changes): YES

Did you perform an exploratory manual test run of your code change and any related functionality on device or emulator? YES

Did you successfully run all tests found in your component's Test Plan (https://wiki.ubuntu.com/Process/Merges/TestPlan/qtorganizer5-eds) on device or emulator? YES

If you changed the UI, was the change specified/approved by design? NO UI CHANGE

If you changed the packaging (debian), did you subscribe a core-dev to this MP? NO PACKAGE CHANGE

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

I tested this. I can now set a recurring alarm for Sunday but can't enable it (: No alarms can be enabled anymore with this fix. Without it I can correctly enable alarms

review: Needs Fixing
Revision history for this message
Bill Filler (bfiller) wrote :

Actually, this MR is fine. The one that is causing the problem is https://code.launchpad.net/~renatofilho/qtorganizer5-eds/fix-1284375/+merge/208197

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'qorganizer/qorganizer-eds-engine.cpp'
2--- qorganizer/qorganizer-eds-engine.cpp 2014-02-28 23:36:54 +0000
3+++ qorganizer/qorganizer-eds-engine.cpp 2014-03-06 21:32:32 +0000
4@@ -1147,15 +1147,27 @@
5
6 void QOrganizerEDSEngine::parseWeekRecurrence(struct icalrecurrencetype *rule, QtOrganizer::QOrganizerRecurrenceRule *qRule)
7 {
8+ static QMap<icalrecurrencetype_weekday, Qt::DayOfWeek> daysOfWeekMap;
9+ if (daysOfWeekMap.isEmpty()) {
10+ daysOfWeekMap.insert(ICAL_MONDAY_WEEKDAY, Qt::Monday);
11+ daysOfWeekMap.insert(ICAL_THURSDAY_WEEKDAY, Qt::Thursday);
12+ daysOfWeekMap.insert(ICAL_WEDNESDAY_WEEKDAY, Qt::Wednesday);
13+ daysOfWeekMap.insert(ICAL_TUESDAY_WEEKDAY, Qt::Tuesday);
14+ daysOfWeekMap.insert(ICAL_FRIDAY_WEEKDAY, Qt::Friday);
15+ daysOfWeekMap.insert(ICAL_SATURDAY_WEEKDAY, Qt::Saturday);
16+ daysOfWeekMap.insert(ICAL_SUNDAY_WEEKDAY, Qt::Sunday);
17+ }
18+
19 qRule->setFrequency(QOrganizerRecurrenceRule::Weekly);
20
21 QSet<Qt::DayOfWeek> daysOfWeek;
22- for (int d=0; d < Qt::Sunday; d++) {
23+ for (int d=0; d <= Qt::Sunday; d++) {
24 short day = rule->by_day[d];
25 if (day != ICAL_RECURRENCE_ARRAY_MAX) {
26- daysOfWeek.insert(static_cast<Qt::DayOfWeek>(icalrecurrencetype_day_day_of_week(rule->by_day[d]) - 1));
27+ daysOfWeek.insert(daysOfWeekMap[icalrecurrencetype_day_day_of_week(rule->by_day[d])]);
28 }
29 }
30+
31 qRule->setDaysOfWeek(daysOfWeek);
32 }
33
34
35=== modified file 'tests/unittest/recurrence-test.cpp'
36--- tests/unittest/recurrence-test.cpp 2014-02-28 15:04:24 +0000
37+++ tests/unittest/recurrence-test.cpp 2014-03-06 21:32:32 +0000
38@@ -308,6 +308,89 @@
39 QCOMPARE(time.startDateTime(), expectedDates[i]);
40 }
41 }
42+
43+ void testCreateSunTueWedThuFriSatEvents()
44+ {
45+ static QString displayLabelValue = QStringLiteral("testCreateSunTueWedThuFriSatEvents test");
46+ static QString descriptionValue = QStringLiteral("testCreateSunTueWedThuFriSatEvents description");
47+
48+ QOrganizerEvent ev;
49+ ev.setCollectionId(m_collection.id());
50+ ev.setStartDateTime(QDateTime(QDate(2014, 03, 1), QTime(0,0,0)));
51+ ev.setEndDateTime(QDateTime(QDate(2014, 03, 1), QTime(0,30,0)));
52+ ev.setDisplayLabel(displayLabelValue);
53+ ev.setDescription(descriptionValue);
54+
55+ QOrganizerRecurrenceRule rule;
56+ rule.setFrequency(QOrganizerRecurrenceRule::Weekly);
57+ QSet<Qt::DayOfWeek> dasyOfWeek;
58+ dasyOfWeek << Qt::Sunday
59+ << Qt::Tuesday
60+ << Qt::Wednesday
61+ << Qt::Thursday
62+ << Qt::Friday
63+ << Qt::Saturday;
64+
65+ rule.setDaysOfWeek(dasyOfWeek);
66+ ev.setRecurrenceRule(rule);
67+
68+ QtOrganizer::QOrganizerManager::Error error;
69+ QMap<int, QtOrganizer::QOrganizerManager::Error> errorMap;
70+ QList<QOrganizerItem> items;
71+ items << ev;
72+ bool saveResult = m_engine->saveItems(&items,
73+ QList<QtOrganizer::QOrganizerItemDetail::DetailType>(),
74+ &errorMap,
75+ &error);
76+ QVERIFY(saveResult);
77+ QCOMPARE(error, QtOrganizer::QOrganizerManager::NoError);
78+
79+ // append new item to be removed after the test
80+ QOrganizerItemId parentId = items[0].id();
81+ appendToRemove(parentId);
82+
83+ QOrganizerItemSortOrder sort;
84+ QOrganizerItemFetchHint hint;
85+ QOrganizerItemFilter filter;
86+
87+ // check if the parent was saved correct
88+ items = m_engine->items(QList<QOrganizerItemId>() << parentId, hint, &errorMap, &error);
89+ QCOMPARE(items.size(), 1);
90+ QOrganizerEvent result = items[0];
91+ QCOMPARE(result.collectionId(), ev.collectionId());
92+ QCOMPARE(result.startDateTime(), ev.startDateTime());
93+ QCOMPARE(result.endDateTime(), ev.endDateTime());
94+ QCOMPARE(result.displayLabel(), ev.displayLabel());
95+ QCOMPARE(result.description(), ev.description());
96+
97+ QOrganizerRecurrenceRule savedRule = result.recurrenceRule();
98+ QCOMPARE(savedRule.frequency(), rule.frequency());
99+ QCOMPARE(savedRule.daysOfWeek(), rule.daysOfWeek());
100+
101+ items = m_engine->items(filter,
102+ QDateTime(QDate(2014, 03, 1), QTime(0,0,0)),
103+ QDateTime(QDate(2014, 03, 8), QTime(24,0,0)),
104+ 100,
105+ sort,
106+ hint,
107+ &error);
108+
109+ QList<QDateTime> expectedDates;
110+ expectedDates << QDateTime(QDate(2014, 03, 1), QTime(0,0,0))
111+ << QDateTime(QDate(2014, 03, 2), QTime(0,0,0))
112+ << QDateTime(QDate(2014, 03, 4), QTime(0,0,0))
113+ << QDateTime(QDate(2014, 03, 5), QTime(0,0,0))
114+ << QDateTime(QDate(2014, 03, 6), QTime(0,0,0))
115+ << QDateTime(QDate(2014, 03, 7), QTime(0,0,0));
116+
117+ QCOMPARE(items.count(), expectedDates.size());
118+ for(int i=0, iMax=expectedDates.size(); i < iMax; i++) {
119+ QOrganizerItemParent itemParent = items[i].detail(QOrganizerItemDetail::TypeParent);
120+ QOrganizerEventTime time = items[i].detail(QOrganizerItemDetail::TypeEventTime);
121+ QCOMPARE(itemParent.parentId(), parentId);
122+ QCOMPARE(time.startDateTime(), expectedDates[i]);
123+ }
124+ }
125 };
126
127 const QString RecurrenceTest::defaultCollectionName = QStringLiteral("TEST_RECURRENCE_EVENT_COLLECTION");

Subscribers

People subscribed via source and target branches