Merge lp:~pkunal-parmar/ubuntu-calendar-app/nextYearFix into lp:ubuntu-calendar-app
- nextYearFix
- Merge into trunk
Status: | Merged |
---|---|
Approved by: | Olivier Tilloy |
Approved revision: | 194 |
Merged at revision: | 195 |
Proposed branch: | lp:~pkunal-parmar/ubuntu-calendar-app/nextYearFix |
Merge into: | lp:ubuntu-calendar-app |
Diff against target: |
195 lines (+32/-23) 7 files modified
MonthView.qml (+4/-2) PathViewBase.qml (+5/-4) TimeLineHeader.qml (+1/-1) WeekView.qml (+2/-2) YearView.qml (+4/-8) tests/autopilot/calendar_app/tests/test_weekview.py (+2/-1) tests/autopilot/calendar_app/tests/test_yearview.py (+14/-5) |
To merge this branch: | bzr merge lp:~pkunal-parmar/ubuntu-calendar-app/nextYearFix |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Olivier Tilloy (community) | Approve | ||
Ubuntu Phone Apps Jenkins Bot | continuous-integration | Approve | |
Review via email: mp+197624@code.launchpad.net |
Commit message
Fix for "Buffered next year is wrong" from observation reported by jacekn on
https:/
"If I do it slowly and move it just enough to see the year it is initially showing previous year. Then when I scroll a bit more then is short lock up and year is update to what it should be."
Description of the change
Fix for "Buffered next year is wrong" from observation reported by jacekn on
https:/
"If I do it slowly and move it just enough to see the year it is initially showing previous year. Then when I scroll a bit more then is short lock up and year is update to what it should be."
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
Olivier Tilloy (osomon) wrote : | # |
This fixes the issue raised by Jacek. However this code could be made much easier to read. How about:
property var year: getDateFromYear
function getYear() {
switch( root.indexType(
case 0:
return currentYear.
case -1:
return currentYear.
case 1:
return currentYear.
}
}
And while we’re at it, I don’t understand how come case 0 is not for current year, -1 for previous and +1 for next, as function indexType(…) documents it. This is confusing, can you shed a light on this?
- 174. By Kunal Parmar
-
merge from trunk
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
PASSED: Continuous integration, rev:174
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 175. By Kunal Parmar
-
PathView changed
Kunal Parmar (pkunal-parmar) wrote : | # |
> And while we’re at it, I don’t understand how come case 0 is not for current
> year, -1 for previous and +1 for next, as function indexType(…) documents it.
> This is confusing, can you shed a light on this?
This was the case due to how Path was created in PathView, now I changed path in pathview and it works as expected.
0 = visible item
-1 = previous item
1 = next item
Please review again
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
FAILED: Continuous integration, rev:175
http://
Executed test runs:
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 176. By Kunal Parmar
-
yearview horizontal scrolling fix
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
FAILED: Continuous integration, rev:176
http://
Executed test runs:
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 177. By Kunal Parmar
-
Autopilot for YearView fixed
- 178. By Kunal Parmar
-
weekview autopilot test fix
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
FAILED: Continuous integration, rev:178
http://
Executed test runs:
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 179. By Kunal Parmar
-
delay year update rollback
- 180. By Kunal Parmar
-
merge from trunk
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
PASSED: Continuous integration, rev:180
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
Olivier Tilloy (osomon) wrote : | # |
82 + //To make horizontal movement smooth, not using bindig for year
83 + /*Component.
84 + year = getYear();
85 + }
86 +
87 + Connections{
88 + target:root
89 + onMovementEnded: {
90 + //update only when movement ends, to avoid calculation while animation
91 + year = getYear();
92 + }
93 + }*/
94 +
Is this commented out code a leftover? Can it be removed?
Olivier Tilloy (osomon) wrote : | # |
71 QtObject{
72 id: intern
73 - property var startYear: getDateFromYear
74 + property var startYear: currentYear;
75 }
It looks like this 'intern' object has become useless, can’t we remove it and replace all instances of intern.startYear with currentYear?
Olivier Tilloy (osomon) wrote : | # |
121 months = year_grid.
122 self.assert_
123
124 - february = months[1]
125 + february = months[0]
No way February is the first month of the year.
select_many(…) doesn’t guarantee the order of the returned elements, which is why it seems January doesn’t come first, so hardcoding the index of the month is unreliable and this test is flaky.
What you need to do is to sort the list of months using their properties before accessing them by index. Something like that:
months.
With that, you can revert the index change, you will be guaranteed that february == months[1]
Kunal Parmar (pkunal-parmar) wrote : | # |
> 82 + //To make horizontal movement smooth, not using bindig for
> year
> 83 + /*Component.
> 84 + year = getYear();
> 85 + }
> 86 +
> 87 + Connections{
> 88 + target:root
> 89 + onMovementEnded: {
> 90 + //update only when movement ends, to avoid
> calculation while animation
> 91 + year = getYear();
> 92 + }
> 93 + }*/
> 94 +
>
> Is this commented out code a leftover? Can it be removed?
Hi, I will remove it for now,
But it's possible, can you checkout this code and see how it works ?
This code I wrote to avoid lag while changing year by swiping left right. on my device it seems to work good, I commented out code as it was failing test case.
But if you find code it good then I can try to fix testcase instead and keep this code.
Kunal Parmar (pkunal-parmar) wrote : | # |
> 71 QtObject{
> 72 id: intern
> 73 - property var startYear:
> getDateFromYear
> 74 + property var startYear: currentYear;
> 75 }
>
> It looks like this 'intern' object has become useless, can’t we remove it and
> replace all instances of intern.startYear with currentYear?
removed
- 181. By Kunal Parmar
-
Commented out code removed
- 182. By Kunal Parmar
-
Intern object in yearview removed
- 183. By Kunal Parmar
-
test case fix
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
PASSED: Continuous integration, rev:183
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
Kunal Parmar (pkunal-parmar) wrote : | # |
> 121 months = year_grid.
> 122 self.assert_
> 123
> 124 - february = months[1]
> 125 + february = months[0]
>
> No way February is the first month of the year.
> select_many(…) doesn’t guarantee the order of the returned elements, which is
> why it seems January doesn’t come first, so hardcoding the index of the month
> is unreliable and this test is flaky.
> What you need to do is to sort the list of months using their properties
> before accessing them by index. Something like that:
>
> months.
>
Done, can you review again
> With that, you can revert the index change, you will be guaranteed that
> february == months[1]
Olivier Tilloy (osomon) wrote : | # |
> > 82 + //To make horizontal movement smooth, not using bindig for
> > year
> > 83 + /*Component.
> > 84 + year = getYear();
> > 85 + }
> > 86 +
> > 87 + Connections{
> > 88 + target:root
> > 89 + onMovementEnded: {
> > 90 + //update only when movement ends, to avoid
> > calculation while animation
> > 91 + year = getYear();
> > 92 + }
> > 93 + }*/
> > 94 +
> >
> > Is this commented out code a leftover? Can it be removed?
>
> Hi, I will remove it for now,
> But it's possible, can you checkout this code and see how it works ?
> This code I wrote to avoid lag while changing year by swiping left right. on
> my device it seems to work good, I commented out code as it was failing test
> case.
>
> But if you find code it good then I can try to fix testcase instead and keep
> this code.
Let’s do this in a separate branch/MR, please. I’ll gladly test it then.
Olivier Tilloy (osomon) wrote : | # |
Because of bug #1268574 and bug #1268640, I fail to run the autopilot tests both locally and on my device (Galaxy Nexus). Therefore I cannot verify that this code doesn’t introduce regressions, even though it seems to fix the issue it claims it fixes.
Olivier Tilloy (osomon) wrote : | # |
119 months = year_grid.
120 self.assert_
121
122 + months.
This works, but for corectness the sort should be done before asserting anything on the months:
months = year_grid.
months.
self.
Olivier Tilloy (osomon) wrote : | # |
105 + timeline = header.
118 + year_grid = self.year_
131 + selected_month = month_view.
140 + year_grid = self.year_
As I pointed out earlier, select_many(…) doesn’t guarantee the return order, so this might break at any point in time. If you want to get a specific component, either use specific properties like the objectName or a property that identifies it unambiguously, or sort the list returned by select_many(…) using an unambiguous key.
- 184. By Kunal Parmar
-
YearView autopilot text fix
- 185. By Kunal Parmar
-
Other testcase fixed
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
FAILED: Continuous integration, rev:185
http://
Executed test runs:
FAILURE: http://
FAILURE: http://
FAILURE: http://
FAILURE: http://
Click here to trigger a rebuild:
http://
- 186. By Kunal Parmar
-
error resolved
- 187. By Kunal Parmar
-
pyflakes error resolved
- 188. By Kunal Parmar
-
pyflakes resolved
- 189. By Kunal Parmar
-
merge from trunk
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
FAILED: Continuous integration, rev:188
http://
Executed test runs:
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
FAILED: Continuous integration, rev:189
http://
Executed test runs:
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 190. By Kunal Parmar
-
WeekView test case fix
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
FAILED: Continuous integration, rev:190
http://
Executed test runs:
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 191. By Kunal Parmar
-
trobleshooting test
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
FAILED: Continuous integration, rev:191
http://
Executed test runs:
UNSTABLE: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 192. By Kunal Parmar
-
test fail fixed
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
PASSED: Continuous integration, rev:192
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
Kunal Parmar (pkunal-parmar) wrote : | # |
> 105 + timeline = header.
> 118 + year_grid = self.year_
> 131 + selected_month = month_view.
> 140 + year_grid = self.year_
>
> As I pointed out earlier, select_many(…) doesn’t guarantee the return order,
> so this might break at any point in time. If you want to get a specific
> component, either use specific properties like the objectName or a property
> that identifies it unambiguously, or sort the list returned by select_many(…)
> using an unambiguous key.
I fixed hard coded index issue, kindly have another look
Olivier Tilloy (osomon) wrote : | # |
130 + compArray = header.
131 + timeline = None
132 +
133 + for tilelineComponent in compArray:
134 + if tilelineCompone
135 + timeline = tilelineComponent
136 + break
Autopilot allows to do this in a much simpler way:
timeline = header.
The same applies to get_current_year() and to selected_month.
- 193. By Kunal Parmar
-
Merge from trunk
- 194. By Kunal Parmar
-
review comment
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : | # |
PASSED: Continuous integration, rev:194
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
Olivier Tilloy (osomon) wrote : | # |
Looks good now, thanks!
Preview Diff
1 | === modified file 'MonthView.qml' |
2 | --- MonthView.qml 2014-01-09 23:15:57 +0000 |
3 | +++ MonthView.qml 2014-02-10 13:56:10 +0000 |
4 | @@ -14,7 +14,7 @@ |
5 | PathViewBase{ |
6 | id: monthViewPath |
7 | |
8 | - property var startMonth: addMonth(currentMonth,-1); |
9 | + property var startMonth: currentMonth; |
10 | |
11 | anchors.top:parent.top |
12 | |
13 | @@ -44,6 +44,8 @@ |
14 | } |
15 | |
16 | delegate: MonthComponent{ |
17 | + property bool isCurrentItem: index === monthViewPath.currentIndex |
18 | + |
19 | width: parent.width - units.gu(5) |
20 | height: parent.height - units.gu(5) |
21 | |
22 | @@ -54,7 +56,7 @@ |
23 | case 0: |
24 | return monthViewPath.startMonth; |
25 | case -1: |
26 | - return monthViewPath.addMonth(monthViewPath.startMonth,2); |
27 | + return monthViewPath.addMonth(monthViewPath.startMonth,-1); |
28 | case 1: |
29 | return monthViewPath.addMonth(monthViewPath.startMonth,1); |
30 | } |
31 | |
32 | === modified file 'PathViewBase.qml' |
33 | --- PathViewBase.qml 2013-09-16 14:04:01 +0000 |
34 | +++ PathViewBase.qml 2014-02-10 13:56:10 +0000 |
35 | @@ -9,11 +9,12 @@ |
36 | signal nextItemHighlighted(); |
37 | signal previousItemHighlighted(); |
38 | |
39 | + preferredHighlightBegin: 0.5 |
40 | + preferredHighlightEnd: 0.5 |
41 | + |
42 | path: Path { |
43 | - startX: -(root.width/2); startY: root.height/2 |
44 | - PathLine { relativeX: root.width; relativeY: 0 } |
45 | - PathLine { relativeX: root.width; relativeY: 0 } |
46 | - PathLine { relativeX: root.width; relativeY: 0 } |
47 | + startX: -(root.width); startY: root.height/2 |
48 | + PathLine { x: (root.width)*2 ; relativeY: 0; } |
49 | } |
50 | |
51 | // 0= current index, -1= previous index, 1 next index |
52 | |
53 | === modified file 'TimeLineHeader.qml' |
54 | --- TimeLineHeader.qml 2013-09-28 09:37:52 +0000 |
55 | +++ TimeLineHeader.qml 2014-02-10 13:56:10 +0000 |
56 | @@ -64,7 +64,7 @@ |
57 | case 0: |
58 | return date; |
59 | case -1: |
60 | - return date.addDays(14); |
61 | + return date.addDays(-7); |
62 | case 1: |
63 | return date.addDays(7); |
64 | } |
65 | |
66 | === modified file 'WeekView.qml' |
67 | --- WeekView.qml 2014-01-28 01:51:29 +0000 |
68 | +++ WeekView.qml 2014-02-10 13:56:10 +0000 |
69 | @@ -31,7 +31,7 @@ |
70 | id: weekViewPath |
71 | |
72 | property var visibleWeek: dayStart.weekStart(Qt.locale().firstDayOfWeek); |
73 | - property var weekStart: weekViewPath.visibleWeek.addDays(-7) |
74 | + property var weekStart: weekViewPath.visibleWeek |
75 | |
76 | width: parent.width |
77 | height: root.height - weekViewPath.y |
78 | @@ -71,7 +71,7 @@ |
79 | return weekViewPath.weekStart; |
80 | case -1: |
81 | var weekStartDay= weekViewPath.weekStart.weekStart(Qt.locale().firstDayOfWeek); |
82 | - return weekStartDay.addDays(14); |
83 | + return weekStartDay.addDays(-7); |
84 | case 1: |
85 | var weekStartDay = weekViewPath.weekStart.weekStart(Qt.locale().firstDayOfWeek); |
86 | return weekStartDay.addDays(7); |
87 | |
88 | === modified file 'YearView.qml' |
89 | --- YearView.qml 2014-01-09 23:15:57 +0000 |
90 | +++ YearView.qml 2014-02-10 13:56:10 +0000 |
91 | @@ -25,25 +25,21 @@ |
92 | return new Date(year,0,1,0,0,0,0); |
93 | } |
94 | |
95 | - QtObject{ |
96 | - id: intern |
97 | - property var startYear: getDateFromYear(currentYear.getFullYear()-1); |
98 | - } |
99 | - |
100 | delegate: GridView{ |
101 | id: yearView |
102 | clip: true |
103 | |
104 | + property bool isCurrentItem: index == root.currentIndex |
105 | property var year: getYear(); |
106 | |
107 | function getYear() { |
108 | switch( root.indexType(index)) { |
109 | case 0: |
110 | - return intern.startYear; |
111 | + return currentYear; |
112 | case -1: |
113 | - return getDateFromYear(intern.startYear.getFullYear() - 1); |
114 | + return getDateFromYear(currentYear.getFullYear() - 1); |
115 | case 1: |
116 | - return getDateFromYear(intern.startYear.getFullYear() + 1); |
117 | + return getDateFromYear(currentYear.getFullYear() + 1); |
118 | } |
119 | } |
120 | |
121 | |
122 | === modified file 'tests/autopilot/calendar_app/tests/test_weekview.py' |
123 | --- tests/autopilot/calendar_app/tests/test_weekview.py 2014-01-09 23:30:55 +0000 |
124 | +++ tests/autopilot/calendar_app/tests/test_weekview.py 2014-02-10 13:56:10 +0000 |
125 | @@ -70,7 +70,8 @@ |
126 | |
127 | def _get_date_label_headers(self): |
128 | header = self.main_view.select_single(objectName="weekHeader") |
129 | - timeline = header.select_many("TimeLineHeaderComponent")[0] |
130 | + timeline = header.select_single("TimeLineHeaderComponent", |
131 | + isCurrentItem=True) |
132 | dateLabels = timeline.select_many("Label", objectName="dateLabel") |
133 | return dateLabels |
134 | |
135 | |
136 | === modified file 'tests/autopilot/calendar_app/tests/test_yearview.py' |
137 | --- tests/autopilot/calendar_app/tests/test_yearview.py 2014-01-09 23:28:15 +0000 |
138 | +++ tests/autopilot/calendar_app/tests/test_yearview.py 2014-02-10 13:56:10 +0000 |
139 | @@ -10,7 +10,6 @@ |
140 | """ |
141 | |
142 | from datetime import datetime |
143 | - |
144 | from autopilot.matchers import Eventually |
145 | from testtools.matchers import Equals, NotEquals |
146 | |
147 | @@ -28,13 +27,19 @@ |
148 | |
149 | self.year_view = self.main_view.get_year_view() |
150 | |
151 | + def get_current_year(self): |
152 | + return self.year_view.select_single("QQuickGridView", |
153 | + isCurrentItem=True) |
154 | + |
155 | def test_selecting_a_month_switch_to_month_view(self): |
156 | """It must be possible to select a month and open the month view.""" |
157 | |
158 | # TODO: the component indexed at 1 is the one currently displayed, |
159 | # investigate a way to validate this assumption visually. |
160 | - year_grid = self.year_view.select_many("QQuickGridView")[0] |
161 | + year_grid = self.get_current_year() |
162 | + self.assertThat(year_grid, NotEquals(None)) |
163 | months = year_grid.select_many("MonthComponent") |
164 | + months.sort(key=lambda month: month.monthDate) |
165 | self.assert_current_year_is_default_one(months[0]) |
166 | |
167 | february = months[1] |
168 | @@ -48,7 +53,11 @@ |
169 | |
170 | month_view = self.main_view.get_month_view() |
171 | self.assertThat(month_view.visible, Eventually(Equals(True))) |
172 | - selected_month = month_view.select_many("MonthComponent")[0] |
173 | + |
174 | + selected_month = month_view.select_single("MonthComponent", |
175 | + isCurrentItem=True) |
176 | + |
177 | + self.assertThat(selected_month, NotEquals(None)) |
178 | |
179 | self.assertThat(self.main_view.get_year(selected_month), |
180 | Equals(expected_year)) |
181 | @@ -108,13 +117,13 @@ |
182 | if now.month > 6: |
183 | self.drag_page_up() |
184 | |
185 | - year_grid = self.year_view.select_many("QQuickGridView")[0] |
186 | + year_grid = self.get_current_year() |
187 | + self.assertThat(year_grid, NotEquals(None)) |
188 | months = year_grid.select_many("MonthComponent") |
189 | |
190 | for month in months: |
191 | current_month_label = month.select_single( |
192 | "Label", objectName="monthLabel") |
193 | - |
194 | if current_month_name == current_month_label.text: |
195 | return month |
196 |
PASSED: Continuous integration, rev:173 91.189. 93.70:8080/ job/ubuntu- calendar- app-ci/ 223/ 91.189. 93.70:8080/ job/generic- mediumtests- trusty/ 332 91.189. 93.70:8080/ job/ubuntu- calendar- app-raring- amd64-ci/ 223 91.189. 93.70:8080/ job/ubuntu- calendar- app-saucy- amd64-ci/ 223 91.189. 93.70:8080/ job/ubuntu- calendar- app-trusty- amd64-ci/ 57
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild: 91.189. 93.70:8080/ job/ubuntu- calendar- app-ci/ 223/rebuild
http://