Merge lp:~renatofilho/ubuntu-calendar-app/fix-1470583 into lp:ubuntu-calendar-app

Proposed by Renato Araujo Oliveira Filho
Status: Merged
Approved by: Arthur Mello
Approved revision: 791
Merged at revision: 793
Proposed branch: lp:~renatofilho/ubuntu-calendar-app/fix-1470583
Merge into: lp:ubuntu-calendar-app
Diff against target: 170 lines (+31/-58)
3 files modified
EventDetails.qml (+3/-1)
EventReminder.qml (+4/-22)
NewEvent.qml (+24/-35)
To merge this branch: bzr merge lp:~renatofilho/ubuntu-calendar-app/fix-1470583
Reviewer Review Type Date Requested Status
Arthur Mello (community) Approve
Nekhelesh Ramananthan Approve
Review via email: mp+289705@code.launchpad.net

Commit message

Fix reminder save.

Remove audible reminder if the event is marked with 'no reminder';
Make sure that audible reminders are saved with 0 repetition;

To post a comment you must log in.
Revision history for this message
Nekhelesh Ramananthan (nik90) wrote :

I just clean wiped and reflashed my Nexus4 test device running rc-proposed channels. Even if with the store version, I'm unable to reproduce this bug :/. However I understand this MP ensures that audible reminders are saved with 0 repetition and that's what I am reviewing this MP for.

Revision history for this message
Renato Araujo Oliveira Filho (renatofilho) wrote :

Yes basically this MR does a few fixes:

1 - Make sure that visual reminders does not get erased or edited;
2 - Does not destroy any extra audible reminders;
3 - Make sure that audible reminders created by the app get saved with repetition equals 0;

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

Code makes sense and looks good. On testing, it does work as expected as well. Approving!

review: Approve
Revision history for this message
Arthur Mello (artmello) wrote :

