Merge lp:~fboucault/ubuntu-calendar-app/startup_time into lp:ubuntu-calendar-app

Proposed by Florian Boucault
Status: Merged
Approved by: Renato Araujo Oliveira Filho
Approved revision: 870
Merged at revision: 868
Proposed branch: lp:~fboucault/ubuntu-calendar-app/startup_time
Merge into: lp:ubuntu-calendar-app
Diff against target: 529 lines (+161/-125)
18 files modified
3rd-party/lunar.js (+2/-0)
AllDayEventComponent.qml (+1/-1)
ColorPickerDialog.qml (+1/-1)
ContactChoicePopup.qml (+2/-2)
DeleteConfirmationDialog.qml (+1/-1)
EditEventConfirmationDialog.qml (+1/-1)
EventRepetition.qml (+2/-2)
MonthComponent.qml (+41/-9)
MonthComponentDateDelegate.qml (+0/-33)
MonthView.qml (+55/-36)
NewEvent.qml (+4/-4)
NewEventBottomEdge.qml (+35/-28)
NewEventTimePicker.qml (+3/-3)
OnlineAccountsDummy.qml (+1/-1)
Scroller.qml (+1/-1)
TimeLineBaseComponent.qml (+1/-1)
YearView.qml (+9/-0)
calendar.qml (+1/-1)
To merge this branch: bzr merge lp:~fboucault/ubuntu-calendar-app/startup_time
Reviewer Review Type Date Requested Status
system-apps-ci-bot continuous-integration Approve
Jenkins Bot continuous-integration Approve
Renato Araujo Oliveira Filho (community) Approve
Review via email: mp+302163@code.launchpad.net

Commit message

Various startup time fixes (totalling around 1.7s saves on krillin):
- Made lunar.js a library: faster and lighter
- Much lighter MonthComponentDelegate (used in YearView)
- Upgraded imports that were forgotten to UITK 1.3 and QtQuick 2.4
- Delayed loading of months other than the one visible
- Delayed loading of years other than the one visible
- Load bottom edge asynchronously including its compilation

Description of the change

Various startup time fixes (totalling around 1.7s saves on krillin):
- Made lunar.js a library: faster and lighter
- Much lighter MonthComponentDelegate (used in YearView)
- Upgraded imports that were forgotten to UITK 1.3 and QtQuick 2.4
- Delayed loading of months other than the one visible
- Delayed loading of years other than the one visible
- Load bottom edge asynchronously including its compilation

To post a comment you must log in.
Revision history for this message
system-apps-ci-bot (system-apps-ci-bot) wrote :

PASSED: Continuous integration, rev:869
https://jenkins.canonical.com/system-apps/job/lp-ubuntu-calendar-app-ci/27/
Executed test runs:
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build/1145
    SUCCESS: https://jenkins.canonical.com/system-apps/job/test-0-autopkgtest/label=phone-armhf,release=vivid+overlay,testname=default/234
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-0-fetch/1145
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-1-sourcepkg/release=vivid+overlay/1033
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-1-sourcepkg/release=xenial+overlay/1033
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-1-sourcepkg/release=yakkety/1033
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=vivid+overlay/1022
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=vivid+overlay/1022/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=xenial+overlay/1022
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=xenial+overlay/1022/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=yakkety/1022
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=yakkety/1022/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=vivid+overlay/1022
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=vivid+overlay/1022/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=xenial+overlay/1022
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=xenial+overlay/1022/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=yakkety/1022
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=yakkety/1022/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=vivid+overlay/1022
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=vivid+overlay/1022/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=xenial+overlay/1022
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=xenial+overlay/1022/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=yakkety/1022
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=yakkety/1022/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
Revision history for this message
Renato Araujo Oliveira Filho (renatofilho) :
Revision history for this message
Florian Boucault (fboucault) :
Revision history for this message
Renato Araujo Oliveira Filho (renatofilho) wrote :

Today "day number" is not visible. on Month view.

review: Needs Fixing
870. By Florian Boucault

MonthView: fix non-existent reference to PathView.isCurrentItem. Fixes non visible number for today's date.

Revision history for this message
Florian Boucault (fboucault) wrote :

> Today "day number" is not visible. on Month view.

Should be fixed by latest commit

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

looks good.

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

PASSED: Continuous integration, rev:870
https://jenkins.canonical.com/system-apps/job/lp-ubuntu-calendar-app-ci/28/
Executed test runs:
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build/1201
    SUCCESS: https://jenkins.canonical.com/system-apps/job/test-0-autopkgtest/label=phone-armhf,release=vivid+overlay,testname=default/249
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-0-fetch/1201
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-1-sourcepkg/release=vivid+overlay/1077
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-1-sourcepkg/release=xenial+overlay/1077
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-1-sourcepkg/release=yakkety/1077
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=vivid+overlay/1065
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=vivid+overlay/1065/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=xenial+overlay/1065
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=xenial+overlay/1065/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=yakkety/1065
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=amd64,release=yakkety/1065/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=vivid+overlay/1065
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=vivid+overlay/1065/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=xenial+overlay/1065
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=xenial+overlay/1065/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=yakkety/1065
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=armhf,release=yakkety/1065/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=vivid+overlay/1065
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=vivid+overlay/1065/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=xenial+overlay/1065
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=xenial+overlay/1065/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=yakkety/1065
        deb: https://jenkins.canonical.com/system-apps/job/build-2-binpkg/arch=i386,release=yakkety/1065/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '3rd-party/lunar.js'
2--- 3rd-party/lunar.js 2015-11-23 09:21:05 +0000
3+++ 3rd-party/lunar.js 2016-08-16 13:18:27 +0000
4@@ -8,6 +8,8 @@
5 * @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0]
6 * http://blog.jjonline.cn/userInterFace/173.html
7 */
8+.pragma library
9+
10 var calendar = {
11
12 /**
13
14=== modified file 'AllDayEventComponent.qml'
15--- AllDayEventComponent.qml 2016-03-09 01:49:02 +0000
16+++ AllDayEventComponent.qml 2016-08-16 13:18:27 +0000
17@@ -17,7 +17,7 @@
18 */
19 import QtQuick 2.4
20 import Ubuntu.Components 1.3
21-import Ubuntu.Components.Popups 1.0
22+import Ubuntu.Components.Popups 1.3
23 import QtOrganizer 5.0
24
25 import "dateExt.js" as DateExt
26
27=== modified file 'ColorPickerDialog.qml'
28--- ColorPickerDialog.qml 2016-01-29 14:47:31 +0000
29+++ ColorPickerDialog.qml 2016-08-16 13:18:27 +0000
30@@ -17,7 +17,7 @@
31 */
32 import QtQuick 2.4
33 import Ubuntu.Components 1.3
34-import Ubuntu.Components.Popups 1.0
35+import Ubuntu.Components.Popups 1.3
36
37 Dialog {
38 id: root
39
40=== modified file 'ContactChoicePopup.qml'
41--- ContactChoicePopup.qml 2016-02-04 13:37:00 +0000
42+++ ContactChoicePopup.qml 2016-08-16 13:18:27 +0000
43@@ -18,8 +18,8 @@
44 import QtQuick 2.4
45 import Ubuntu.Components 1.3
46 import Ubuntu.Components.Popups 1.3
47-import Ubuntu.Components.ListItems 1.0
48-import Ubuntu.Components.Themes.Ambiance 1.0
49+import Ubuntu.Components.ListItems 1.3
50+import Ubuntu.Components.Themes.Ambiance 1.3
51 import QtOrganizer 5.0
52 import QtContacts 5.0
53
54
55=== modified file 'DeleteConfirmationDialog.qml'
56--- DeleteConfirmationDialog.qml 2016-01-29 14:47:31 +0000
57+++ DeleteConfirmationDialog.qml 2016-08-16 13:18:27 +0000
58@@ -17,7 +17,7 @@
59 */
60 import QtQuick 2.4
61 import Ubuntu.Components 1.3
62-import Ubuntu.Components.Popups 1.0
63+import Ubuntu.Components.Popups 1.3
64
65 Dialog {
66 id: dialogue
67
68=== modified file 'EditEventConfirmationDialog.qml'
69--- EditEventConfirmationDialog.qml 2016-01-29 14:47:31 +0000
70+++ EditEventConfirmationDialog.qml 2016-08-16 13:18:27 +0000
71@@ -17,7 +17,7 @@
72 */
73 import QtQuick 2.4
74 import Ubuntu.Components 1.3
75-import Ubuntu.Components.Popups 1.0
76+import Ubuntu.Components.Popups 1.3
77
78 Dialog {
79 id: dialogue
80
81=== modified file 'EventRepetition.qml'
82--- EventRepetition.qml 2016-04-05 12:36:41 +0000
83+++ EventRepetition.qml 2016-08-16 13:18:27 +0000
84@@ -19,8 +19,8 @@
85 import QtQuick 2.4
86 import QtOrganizer 5.0
87 import Ubuntu.Components 1.3
88-import Ubuntu.Components.ListItems 1.0 as ListItem
89-import Ubuntu.Components.Pickers 1.0
90+import Ubuntu.Components.ListItems 1.3 as ListItem
91+import Ubuntu.Components.Pickers 1.3
92 import QtOrganizer 5.0
93 import "Defines.js" as Defines
94 import "Recurrence.js" as Recurrence
95
96=== modified file 'MonthComponent.qml'
97--- MonthComponent.qml 2016-04-28 20:19:03 +0000
98+++ MonthComponent.qml 2016-08-16 13:18:27 +0000
99@@ -67,6 +67,7 @@
100 property int monthStartMonth: monthStart.getMonth()
101 property int monthStartYear: monthStart.getFullYear()
102 readonly property int daysInStartMonth: Date.daysInMonth(monthStartYear, monthStartMonth)
103+ readonly property int daysInCurrentMonth: Date.daysInMonth(root.currentYear, root.currentMonth)
104
105 //check if current month is start month
106 property bool isCurMonthStartMonth: root.currentMonth === monthStartMonth &&
107@@ -214,6 +215,15 @@
108 return monthGrid.childAt(clickPosition.x, clickPosition.y)
109 }
110
111+ function getIndexOfChild(object, child) {
112+ for (var i = 0; i <= object.children.length; i++) {
113+ if (object.children[i] === child) {
114+ return i;
115+ }
116+ }
117+ return -1;
118+ }
119+
120 anchors {
121 fill: column
122 topMargin: monthGrid.y
123@@ -221,12 +231,14 @@
124
125 onPressAndHold: {
126 var dayItem = getItemAt(mouse.x, mouse.y)
127- var selectedDate = new Date(dayItem.delegateDate.getTime());
128+ var index = getIndexOfChild(monthGrid, dayItem);
129+ var selectedDate = intern.monthStart.addDays(index);
130 pageStack.push(Qt.resolvedUrl("NewEvent.qml"), {"date":selectedDate, "model":eventModel});
131 }
132 onClicked: {
133 var dayItem = getItemAt(mouse.x, mouse.y)
134- var selectedDate = new Date(dayItem.delegateDate.getTime());
135+ var index = getIndexOfChild(monthGrid, dayItem);
136+ var selectedDate = intern.monthStart.addDays(index);
137 if (root.isYearView) {
138 //If yearView is clicked then open selected MonthView
139 root.monthSelected(selectedDate);
140@@ -365,15 +377,35 @@
141 Component {
142 id: monthWithoutEventsDelegate
143
144- MonthComponentDateDelegate {
145- property var delegateDate: intern.monthStart.addDays(index)
146-
147- date: delegateDate.getDate()
148- isCurrentMonth: delegateDate.getMonth() === root.currentMonth
149-
150- isToday: intern.todayDate == date && intern.isCurMonthTodayMonth
151+ Text {
152 width: monthGrid.dayWidth
153 height: monthGrid.dayHeight
154+ horizontalAlignment: Text.AlignHCenter
155+ verticalAlignment: Text.AlignVCenter
156+ color: {
157+ var day = intern.monthStartDate + index;
158+ if ( intern.monthStartDate >= 7 ) {
159+ if ( day <= intern.daysInStartMonth ) {
160+ text = day;
161+ return "#AEA79F";
162+ } else {
163+ day = day - intern.daysInStartMonth;
164+ }
165+ }
166+
167+ if ( day <= intern.daysInCurrentMonth ) {
168+ text = day;
169+ if ( intern.todayDate == day && intern.isCurMonthTodayMonth ) {
170+ return "white";
171+ } else {
172+ return "#5D5D5D";
173+ }
174+ } else {
175+ day = day - intern.daysInCurrentMonth;
176+ text = day;
177+ return "#AEA79F";
178+ }
179+ }
180 }
181 }
182 }
183
184=== removed file 'MonthComponentDateDelegate.qml'
185--- MonthComponentDateDelegate.qml 2016-03-02 19:55:52 +0000
186+++ MonthComponentDateDelegate.qml 1970-01-01 00:00:00 +0000
187@@ -1,33 +0,0 @@
188-import QtQuick 2.4
189-import Ubuntu.Components 1.3
190-
191-Item{
192- id: dateRootItem
193-
194- property int date;
195- property bool isCurrentMonth;
196- property bool isToday;
197- property alias fontSize: dateLabel.font.pixelSize
198- property bool isSelected: false
199-
200- Text {
201- id: dateLabel
202- anchors.centerIn: parent
203- text: date
204- color: {
205- if( isCurrentMonth ) {
206- if( isToday || isSelected ) {
207- "white"
208- } else {
209- "#5D5D5D"
210- }
211- } else {
212- if(isSelected) {
213- "white"
214- } else {
215- "#AEA79F"
216- }
217- }
218- }
219- }
220-}
221
222=== modified file 'MonthView.qml'
223--- MonthView.qml 2016-07-06 20:17:44 +0000
224+++ MonthView.qml 2016-08-16 13:18:27 +0000
225@@ -31,7 +31,9 @@
226 anchorDate.getMonth(),
227 1,
228 0, 0, 0)
229- readonly property var currentDate: monthViewPath.currentItem.indexDate
230+ readonly property var currentDate: monthViewPath.currentItem.item ?
231+ monthViewPath.currentItem.item.indexDate
232+ : null
233
234 property var selectedDay;
235 property bool displayLunarCalendar: false
236@@ -90,41 +92,58 @@
237 bottomMargin: monthViewPage.bottomEdgeHeight
238 }
239
240- delegate: MonthWithEventsComponent {
241- id: monthDelegate
242-
243- property var indexDate: firstDayOfAnchorDate.addMonths(monthViewPath.loopCurrentIndex + monthViewPath.indexType(index))
244-
245- currentMonth: indexDate.getMonth()
246- currentYear: indexDate.getFullYear()
247- displayLunarCalendar: monthViewPage.displayLunarCalendar
248-
249- autoUpdate: monthViewPage.tabSelected && monthViewPage.active && PathView.isCurrentItem
250- modelFilter: eventModel.filter
251- width: parent.width - units.gu(4)
252- height: parent.height
253- isCurrentItem: PathView.isCurrentItem
254- isActive: !monthViewPath.moving && !monthViewPath.flicking
255- displayWeekNumber: mainView.displayWeekNumber
256- isYearView: false
257-
258- onDateSelected: {
259- monthViewPage.dateSelected(date);
260- }
261-
262- // make sure that the model is updated after create a new event if it is marked as auto-update false
263- Connections {
264- target: monthViewPage
265- onActiveChanged: {
266- if (monthViewPage.active) {
267- monthDelegate.update()
268- }
269- }
270- onEventSaved: {
271- monthDelegate.update()
272- }
273- onEventDeleted: {
274- monthDelegate.update()
275+ property bool loadNonVisibleDelegate: false
276+
277+ Timer {
278+ running: true
279+ onTriggered: monthViewPath.loadNonVisibleDelegate = true
280+ interval: 1
281+ }
282+
283+ delegate: Loader {
284+ id: delegateLoader
285+
286+ asynchronous: true
287+ width: PathView.view.width
288+ height: PathView.view.height
289+ active: monthViewPath.loadNonVisibleDelegate || (index === monthViewPath.currentIndex)
290+
291+ sourceComponent: MonthWithEventsComponent {
292+ id: monthDelegate
293+
294+ property var indexDate: firstDayOfAnchorDate.addMonths(monthViewPath.loopCurrentIndex + monthViewPath.indexType(index))
295+
296+ currentMonth: indexDate.getMonth()
297+ currentYear: indexDate.getFullYear()
298+ displayLunarCalendar: monthViewPage.displayLunarCalendar
299+
300+ autoUpdate: monthViewPage.tabSelected && monthViewPage.active && isCurrentItem
301+ modelFilter: eventModel.filter
302+ width: parent.width - units.gu(4)
303+ height: parent.height
304+ isCurrentItem: (index === monthViewPath.currentIndex)
305+ isActive: !monthViewPath.moving && !monthViewPath.flicking
306+ displayWeekNumber: mainView.displayWeekNumber
307+ isYearView: false
308+
309+ onDateSelected: {
310+ monthViewPage.dateSelected(date);
311+ }
312+
313+ // make sure that the model is updated after create a new event if it is marked as auto-update false
314+ Connections {
315+ target: monthViewPage
316+ onActiveChanged: {
317+ if (monthViewPage.active) {
318+ monthDelegate.update()
319+ }
320+ }
321+ onEventSaved: {
322+ monthDelegate.update()
323+ }
324+ onEventDeleted: {
325+ monthDelegate.update()
326+ }
327 }
328 }
329 }
330
331=== modified file 'NewEvent.qml'
332--- NewEvent.qml 2016-07-05 20:46:44 +0000
333+++ NewEvent.qml 2016-08-16 13:18:27 +0000
334@@ -19,10 +19,10 @@
335 import QtQuick 2.4
336 import QtOrganizer 5.0
337 import Ubuntu.Components 1.3
338-import Ubuntu.Components.Popups 1.0
339-import Ubuntu.Components.ListItems 1.0 as ListItems
340-import Ubuntu.Components.Themes.Ambiance 1.0
341-import Ubuntu.Components.Pickers 1.0
342+import Ubuntu.Components.Popups 1.3
343+import Ubuntu.Components.ListItems 1.3 as ListItems
344+import Ubuntu.Components.Themes.Ambiance 1.3
345+import Ubuntu.Components.Pickers 1.3
346 import QtOrganizer 5.0
347 import "Defines.js" as Defines
348 import "dateExt.js" as DateExt
349
350=== modified file 'NewEventBottomEdge.qml'
351--- NewEventBottomEdge.qml 2016-05-16 13:22:52 +0000
352+++ NewEventBottomEdge.qml 2016-08-16 13:18:27 +0000
353@@ -73,37 +73,51 @@
354
355 onCollapseCompleted: {
356 if (bottomEdge._realPage) {
357- bottomEdge._realPage.destroy()
358- bottomEdge._realPage = null
359- _realPage = editorPageBottomEdge.createObject(null)
360+ createPage()
361 }
362 }
363
364 Component.onCompleted: {
365 if (eventModel)
366- _realPage = editorPageBottomEdge.createObject(null)
367+ createPage()
368 }
369
370 onEventModelChanged: {
371 if (eventModel)
372- _realPage = editorPageBottomEdge.createObject(null)
373- }
374-
375- Component {
376- id: editorPageBottomEdge
377- NewEvent {
378- id: newEventPage
379-
380- implicitWidth: bottomEdge.width
381- implicitHeight: bottomEdge.height
382- reminderValue: bottomEdge.reminderValue
383- model: bottomEdge.eventModel
384- date: bottomEdge.date
385- enabled: bottomEdge.status === BottomEdge.Committed
386- active: bottomEdge.status === BottomEdge.Committed
387- visible: (bottomEdge.status !== BottomEdge.Hidden)
388+ createPage()
389+ }
390+
391+ function createPage() {
392+ editorPageLoader.active = false;
393+ editorPageLoader.active = true;
394+ }
395+
396+ Loader {
397+ id: editorPageLoader
398+ active: false
399+ asynchronous: true
400+ onStatusChanged: {
401+ if (status == Loader.Null) {
402+ bottomEdge._realPage = null;
403+ } else if (status == Loader.Ready) {
404+ bottomEdge._realPage = item;
405+ }
406+ }
407+ Component.onCompleted: setSource("NewEvent.qml", {
408+ "implicitWidth": Qt.binding(function() { return bottomEdge.width } ),
409+ "implicitHeight": Qt.binding(function() { return bottomEdge.height } ),
410+ "reminderValue": Qt.binding(function() { return bottomEdge.reminderValue } ),
411+ "model": Qt.binding(function() { return bottomEdge.eventModel } ),
412+ "date": Qt.binding(function() { return bottomEdge.date } ),
413+ "enabled": Qt.binding(function() { return bottomEdge.status === BottomEdge.Committed } ),
414+ "active": Qt.binding(function() { return bottomEdge.status === BottomEdge.Committed } ),
415+ "visible": Qt.binding(function() { return (bottomEdge.status !== BottomEdge.Hidden) } ),
416+ "bottomEdgePageStack": Qt.binding(function() { return bottomEdge.pageStack } ),
417+ })
418+
419+ Connections {
420+ target: editorPageLoader.item ? editorPageLoader.item : null
421 onCanceled: bottomEdge.collapse()
422- bottomEdgePageStack: bottomEdge.pageStack
423 onEventSaved: {
424 bottomEdge.collapse()
425 bottomEdge.eventSaved(event)
426@@ -113,11 +127,4 @@
427 }
428 }
429 }
430-
431- Component.onDestruction: {
432- if (bottomEdge._realPage) {
433- bottomEdge._realPage.destroy()
434- bottomEdge._realPage = null
435- }
436- }
437 }
438
439=== modified file 'NewEventTimePicker.qml'
440--- NewEventTimePicker.qml 2016-03-22 20:09:08 +0000
441+++ NewEventTimePicker.qml 2016-08-16 13:18:27 +0000
442@@ -1,7 +1,7 @@
443 import QtQuick 2.4
444-import Ubuntu.Components.ListItems 1.0 as ListItem
445-import Ubuntu.Components.Themes.Ambiance 1.0
446-import Ubuntu.Components.Pickers 1.0
447+import Ubuntu.Components.ListItems 1.3 as ListItem
448+import Ubuntu.Components.Themes.Ambiance 1.3
449+import Ubuntu.Components.Pickers 1.3
450
451 Column {
452 id: dateTimeInput
453
454=== modified file 'OnlineAccountsDummy.qml'
455--- OnlineAccountsDummy.qml 2015-03-28 11:31:47 +0000
456+++ OnlineAccountsDummy.qml 2016-08-16 13:18:27 +0000
457@@ -14,7 +14,7 @@
458 * along with this program. If not, see <http://www.gnu.org/licenses/>.
459 */
460
461-import QtQuick 2.2
462+import QtQuick 2.4
463
464 Item {
465 id: root
466
467=== modified file 'Scroller.qml'
468--- Scroller.qml 2016-01-29 14:47:31 +0000
469+++ Scroller.qml 2016-08-16 13:18:27 +0000
470@@ -18,7 +18,7 @@
471
472 import QtQuick 2.4
473 import Ubuntu.Components 1.3
474-import Ubuntu.Components.ListItems 1.0 as ListItems
475+import Ubuntu.Components.ListItems 1.3 as ListItems
476
477 Item {
478 id: root
479
480=== modified file 'TimeLineBaseComponent.qml'
481--- TimeLineBaseComponent.qml 2016-07-05 19:40:11 +0000
482+++ TimeLineBaseComponent.qml 2016-08-16 13:18:27 +0000
483@@ -18,7 +18,7 @@
484
485 import QtQuick 2.4
486 import Ubuntu.Components 1.3
487-import Ubuntu.Components.Popups 1.0
488+import Ubuntu.Components.Popups 1.3
489 import QtOrganizer 5.0
490
491 import "dateExt.js" as DateExt
492
493=== modified file 'YearView.qml'
494--- YearView.qml 2016-03-14 16:22:46 +0000
495+++ YearView.qml 2016-08-16 13:18:27 +0000
496@@ -110,12 +110,21 @@
497 bottomMargin: yearViewPage.bottomEdgeHeight
498 }
499
500+ property bool loadNonVisibleDelegate: false
501+
502+ Timer {
503+ running: true
504+ onTriggered: yearPathView.loadNonVisibleDelegate = true
505+ interval: 1
506+ }
507+
508 delegate: Loader {
509 id: delegateLoader
510
511 asynchronous: true
512 width: PathView.view.width
513 height: PathView.view.height
514+ active: yearPathView.loadNonVisibleDelegate || (index === yearPathView.currentIndex)
515
516 sourceComponent: YearViewDelegate {
517 visible: delegateLoader.status === Loader.Ready
518
519=== modified file 'calendar.qml'
520--- calendar.qml 2016-07-06 21:29:27 +0000
521+++ calendar.qml 2016-08-16 13:18:27 +0000
522@@ -17,7 +17,7 @@
523 */
524 import QtQuick 2.4
525 import Ubuntu.Components 1.3
526-import Ubuntu.Components.Popups 1.0
527+import Ubuntu.Components.Popups 1.3
528 import QtOrganizer 5.0
529 import Qt.labs.settings 1.0
530

Subscribers

People subscribed via source and target branches

to status/vote changes: