Merge lp:~renatofilho/ubuntu-ui-toolkit/save-alarms-in-local-time into lp:ubuntu-ui-toolkit/staging

Proposed by Renato Araujo Oliveira Filho
Status: Merged
Approved by: Zsombor Egri
Approved revision: 1286
Merged at revision: 1286
Proposed branch: lp:~renatofilho/ubuntu-ui-toolkit/save-alarms-in-local-time
Merge into: lp:ubuntu-ui-toolkit/staging
Diff against target: 119 lines (+16/-18)
1 file modified
modules/Ubuntu/Components/plugin/adapters/alarmsadapter_organizer.cpp (+16/-18)
To merge this branch: bzr merge lp:~renatofilho/ubuntu-ui-toolkit/save-alarms-in-local-time
Reviewer Review Type Date Requested Status
PS Jenkins bot continuous-integration Approve
Nekhelesh Ramananthan (community) testing on mako n4 image r79 Approve
Zsombor Egri Approve
Review via email: mp+237598@code.launchpad.net

Commit message

Save alarms in invalid time zone.

Use invalid time zone to floating time alarms.

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

Use invalid time zone to floating time alarms.

1285. By Renato Araujo Oliveira Filho

Use request StatusUpdate signal to handle operation complete.
Use QOrganizerItemRemoveByIdRequest to remove alarms.

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
1286. By Renato Araujo Oliveira Filho

Only uses invalid time zone flag for EDS backend.

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Zsombor Egri (zsombi) wrote :

Seems like AlarmData::transcodeDate() won't be needed anymore. Both places you are using it has Local TZ, so a simple QDateTime() conversion would be enough.

I removed it from the new branch at least: https://code.launchpad.net/~zsombi/ubuntu-ui-toolkit/alarm-data-adaptation/+merge/237611

See more comments inline.

review: Needs Fixing
Revision history for this message
Zsombor Egri (zsombi) wrote :

The inline comment of mine is overruled, you were right ;)

Revision history for this message
Zsombor Egri (zsombi) wrote :

Ok, let it go then.

review: Approve
Revision history for this message
Nekhelesh Ramananthan (nik90) wrote :

I tested this MP along with https://code.launchpad.net/~renatofilho/qtorganizer5-eds/fix-1311165/+merge/237142 and tested creating one-time , repeating alarms and as far as I could tell no regressions. This looks good (testing wise) on Mako N4 Image r79. Please ensure they both are included in the same silo.