lgtm

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'EventDetails.qml'
2--- EventDetails.qml 2016-03-21 14:40:17 +0000
3+++ EventDetails.qml 2016-03-21 19:52:21 +0000
4@@ -136,7 +136,9 @@
5 }
6
7 function updateReminder(event) {
8- var reminder = event.detail(Detail.VisualReminder)
9+ //TODO: implment support for display information about all reminder
10+ // We can have multiples Audible and Visible reminders.
11+ var reminder = event.detail(Detail.AudibleReminder)
12 if(reminder) {
13 for(var i=0; i<reminderModel.count; i++) {
14 if(reminder.secondsBeforeStart === reminderModel.get(i).value) {
15
16=== modified file 'EventReminder.qml'
17--- EventReminder.qml 2016-01-29 14:47:31 +0000
18+++ EventReminder.qml 2016-03-21 19:52:21 +0000
19@@ -24,11 +24,12 @@
20 id:root
21 objectName: "eventReminder"
22
23- property var visualReminder: null
24 property var audibleReminder: null
25 property var reminderModel: null
26 property var eventTitle: null
27- property var reminderTime: visualReminder.secondsBeforeStart
28+ property int reminderTime: -1
29+
30+ signal reminderTimeUpdated(int value);
31
32 visible: false
33 flickable: null
34@@ -37,26 +38,7 @@
35 head.backAction: Action{
36 iconName:"back"
37 onTriggered:{
38- var repeatCount = 3;
39- var repeatDelay = 5 * 60;
40-
41- //reminder on event time
42- if( reminderTime === 0 ) {
43- repeatCount = 0;
44- repeatDelay = 0;
45- } else if( reminderTime === 300) { //5 min
46- repeatCount = 1;
47- }
48-
49- visualReminder.repetitionCount = repeatCount;
50- visualReminder.repetitionDelay = repeatDelay;
51- visualReminder.message = eventTitle
52- visualReminder.secondsBeforeStart = reminderTime;
53-
54- audibleReminder.repetitionCount = repeatCount;
55- audibleReminder.repetitionDelay = repeatDelay;
56- audibleReminder.secondsBeforeStart = reminderTime;
57-
58+ reminderTimeUpdated(reminderTime)
59 pop();
60 }
61 }
62
63=== modified file 'NewEvent.qml'
64--- NewEvent.qml 2016-03-18 00:40:37 +0000
65+++ NewEvent.qml 2016-03-21 19:52:21 +0000
66@@ -42,8 +42,7 @@
67
68 property var startDate;
69 property var endDate;
70- //default reminder time = 15 min
71- property int reminderValue: 900;
72+ property alias reminderValue: eventReminder.reminderValue
73
74 property alias scrollY: flickable.contentY
75 property bool isEdit: false
76@@ -75,7 +74,6 @@
77
78 function updateEventInfo(date, allDay) {
79 selectCalendar(model.getDefaultCollection().collectionId);
80- eventReminder.reminderValue = root.reminderValue
81 updateEventDate(date, allDay)
82 }
83
84@@ -165,13 +163,12 @@
85 }
86 }
87 }
88- var reminder = e.detail( Detail.VisualReminder);
89+ var reminder = e.detail(Detail.AudibleReminder);
90 if (reminder) {
91- visualReminder.secondsBeforeStart = reminder.secondsBeforeStart;
92+ root.reminderValue = reminder.secondsBeforeStart
93 } else {
94- visualReminder.secondsBeforeStart = reminderModel.get(0).value;
95+ root.reminderValue = -1
96 }
97-
98 selectCalendar(e.collectionId);
99 }
100
101@@ -225,20 +222,21 @@
102 }
103 }
104
105- //remove old reminder value
106- var oldVisualReminder = event.detail(Detail.VisualReminder);
107- if(oldVisualReminder) {
108- event.removeDetail(oldVisualReminder);
109+ // update audible reminder time if necessary
110+ // TODO: we only support audible reminders for now
111+ var reminder = event.detail(Detail.AudibleReminder);
112+ if (root.reminderValue >= 0) {
113+ if (!reminder) {
114+ reminder = Qt.createQmlObject("import QtOrganizer 5.0; AudibleReminder {}", root, "")
115+ reminder.repetitionCount = 0
116+ reminder.repetitionDelay = 0
117+ }
118+ reminder.secondsBeforeStart = root.reminderValue
119+ event.setDetail(reminder)
120+ } else if (reminder) {
121+ event.removeDetail(reminder)
122 }
123
124- var oldAudibleReminder = event.detail(Detail.AudibleReminder);
125- if(oldAudibleReminder) {
126- event.removeDetail(oldAudibleReminder);
127- }
128- if(visualReminder.secondsBeforeStart >= 0) {
129- event.setDetail(visualReminder);
130- event.setDetail(audibleReminder);
131- }
132 event.collectionId = calendarsOption.model[calendarsOption.selectedIndex].collectionId;
133 model.setDefaultCollection(event.collectionId);
134
135@@ -254,17 +252,6 @@
136 }
137 }
138
139- VisualReminder{
140- id: visualReminder
141- secondsBeforeStart: root.reminderValue
142-
143- onSecondsBeforeStartChanged: eventReminder.reminderValue = visualReminder.secondsBeforeStart
144- }
145- AudibleReminder{
146- id: audibleReminder
147- secondsBeforeStart: root.reminderValue
148- }
149-
150 function getDaysOfWeek(){
151 var daysOfWeek = [];
152 switch(recurrenceOption.selectedIndex){
153@@ -748,11 +735,13 @@
154 if (!stack)
155 stack = bottomEdgePageStack
156
157- stack.push(Qt.resolvedUrl("EventReminder.qml"),
158- {"visualReminder": visualReminder,
159- "audibleReminder": audibleReminder,
160- "reminderModel": reminderModel,
161- "eventTitle": titleEdit.text})
162+ var reminderPick = stack.push(Qt.resolvedUrl("EventReminder.qml"),
163+ {"reminderTime": root.reminderValue,
164+ "reminderModel": reminderModel,
165+ "eventTitle": titleEdit.text})
166+ reminderPick.reminderTimeUpdated.connect(function(value) {
167+ root.reminderValue = value
168+ })
169 }
170 }
171

Subscribers

People subscribed via source and target branches

to status/vote changes: