Merge lp:~renatofilho/ubuntu-calendar-app/fix-model-update-after-save into lp:ubuntu-calendar-app

Proposed by Renato Araujo Oliveira Filho
Status: Merged
Approved by: Bill Filler
Approved revision: 845
Merged at revision: 857
Proposed branch: lp:~renatofilho/ubuntu-calendar-app/fix-model-update-after-save
Merge into: lp:ubuntu-calendar-app
Diff against target: 287 lines (+80/-15)
11 files modified
AgendaView.qml (+4/-0)
DayView.qml (+7/-1)
EventDetails.qml (+1/-1)
EventListModel.qml (+9/-1)
MonthView.qml (+13/-0)
MonthWithEventsComponent.qml (+10/-4)
NewEvent.qml (+6/-2)
NewEventBottomEdge.qml (+7/-3)
PageWithBottomEdge.qml (+4/-2)
TimeLineBaseComponent.qml (+7/-0)
WeekView.qml (+12/-1)
To merge this branch: bzr merge lp:~renatofilho/ubuntu-calendar-app/fix-model-update-after-save
Reviewer Review Type Date Requested Status
system-apps-ci-bot continuous-integration Needs Fixing
Jenkins Bot continuous-integration Approve
Ubuntu Calendar Developers Pending
Review via email: mp+297101@code.launchpad.net

Commit message

If syncing, manually update the model during event create/delete to make sure that the view get updated.