review: Approve (testing on mako n4 image r79)
Revision history for this message
PS Jenkins bot (ps-jenkins) :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'modules/Ubuntu/Components/plugin/adapters/alarmsadapter_organizer.cpp'
2--- modules/Ubuntu/Components/plugin/adapters/alarmsadapter_organizer.cpp 2014-09-30 16:14:23 +0000
3+++ modules/Ubuntu/Components/plugin/adapters/alarmsadapter_organizer.cpp 2014-10-09 02:16:49 +0000
4@@ -25,6 +25,7 @@
5
6 #include <QtCore/QFile>
7 #include <QtCore/QDir>
8+#include <QtCore/QTimeZone>
9 #include <QtCore/QStandardPaths>
10 #include <QtCore/QJsonDocument>
11 #include <QtCore/QJsonObject>
12@@ -127,7 +128,7 @@
13
14 AlarmData alarm;
15 alarm.message = object["message"].toString();
16- alarm.originalDate = alarm.date = AlarmData::transcodeDate(QDateTime::fromString(object["date"].toString()), Qt::LocalTime);
17+ alarm.originalDate = alarm.date = QDateTime::fromString(object["date"].toString());
18 alarm.sound = object["sound"].toString();
19 alarm.type = static_cast<UCAlarm::AlarmType>(object["type"].toInt());
20 alarm.days = static_cast<UCAlarm::DaysOfWeek>(object["days"].toInt());
21@@ -158,7 +159,7 @@
22 Q_FOREACH(const AlarmData &alarm, alarmList) {
23 QJsonObject object;
24 object["message"] = alarm.message;
25- object["date"] = AlarmData::transcodeDate(alarm.originalDate, Qt::UTC).toString();
26+ object["date"] = alarm.originalDate.toString();
27 object["sound"] = alarm.sound.toString();
28 object["type"] = QJsonValue(alarm.type);
29 object["days"] = QJsonValue(alarm.days);
30@@ -181,7 +182,12 @@
31 event.setCollectionId(collection.id());
32 event.setAllDay(false);
33 if (alarm.changes & AlarmData::Date) {
34- event.setStartDateTime(AlarmData::transcodeDate(alarm.date, Qt::UTC));
35+ QDateTime dt = AlarmData::normalizeDate(alarm.date);
36+ // use invalid timezone to sinalize floating time, this is valid only for EDS backend
37+ if (manager->managerName() == ALARM_MANAGER) {
38+ dt = QDateTime(dt.date(), dt.time(), QTimeZone());
39+ }
40+ event.setStartDateTime(dt);
41 }
42 if (alarm.changes & AlarmData::Message) {
43 event.setDisplayLabel(alarm.message);
44@@ -251,7 +257,7 @@
45
46 alarm.cookie = QVariant::fromValue<QOrganizerItemId>(event.id());
47 alarm.message = event.displayLabel();
48- alarm.date = AlarmData::transcodeDate(event.startDateTime().toUTC(), Qt::LocalTime);
49+ alarm.date = AlarmData::transcodeDate(event.startDateTime(), Qt::LocalTime);
50 QOrganizerItemAudibleReminder audible = event.detail(QOrganizerItemDetail::TypeAudibleReminder);
51 alarm.sound = audible.dataUrl();
52 alarm.originalDate = alarm.date;
53@@ -499,10 +505,6 @@
54 endDate = startDate.addDays(8);
55 }
56
57- // transcode both dates
58- startDate = AlarmData::transcodeDate(startDate, Qt::UTC);
59- endDate = AlarmData::transcodeDate(endDate, Qt::UTC);
60-
61 QList<QOrganizerItem> occurrences = manager->itemOccurrences(event, startDate, endDate, 10);
62 // get the first occurrence and use the date from it
63 if ((occurrences.length() > 0) && (occurrences[0].type() == QOrganizerItemType::TypeTodoOccurrence)) {
64@@ -512,7 +514,7 @@
65 // check if the date is after the current datetime
66 // the first occurrence is the one closest to the currentDate, therefore we can safely
67 // set that startDate to the alarm
68- alarm.date = AlarmData::transcodeDate(occurrence.startDateTime().toUTC(), Qt::LocalTime);
69+ alarm.date = AlarmData::transcodeDate(occurrence.startDateTime(), Qt::LocalTime);
70 if (alarm.date > currentDate) {
71 // we have the proper date set, leave
72 break;
73@@ -574,13 +576,9 @@
74 return false;
75 }
76
77- QOrganizerTodo event;
78- AlarmsAdapter::get()->organizerEventFromAlarmData(alarm, event);
79- event.setId(alarm.cookie.value<QOrganizerItemId>());
80-
81- QOrganizerItemRemoveRequest *operation = new QOrganizerItemRemoveRequest(q_ptr);
82+ QOrganizerItemRemoveByIdRequest *operation = new QOrganizerItemRemoveByIdRequest(q_ptr);
83 operation->setManager(AlarmsAdapter::get()->manager);
84- operation->setItem(event);
85+ operation->setItemId(alarm.cookie.value<QOrganizerItemId>());
86 AlarmsAdapter::get()->listDirty = true;
87 return start(operation);
88 }
89@@ -631,7 +629,7 @@
90 completed = false;
91 // make sure we are in progress state
92 setStatus(requestTypeToOperation(), AlarmRequest::InProgress);
93- QObject::connect(m_request, SIGNAL(resultsAvailable()), q_ptr, SLOT(_q_updateProgress()));
94+ QObject::connect(m_request, SIGNAL(stateChanged(QOrganizerAbstractRequest::State)), q_ptr, SLOT(_q_updateProgress()));
95 if (m_request->start()) {
96 // check if the request got completed without having the slot called (some engines may do that)
97 if (!completed && m_request->state() >= QOrganizerAbstractRequest::CanceledState) {
98@@ -648,11 +646,11 @@
99 void AlarmRequestAdapter::_q_updateProgress()
100 {
101 completed = true;
102-
103 QOrganizerAbstractRequest::State state = m_request->state();
104 AlarmRequest::Operation opCode = requestTypeToOperation();
105 switch (state) {
106 case QOrganizerAbstractRequest::InactiveState: {
107+ completed = false;
108 setStatus(opCode, AlarmRequest::Ready);
109 break;
110 }
111@@ -717,7 +715,7 @@
112 case QOrganizerAbstractRequest::ItemSaveRequest: {
113 return AlarmRequest::Saving;
114 }
115- case QOrganizerAbstractRequest::ItemRemoveRequest: {
116+ case QOrganizerAbstractRequest::ItemRemoveByIdRequest: {
117 return AlarmRequest::Canceling;
118 }
119 case QOrganizerAbstractRequest::ItemFetchRequest: {

Subscribers

People subscribed via source and target branches