To post a comment you must log in.
Revision history for this message
Jenkins Bot (ubuntu-core-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
845. By Renato Araujo Oliveira Filho

Added debug messages to help debug application not updating

Revision history for this message
Jenkins Bot (ubuntu-core-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
system-apps-ci-bot (system-apps-ci-bot) wrote :

FAILED: Continuous integration, rev:845
https://jenkins.canonical.com/system-apps/job/lp-ubuntu-calendar-app-ci/2/
Executed test runs:
    FAILURE: https://jenkins.canonical.com/system-apps/job/build/742/console
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-0-fetch/742
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-1-sourcepkg/release=vivid+overlay/688
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-1-sourcepkg/release=xenial+overlay/688
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-1-sourcepkg/release=yakkety/688
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=vivid+overlay/680/console
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=xenial+overlay/680/console
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=yakkety/680/console
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=vivid+overlay/680/console
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=xenial+overlay/680/console
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=yakkety/680/console
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=vivid+overlay/680/console
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=xenial+overlay/680/console
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=yakkety/680/console

Click here to trigger a rebuild:
https://jenkins.canonical.com/system-apps/job/lp-ubuntu-calendar-app-ci/2/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
system-apps-ci-bot (system-apps-ci-bot) wrote :

FAILED: Continuous integration, rev:845
https://jenkins.canonical.com/system-apps/job/lp-ubuntu-calendar-app-ci/12/
Executed test runs:
    FAILURE: https://jenkins.canonical.com/system-apps/job/build/757/console
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-0-fetch/757
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-1-sourcepkg/release=vivid+overlay/703
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-1-sourcepkg/release=xenial+overlay/703
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-1-sourcepkg/release=yakkety/703
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=vivid+overlay/695/console
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=xenial+overlay/695/console
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=yakkety/695/console
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=vivid+overlay/695/console
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=xenial+overlay/695/console
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=yakkety/695/console
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=vivid+overlay/695/console
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=xenial+overlay/695/console
    FAILURE: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=yakkety/695/console

Click here to trigger a rebuild:
https://jenkins.canonical.com/system-apps/job/lp-ubuntu-calendar-app-ci/12/rebuild

review: Needs Fixing (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'AgendaView.qml'
--- AgendaView.qml 2016-03-21 14:40:17 +0000
+++ AgendaView.qml 2016-06-10 21:17:55 +0000
@@ -55,6 +55,10 @@
55 flickable: eventList55 flickable: eventList
56 }56 }
5757
58 // make sure that the model is updated after create a new event if it is marked as auto-update false
59 onEventSaved: eventListModel.updateIfNecessary()
60 onEventDeleted: eventListModel.updateIfNecessary()
61
5862
59 // ListModel to hold all events for upcoming 7days.63 // ListModel to hold all events for upcoming 7days.
60 EventListModel {64 EventListModel {
6165
=== modified file 'DayView.qml'
--- DayView.qml 2016-03-17 01:51:25 +0000
+++ DayView.qml 2016-06-10 21:17:55 +0000
@@ -48,7 +48,7 @@
48 dayViewPath.scrollToBegginer()48 dayViewPath.scrollToBegginer()
49 }49 }
5050
51 onEventCreated: {51 onEventSaved: {
52 var scrollDate = new Date(event.startDateTime)52 var scrollDate = new Date(event.startDateTime)
53 var needScroll = false53 var needScroll = false
54 if ((currentDate.getFullYear() !== scrollDate.getFullYear()) ||54 if ((currentDate.getFullYear() !== scrollDate.getFullYear()) ||
@@ -182,6 +182,12 @@
182 timeLineView.scrollToTime(new Date());182 timeLineView.scrollToTime(new Date());
183 }183 }
184 }184 }
185 onEventSaved: {
186 timeLineView.update()
187 }
188 onEventDeleted: {
189 timeLineView.update()
190 }
185 }191 }
186192
187 //get contentY value from PathView, if its not current Item193 //get contentY value from PathView, if its not current Item
188194
=== modified file 'EventDetails.qml'
--- EventDetails.qml 2016-04-15 17:54:16 +0000
+++ EventDetails.qml 2016-06-10 21:17:55 +0000
@@ -242,7 +242,7 @@
242 }242 }
243243
244 pageStack.push(Qt.resolvedUrl("NewEvent.qml"),{"event": event, "model":model});244 pageStack.push(Qt.resolvedUrl("NewEvent.qml"),{"event": event, "model":model});
245 pageStack.currentPage.eventAdded.connect( function(event){245 pageStack.currentPage.eventSaved.connect( function(event){
246 pageStack.pop();246 pageStack.pop();
247 })247 })
248 //When event deleted from the Edit mode248 //When event deleted from the Edit mode
249249
=== modified file 'EventListModel.qml'
--- EventListModel.qml 2016-05-02 14:28:38 +0000
+++ EventListModel.qml 2016-06-10 21:17:55 +0000
@@ -30,7 +30,8 @@
30 property var _priv: Binding {30 property var _priv: Binding {
31 target: eventModel31 target: eventModel
32 property: "autoUpdate"32 property: "autoUpdate"
33 value: !mainView.syncInProgress33 value: false
34 when: mainView.syncInProgress
34 }35 }
3536
36 function addModelChangeListener(listener){37 function addModelChangeListener(listener){
@@ -169,6 +170,13 @@
169 return result170 return result
170 }171 }
171172
173 function updateIfNecessary()
174 {
175 console.debug("UpdateIfNecessary:" + eventModel + " has autoUpdate?" + autoUpdate)
176 if (!autoUpdate)
177 update()
178 }
179
172 onStartPeriodChanged: {180 onStartPeriodChanged: {
173 isLoading = true181 isLoading = true
174 }182 }
175183
=== modified file 'MonthView.qml'
--- MonthView.qml 2016-04-28 13:44:33 +0000
+++ MonthView.qml 2016-06-10 21:17:55 +0000
@@ -91,6 +91,8 @@
91 }91 }
9292
93 delegate: MonthWithEventsComponent {93 delegate: MonthWithEventsComponent {
94 id: monthDelegate
95
94 property var indexDate: firstDayOfAnchorDate.addMonths(monthViewPath.loopCurrentIndex + monthViewPath.indexType(index))96 property var indexDate: firstDayOfAnchorDate.addMonths(monthViewPath.loopCurrentIndex + monthViewPath.indexType(index))
9597
96 currentMonth: indexDate.getMonth()98 currentMonth: indexDate.getMonth()
@@ -109,6 +111,17 @@
109 onDateSelected: {111 onDateSelected: {
110 monthViewPage.dateSelected(date);112 monthViewPage.dateSelected(date);
111 }113 }
114
115 // make sure that the model is updated after create a new event if it is marked as auto-update false
116 Connections {
117 target: monthViewPage
118 onEventSaved: {
119 monthDelegate.update()
120 }
121 onEventDeleted: {
122 monthDelegate.update()
123 }
124 }
112 }125 }
113 }126 }
114}127}
115128
=== modified file 'MonthWithEventsComponent.qml'
--- MonthWithEventsComponent.qml 2016-04-28 17:23:21 +0000
+++ MonthWithEventsComponent.qml 2016-06-10 21:17:55 +0000
@@ -29,9 +29,17 @@
29 property alias autoUpdate: mainModel.autoUpdate29 property alias autoUpdate: mainModel.autoUpdate
30 property var modelFilter: invalidFilter30 property var modelFilter: invalidFilter
3131
32 function refresh() {
33 idleRefresh.reset()
34 }
35
36 function update() {
37 mainModel.updateIfNecessary()
38 }
39
32 onIsActiveChanged: {40 onIsActiveChanged: {
33 if (isActive && (mainModel.filter === invalidFilter)) {41 if (isActive && (mainModel.filter === invalidFilter)) {
34 idleRefresh.reset()42 refresh();
35 }43 }
36 }44 }
3745
@@ -48,9 +56,7 @@
48 repeat: false56 repeat: false
49 onTriggered: {57 onTriggered: {
50 mainModel.filter = Qt.binding(function() { return root.modelFilter } )58 mainModel.filter = Qt.binding(function() { return root.modelFilter } )
51 if (!mainModel.autoUpdate) {59 mainModel.updateIfNecessary()
52 mainModel.update()
53 }
54 }60 }
55 }61 }
5662
5763
=== modified file 'NewEvent.qml'
--- NewEvent.qml 2016-04-06 18:46:29 +0000
+++ NewEvent.qml 2016-06-10 21:17:55 +0000
@@ -52,7 +52,7 @@
52 readonly property int millisecsInADay: 8640000052 readonly property int millisecsInADay: 86400000
53 readonly property int millisecsInAnHour: 360000053 readonly property int millisecsInAnHour: 3600000
5454
55 signal eventAdded(var event);55 signal eventSaved(var event);
56 signal eventDeleted(var event);56 signal eventDeleted(var event);
57 signal canceled()57 signal canceled()
5858
@@ -256,7 +256,10 @@
256 }256 }
257257
258 model.saveItem(event)258 model.saveItem(event)
259 root.eventAdded(event);259 console.debug("Save item. Model is autoUpdate?" + model.autoUpdate)
260 root.eventSaved(event);
261 model.updateIfNecessary()
262
260 if (pageStack)263 if (pageStack)
261 pageStack.pop();264 pageStack.pop();
262 }265 }
@@ -343,6 +346,7 @@
343 var dialog = PopupUtils.open(Qt.resolvedUrl("DeleteConfirmationDialog.qml"),root,{"event": event});346 var dialog = PopupUtils.open(Qt.resolvedUrl("DeleteConfirmationDialog.qml"),root,{"event": event});
344 dialog.deleteEvent.connect( function(eventId){347 dialog.deleteEvent.connect( function(eventId){
345 model.removeItem(eventId);348 model.removeItem(eventId);
349 model.updateIfNecessary()
346 if (pageStack)350 if (pageStack)
347 pageStack.pop();351 pageStack.pop();
348 root.eventDeleted(eventId);352 root.eventDeleted(eventId);
349353
=== modified file 'NewEventBottomEdge.qml'
--- NewEventBottomEdge.qml 2016-04-13 21:23:25 +0000
+++ NewEventBottomEdge.qml 2016-06-10 21:17:55 +0000
@@ -35,7 +35,8 @@
35 property var _realPage: null35 property var _realPage: null
3636
37 signal opened()37 signal opened()
38 signal eventCreated(var event)38 signal eventSaved(var event)
39 signal eventDeleted()
3940
40 function updateNewEventInfo(date, allDay)41 function updateNewEventInfo(date, allDay)
41 {42 {
@@ -103,9 +104,12 @@
103 visible: (bottomEdge.status !== BottomEdge.Hidden)104 visible: (bottomEdge.status !== BottomEdge.Hidden)
104 onCanceled: bottomEdge.collapse()105 onCanceled: bottomEdge.collapse()
105 bottomEdgePageStack: bottomEdge.pageStack106 bottomEdgePageStack: bottomEdge.pageStack
106 onEventAdded: {107 onEventSaved: {
107 bottomEdge.collapse()108 bottomEdge.collapse()
108 bottomEdge.eventCreated(event)109 bottomEdge.eventSaved(event)
110 }
111 onEventDeleted: {
112 bottomEdge.evetDeleted()
109 }113 }
110 }114 }
111 }115 }
112116
=== modified file 'PageWithBottomEdge.qml'
--- PageWithBottomEdge.qml 2016-03-18 00:33:43 +0000
+++ PageWithBottomEdge.qml 2016-06-10 21:17:55 +0000
@@ -28,7 +28,8 @@
28 readonly property int bottomEdgeHeight: bottomEdge.hint.height28 readonly property int bottomEdgeHeight: bottomEdge.hint.height
2929
30 signal bottomEdgeCommitStarted()30 signal bottomEdgeCommitStarted()
31 signal eventCreated(var event)31 signal eventSaved(var event)
32 signal eventDeleted()
3233
33 function bottomEdgeCommit(date, allDay)34 function bottomEdgeCommit(date, allDay)
34 {35 {
@@ -41,6 +42,7 @@
4142
42 pageStack: root.pageStack43 pageStack: root.pageStack
43 onOpened: root.bottomEdgeCommitStarted()44 onOpened: root.bottomEdgeCommitStarted()
44 onEventCreated: root.eventCreated(event)45 onEventSaved: root.eventSaved(event)
46 onEventDeleted: root.eventDeleted()
45 }47 }
46}48}
4749
=== modified file 'TimeLineBaseComponent.qml'
--- TimeLineBaseComponent.qml 2016-05-02 14:28:38 +0000
+++ TimeLineBaseComponent.qml 2016-06-10 21:17:55 +0000
@@ -132,6 +132,12 @@
132 timeLineView.returnToBounds()132 timeLineView.returnToBounds()
133 }133 }
134134
135 function update()
136 {
137 console.debug("will update model if necessary.")
138 mainModel.updateIfNecessary()
139 }
140
135 Connections{141 Connections{
136 target: keyboardEventProvider142 target: keyboardEventProvider
137 onScrollUp:{143 onScrollUp:{
@@ -335,6 +341,7 @@
335 var event = dropArea.modifyEventForDrag(drop);341 var event = dropArea.modifyEventForDrag(drop);
336 delegate.waitForModelChange()342 delegate.waitForModelChange()
337 delegate.model.saveItem(event);343 delegate.model.saveItem(event);
344 delegate.model.updateIfNecessary()
338 }345 }
339346
340 onPositionChanged: {347 onPositionChanged: {
341348
=== modified file 'WeekView.qml'
--- WeekView.qml 2016-04-29 19:23:50 +0000
+++ WeekView.qml 2016-06-10 21:17:55 +0000
@@ -64,7 +64,7 @@
64 weekViewPath.scrollToBegginer()64 weekViewPath.scrollToBegginer()
65 }65 }
6666
67 onEventCreated: {67 onEventSaved: {
68 var scrollDate = new Date(event.startDateTime)68 var scrollDate = new Date(event.startDateTime)
69 var currentWeekNumber = currentDate.weekNumber(Qt.locale().firstDayOfWeek)69 var currentWeekNumber = currentDate.weekNumber(Qt.locale().firstDayOfWeek)
70 var eventWeekNumber = scrollDate.weekNumber(Qt.locale().firstDayOfWeek)70 var eventWeekNumber = scrollDate.weekNumber(Qt.locale().firstDayOfWeek)
@@ -237,6 +237,17 @@
237 }237 }
238 }238 }
239239
240 // make sure that the model is updated after create a new event if it is marked as auto-update false
241 Connections {
242 target: weekViewPage
243 onEventSaved: {
244 timeLineView.update()
245 }
246 onEventDeleted: {
247 timeLineView.update()
248 }
249 }
250
240 //get contentY value from PathView, if its not current Item251 //get contentY value from PathView, if its not current Item
241 Binding{252 Binding{
242 target: timeLineView253 target: timeLineView

Subscribers

People subscribed via source and target branches

to status/vote changes: