Merge lp:~ahayzen/ubuntu-weather-app/reboot-day-delegate-expand into lp:ubuntu-weather-app

Proposed by Andrew Hayzen on 2015-04-06
Status: Merged
Approved by: Victor Thompson on 2015-04-30
Approved revision: 35
Merged at revision: 37
Proposed branch: lp:~ahayzen/ubuntu-weather-app/reboot-day-delegate-expand
Merge into: lp:ubuntu-weather-app
Diff against target: 1203 lines (+1008/-25)
9 files modified
app/components/DayDelegate.qml (+155/-5)
app/components/ForecastDetailsDelegate.qml (+49/-0)
app/graphics/extended-information_chance-of-rain.svg (+153/-0)
app/graphics/extended-information_humidity.svg (+147/-0)
app/graphics/extended-information_uv-level.svg (+270/-0)
app/graphics/extended-information_wind.svg (+155/-0)
app/ui/HomePage.qml (+23/-8)
app/ui/LocationPane.qml (+27/-11)
po/com.ubuntu.weather.pot (+29/-1)
To merge this branch: bzr merge lp:~ahayzen/ubuntu-weather-app/reboot-day-delegate-expand
Reviewer Review Type Date Requested Status
Victor Thompson 2015-04-06 Approve on 2015-04-30
Ubuntu Phone Apps Jenkins Bot continuous-integration Approve on 2015-04-29
Review via email: mp+255264@code.launchpad.net

Commit message

* First iteration of expandable day delegate

Description of the change

* First iteration of expandable day delegate

This does not include a working "overview text", sunrise, sunset, pollen levels. These will hopefully come in a second mp :)

To post a comment you must log in.
Victor Thompson (vthompson) wrote :

This works very well! Would it make sense to close all the expanded days when the user switches to a different location, or if they go into the Settings or Locations pages?

review: Needs Information
Martin Borho (martin-borho) wrote :

In the old app every location was "resetted" after leaving, so the view was back at the top and all other changes in the view were dismissed when re-entering.

I would even say, it would be ok to have only day forecast expanded, in the location itself.

Otherwise, well done!

Victor Thompson (vthompson) wrote :

I agree--maybe only one should be expanded at a time. The spec makes it seem like this is the case (mostly because the expanded data takes up most of the screen). The reasoning for leaving multiple expanded was because since this data is more compact it might be nice to allow multiple to be expanded. However, you lose most of the benefits of having multiple expanded if you auto-scroll to the currently expanded item (which looks slick, btw).

Nekhelesh Ramananthan (nik90) wrote :

Yeah it would be best to have only one listitem expanded at a time. I noticed a issue in the background color of the hourly forecast [1], however at the time I wasn't sure if this was a issue in trunk or in this branch. So I fixed it along with some other cleanups in [2]. So ignore that issue while reviewing this branch as merging my branch would fix it.

[1] https://imgur.com/NMRuJvR
[2] https://code.launchpad.net/~nik90/ubuntu-weather-app/homehourly-design-fix/+merge/255412

Victor Thompson (vthompson) wrote :

In addition to what we decided above (only allow for 1 expanded day and auto-collapse each when the view changes), I've noticed that when a different location is selected from the Locations page, the transition is incredibly slow on the device. This only appears to be an issue with this branch and not trunk/reboot.

review: Needs Fixing
Victor Thompson (vthompson) wrote :

Also, this mp seems to make the app's background color non-white on vivid, which makes some of the icons look odd (it's not as visible in this screenshot, however): http://i.imgur.com/mlERkip.png

+1 to only having one expanded at a time.

Martin Borho (martin-borho) wrote :

Design said, it would be ok to stay with the current way after changing the location. So no forced reset in the ui without user input.

We can revisit it later on, if it doesn't work out..

Besides that, only one daily forecast can/should be expanded. As intended.

32. By Andrew Hayzen on 2015-04-26

* Merge of /reboot

33. By Andrew Hayzen on 2015-04-26

* Remove scrolling Flickable as it causes issues when collapsing and expanding delegates
* Simplifed how height of Flickable is calculated
* Only one delegate can now be in the expanded state
* All delegates are collaped when the HomePage.qml changes to invisible or the currently shown location changes

Andrew Hayzen (ahayzen) wrote :

I've removed the auto scroll for now as it was becoming messy when you had one item expanded and you go to click on another, as it collapses one and expands the other the height then moves around a lot, let me know if you do infact want this in.

I've also changed the way the flickable's height is calculated, let me know if it is slightly too tight to the bottom item.

Regarding collapsing delegates I went with collapsing when either of the following occur:
- Another delegate is expanded
- The selected location changes
- The HomePage becomes invisible (another page pushed on top in the stack)

Let me know if you want any changes regarding this behaviour :)

Victor Thompson (vthompson) wrote :

See inline comment. I think the rest looks good.

review: Needs Information
Victor Thompson (vthompson) wrote :

The offset at the bottom seems more like 3GU. But I agree--not sure where it's coming from.

34. By Andrew Hayzen on 2015-04-29

* Change to 3GU

35. By Andrew Hayzen on 2015-04-29

* Merge of /reboot

Victor Thompson (vthompson) wrote :

LGTM, let's land this and iterate as we go along.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'app/components/DayDelegate.qml'
2--- app/components/DayDelegate.qml 2015-03-18 00:05:43 +0000
3+++ app/components/DayDelegate.qml 2015-04-29 14:22:07 +0000
4@@ -21,18 +21,86 @@
5 import Ubuntu.Components.ListItems 0.1 as ListItem
6
7 ListItem.Standard {
8- height: units.gu(8)
9+ id: dayDelegate
10+ height: collapsedHeight
11
12- // TODO: will expand when clicked to reveal more info
13+ property int collapsedHeight: units.gu(8)
14+ property int expandedHeight: collapsedHeight + units.gu(4) + extraInfoColumn.childrenRect.height
15
16 property alias day: dayLabel.text
17 property alias image: weatherImage.name
18 property alias high: highLabel.text
19 property alias low: lowLabel.text
20
21+ property alias chanceOfRain: chanceOfRainForecast.chance
22+ property alias humidity: humidityForecast.value
23+ property alias pollen: pollenForecast.value
24+ property alias sunrise: sunriseForecast.value
25+ property alias sunset: sunsetForecast.value
26+ property alias wind: windForecast.value
27+ property alias uvIndex: uvIndexForecast.value
28+
29 // Standard divider is not full width so add a ThinDivider to the bottom
30 showDivider: false
31
32+ state: "normal"
33+ states: [
34+ State {
35+ name: "normal"
36+ PropertyChanges {
37+ target: dayDelegate
38+ height: collapsedHeight
39+ }
40+ },
41+ State {
42+ name: "expanded"
43+ PropertyChanges {
44+ target: dayDelegate
45+ height: expandedHeight
46+ }
47+ PropertyChanges {
48+ target: expandedInfo
49+ opacity: 1
50+ }
51+ }
52+ ]
53+
54+ transitions: [
55+ Transition {
56+ from: "normal"
57+ to: "expanded"
58+ SequentialAnimation {
59+ NumberAnimation {
60+ easing.type: Easing.InOutQuad
61+ properties: "height"
62+ }
63+ NumberAnimation {
64+ easing.type: Easing.InOutQuad
65+ properties: "opacity"
66+ }
67+ }
68+ },
69+ Transition {
70+ from: "expanded"
71+ to: "normal"
72+ SequentialAnimation {
73+ NumberAnimation {
74+ easing.type: Easing.InOutQuad
75+ properties: "opacity"
76+ }
77+ NumberAnimation {
78+ easing.type: Easing.InOutQuad
79+ properties: "height"
80+ }
81+ }
82+ }
83+ ]
84+
85+ onClicked: {
86+ state = state === "normal" ? "expanded" : "normal"
87+ locationPages.collapseOtherDelegates(index)
88+ }
89+
90 ListItem.ThinDivider {
91 anchors {
92 bottom: parent.bottom
93@@ -45,7 +113,8 @@
94 left: parent.left
95 right: weatherImage.left
96 rightMargin: units.gu(1)
97- verticalCenter: parent.verticalCenter
98+ top: parent.top
99+ topMargin: (collapsedHeight - dayLabel.height) / 2
100 }
101 elide: Text.ElideRight
102 font.weight: Font.Light
103@@ -56,7 +125,7 @@
104 id: weatherImage
105 anchors {
106 horizontalCenter: parent.horizontalCenter
107- verticalCenter: parent.verticalCenter
108+ verticalCenter: dayLabel.verticalCenter
109 }
110 height: units.gu(3)
111 width: units.gu(3)
112@@ -68,7 +137,7 @@
113 left: weatherImage.right
114 right: highLabel.left
115 rightMargin: units.gu(1)
116- verticalCenter: parent.verticalCenter
117+ verticalCenter: dayLabel.verticalCenter
118 }
119 elide: Text.ElideRight
120 font.pixelSize: units.gu(2)
121@@ -92,4 +161,85 @@
122 height: units.gu(3)
123 verticalAlignment: Text.AlignTop // AlignTop appears to align bottom?
124 }
125+
126+ Item {
127+ id: expandedInfo
128+ anchors {
129+ bottom: parent.bottom
130+ left: parent.left
131+ right: parent.right
132+ top: dayLabel.bottom
133+ topMargin: units.gu(2)
134+ }
135+ opacity: 0
136+ visible: opacity !== 0
137+
138+
139+ Column {
140+ id: extraInfoColumn
141+ anchors {
142+ centerIn: parent
143+ }
144+ spacing: units.gu(2)
145+
146+ // FIXME: extended-infomation_* aren't actually on device
147+
148+ // Overview text
149+ Label {
150+ id: chanceOfRainForecast
151+ color: UbuntuColors.coolGrey
152+ fontSize: "x-large"
153+ horizontalAlignment: Text.AlignHCenter
154+ text: i18n.tr("Chance of rain")
155+ width: parent.width
156+ visible: false // FIXME: add overview text eg "Chance of flurries"
157+
158+ property int chance: 0
159+ }
160+
161+ ForecastDetailsDelegate {
162+ id: windForecast
163+ forecast: i18n.tr("Winds")
164+ imageSource: "../graphics/extended-information_wind.svg"
165+ }
166+
167+ ForecastDetailsDelegate {
168+ id: uvIndexForecast
169+ imageSource: "../graphics/extended-information_uv-level.svg"
170+ forecast: i18n.tr("UV Index")
171+ }
172+
173+ ForecastDetailsDelegate {
174+ id: pollenForecast
175+ forecast: i18n.tr("Pollen")
176+ // FIXME: need icon
177+ }
178+
179+ ForecastDetailsDelegate {
180+ id: humidityForecast
181+ forecast: i18n.tr("Humidity")
182+ imageSource: "../graphics/extended-information_humidity.svg"
183+ }
184+
185+ ForecastDetailsDelegate {
186+ id: sunriseForecast
187+ forecast: i18n.tr("Sunrise")
188+ // FIXME: need icon
189+ }
190+
191+ ForecastDetailsDelegate {
192+ id: sunsetForecast
193+ forecast: i18n.tr("Sunset")
194+ // FIXME: need icon
195+ }
196+ }
197+ }
198+
199+ Component.onCompleted: {
200+ locationPages.collapseOtherDelegates.connect(function(otherIndex) {
201+ if (dayDelegate && typeof index !== "undefined" && otherIndex !== index) {
202+ state = "normal"
203+ }
204+ });
205+ }
206 }
207
208=== added file 'app/components/ForecastDetailsDelegate.qml'
209--- app/components/ForecastDetailsDelegate.qml 1970-01-01 00:00:00 +0000
210+++ app/components/ForecastDetailsDelegate.qml 2015-04-29 14:22:07 +0000
211@@ -0,0 +1,49 @@
212+/*
213+ * Copyright (C) 2015 Canonical Ltd
214+ *
215+ * This file is part of Ubuntu Weather App
216+ *
217+ * Ubuntu Weather App is free software: you can redistribute it and/or modify
218+ * it under the terms of the GNU General Public License version 3 as
219+ * published by the Free Software Foundation.
220+ *
221+ * Ubuntu Weather App is distributed in the hope that it will be useful,
222+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
223+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
224+ * GNU General Public License for more details.
225+ *
226+ * You should have received a copy of the GNU General Public License
227+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
228+ */
229+
230+import QtQuick 2.3
231+import Ubuntu.Components 1.1
232+import Ubuntu.Components.ListItems 0.1 as ListItem
233+
234+Row {
235+ height: icon.height
236+ spacing: units.gu(2)
237+ visible: value !== ""
238+
239+ property alias imageSource: icon.source
240+ property alias forecast: forecastLabel.text
241+ property alias value: forecastValue.text
242+
243+ Icon {
244+ id: icon
245+ color: "#000"
246+ height: units.gu(2)
247+ width: height
248+ }
249+
250+ Label {
251+ id: forecastLabel
252+ elide: Text.ElideRight
253+ width: units.gu(8)
254+ }
255+
256+ Label {
257+ id: forecastValue
258+ width: units.gu(10)
259+ }
260+}
261
262=== added file 'app/graphics/extended-information_chance-of-rain.svg'
263--- app/graphics/extended-information_chance-of-rain.svg 1970-01-01 00:00:00 +0000
264+++ app/graphics/extended-information_chance-of-rain.svg 2015-04-29 14:22:07 +0000
265@@ -0,0 +1,153 @@
266+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
267+<!-- Created with Inkscape (http://www.inkscape.org/) -->
268+
269+<svg
270+ xmlns:dc="http://purl.org/dc/elements/1.1/"
271+ xmlns:cc="http://creativecommons.org/ns#"
272+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
273+ xmlns:svg="http://www.w3.org/2000/svg"
274+ xmlns="http://www.w3.org/2000/svg"
275+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
276+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
277+ width="90"
278+ height="90"
279+ id="svg6138"
280+ version="1.1"
281+ inkscape:version="0.91pre2 r"
282+ viewBox="0 0 90 90.000001"
283+ sodipodi:docname="weather-chance-of-rain02.svg">
284+ <defs
285+ id="defs6140" />
286+ <sodipodi:namedview
287+ id="base"
288+ pagecolor="#ffffff"
289+ bordercolor="#666666"
290+ borderopacity="1.0"
291+ inkscape:pageopacity="0.0"
292+ inkscape:pageshadow="2"
293+ inkscape:zoom="5.0931702"
294+ inkscape:cx="112.1011"
295+ inkscape:cy="19.378885"
296+ inkscape:document-units="px"
297+ inkscape:current-layer="g6442"
298+ showgrid="true"
299+ fit-margin-top="0"
300+ fit-margin-left="0"
301+ fit-margin-right="0"
302+ fit-margin-bottom="0"
303+ inkscape:snap-global="true"
304+ inkscape:snap-bbox="true"
305+ inkscape:bbox-paths="true"
306+ inkscape:snap-bbox-midpoints="true"
307+ inkscape:snap-bbox-edge-midpoints="true"
308+ inkscape:bbox-nodes="true"
309+ inkscape:object-paths="true"
310+ inkscape:snap-intersection-paths="true"
311+ inkscape:object-nodes="true"
312+ inkscape:snap-smooth-nodes="true"
313+ inkscape:snap-midpoints="true"
314+ inkscape:snap-others="true"
315+ inkscape:snap-object-midpoints="true"
316+ inkscape:snap-center="true"
317+ showguides="false"
318+ inkscape:guide-bbox="true">
319+ <inkscape:grid
320+ type="xygrid"
321+ id="grid6700"
322+ empspacing="6" />
323+ <sodipodi:guide
324+ orientation="0,1"
325+ position="90,87"
326+ id="guide4064" />
327+ <sodipodi:guide
328+ orientation="0,1"
329+ position="89,84"
330+ id="guide4066" />
331+ <sodipodi:guide
332+ orientation="1,0"
333+ position="3,69"
334+ id="guide4068" />
335+ <sodipodi:guide
336+ orientation="1,0"
337+ position="6,60"
338+ id="guide4070" />
339+ <sodipodi:guide
340+ orientation="1,0"
341+ position="87,58"
342+ id="guide4072" />
343+ <sodipodi:guide
344+ orientation="1,0"
345+ position="84,47"
346+ id="guide4074" />
347+ <sodipodi:guide
348+ orientation="0,1"
349+ position="77,3"
350+ id="guide4076" />
351+ <sodipodi:guide
352+ orientation="0,1"
353+ position="81,6"
354+ id="guide4078" />
355+ <sodipodi:guide
356+ orientation="1,0"
357+ position="81,25"
358+ id="guide4080" />
359+ <sodipodi:guide
360+ orientation="0,1"
361+ position="78,9"
362+ id="guide4082" />
363+ <sodipodi:guide
364+ orientation="0,1"
365+ position="79,81"
366+ id="guide4084" />
367+ <sodipodi:guide
368+ orientation="1,0"
369+ position="9,39"
370+ id="guide4086" />
371+ </sodipodi:namedview>
372+ <metadata
373+ id="metadata6143">
374+ <rdf:RDF>
375+ <cc:Work
376+ rdf:about="">
377+ <dc:format>image/svg+xml</dc:format>
378+ <dc:type
379+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
380+ <dc:title></dc:title>
381+ </cc:Work>
382+ </rdf:RDF>
383+ </metadata>
384+ <g
385+ inkscape:label="Layer 1"
386+ inkscape:groupmode="layer"
387+ id="layer1"
388+ transform="translate(-283.57144,-358.79068)">
389+ <g
390+ transform="translate(169.57144,223.42822)"
391+ id="g5937"
392+ inkscape:export-filename="envelope02.png"
393+ inkscape:export-xdpi="90"
394+ inkscape:export-ydpi="90" />
395+ <g
396+ id="g6442"
397+ transform="translate(-753.45981,336.4283)">
398+ <rect
399+ style="fill:none;stroke:none"
400+ id="rect1687"
401+ width="90"
402+ height="90"
403+ x="1037.0312"
404+ y="22.362379" />
405+ <path
406+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
407+ d="M 44.929688 12.066406 C 34.037288 12.066406 24.849688 14.943458 17.367188 20.697266 C 9.7896875 26.523909 6 33.624202 6 42 C 7.7011 40.603306 9.6530686 39.474739 11.855469 38.615234 C 14.075869 37.773637 16.4573 37.353516 19 37.353516 C 21.5427 37.353516 23.914587 37.773637 26.117188 38.615234 C 28.337486 39.474739 30.2989 40.603306 32 42 C 33.7011 40.603306 35.653069 39.474739 37.855469 38.615234 C 40.075769 37.773637 42.4573 37.353516 45 37.353516 C 47.5427 37.353516 49.914586 37.773637 52.117188 38.615234 C 54.337487 39.474739 56.2989 40.603306 58 42 L 58.654297 42 C 60.235137 40.784631 62.009869 39.776665 64 39 C 66.2203 38.158403 68.601831 37.738281 71.144531 37.738281 C 73.687231 37.738281 76.059119 38.158403 78.261719 39 C 80.268226 39.776743 82.052173 40.784465 83.634766 42 L 84 42 C 84 33.624202 80.210313 26.523909 72.632812 20.697266 C 65.055613 14.943458 55.822287 12.066406 44.929688 12.066406 z "
408+ transform="translate(1037.0313,22.36238)"
409+ id="path4181" />
410+ <path
411+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-indent:0;text-align:end;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:end;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6.00000048;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
412+ d="m 1079.0312,28.363281 0,66.335938 0.01,0.09766 c 0.015,0.226687 0.022,0.780446 0.022,1.509766 0,1.918939 -0.4328,2.763898 -1.0039,3.289062 l -0.01,0.0059 -0.01,0.0078 c -0.6357,0.592743 -1.5903,1.007813 -3.4297,1.007813 -1.8313,0 -2.8017,-0.41364 -3.461,-1.015626 -0.5541,-0.519673 -0.9882,-1.37472 -0.9882,-3.294921 0,-0.72932 0.01,-1.281931 0.021,-1.501953 l -5.9863,-0.410157 c -0.041,0.598238 -0.035,1.18279 -0.035,1.91211 0,2.983063 0.8627,5.791367 2.9003,7.691407 l 0.01,0.008 0.01,0.006 c 1.9716,1.8129 4.6659,2.60547 7.5332,2.60547 2.8642,0 5.5555,-0.79304 7.5136,-2.61524 2.0532,-1.89396 2.9356,-4.70919 2.9356,-7.695307 0,-0.72932 0.01,-1.312724 -0.033,-1.904297 l 0.01,0.197265 0,-67.236328 -6,1 z"
413+ id="path4225"
414+ inkscape:connector-curvature="0"
415+ sodipodi:nodetypes="cccscccscsccscccscsccccc" />
416+ </g>
417+ </g>
418+</svg>
419
420=== added file 'app/graphics/extended-information_humidity.svg'
421--- app/graphics/extended-information_humidity.svg 1970-01-01 00:00:00 +0000
422+++ app/graphics/extended-information_humidity.svg 2015-04-29 14:22:07 +0000
423@@ -0,0 +1,147 @@
424+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
425+<!-- Created with Inkscape (http://www.inkscape.org/) -->
426+
427+<svg
428+ xmlns:dc="http://purl.org/dc/elements/1.1/"
429+ xmlns:cc="http://creativecommons.org/ns#"
430+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
431+ xmlns:svg="http://www.w3.org/2000/svg"
432+ xmlns="http://www.w3.org/2000/svg"
433+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
434+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
435+ width="90"
436+ height="90"
437+ id="svg6138"
438+ version="1.1"
439+ inkscape:version="0.91pre2 r"
440+ viewBox="0 0 90 90.000001"
441+ sodipodi:docname="weather-chance-of-rain.svg">
442+ <defs
443+ id="defs6140" />
444+ <sodipodi:namedview
445+ id="base"
446+ pagecolor="#ffffff"
447+ bordercolor="#666666"
448+ borderopacity="1.0"
449+ inkscape:pageopacity="0.0"
450+ inkscape:pageshadow="2"
451+ inkscape:zoom="4.0745362"
452+ inkscape:cx="90.550182"
453+ inkscape:cy="25.205316"
454+ inkscape:document-units="px"
455+ inkscape:current-layer="g6442"
456+ showgrid="true"
457+ fit-margin-top="0"
458+ fit-margin-left="0"
459+ fit-margin-right="0"
460+ fit-margin-bottom="0"
461+ inkscape:snap-global="false"
462+ inkscape:snap-bbox="true"
463+ inkscape:bbox-paths="true"
464+ inkscape:snap-bbox-midpoints="true"
465+ inkscape:snap-bbox-edge-midpoints="true"
466+ inkscape:bbox-nodes="true"
467+ inkscape:object-paths="true"
468+ inkscape:snap-intersection-paths="true"
469+ inkscape:object-nodes="true"
470+ inkscape:snap-smooth-nodes="true"
471+ inkscape:snap-midpoints="true"
472+ inkscape:snap-others="true"
473+ inkscape:snap-object-midpoints="true"
474+ inkscape:snap-center="true"
475+ showguides="false"
476+ inkscape:guide-bbox="true">
477+ <inkscape:grid
478+ type="xygrid"
479+ id="grid6700"
480+ empspacing="6" />
481+ <sodipodi:guide
482+ orientation="0,1"
483+ position="90,87"
484+ id="guide4064" />
485+ <sodipodi:guide
486+ orientation="0,1"
487+ position="89,84"
488+ id="guide4066" />
489+ <sodipodi:guide
490+ orientation="1,0"
491+ position="3,69"
492+ id="guide4068" />
493+ <sodipodi:guide
494+ orientation="1,0"
495+ position="6,60"
496+ id="guide4070" />
497+ <sodipodi:guide
498+ orientation="1,0"
499+ position="87,58"
500+ id="guide4072" />
501+ <sodipodi:guide
502+ orientation="1,0"
503+ position="84,47"
504+ id="guide4074" />
505+ <sodipodi:guide
506+ orientation="0,1"
507+ position="77,3"
508+ id="guide4076" />
509+ <sodipodi:guide
510+ orientation="0,1"
511+ position="81,6"
512+ id="guide4078" />
513+ <sodipodi:guide
514+ orientation="1,0"
515+ position="81,25"
516+ id="guide4080" />
517+ <sodipodi:guide
518+ orientation="0,1"
519+ position="78,9"
520+ id="guide4082" />
521+ <sodipodi:guide
522+ orientation="0,1"
523+ position="79,81"
524+ id="guide4084" />
525+ <sodipodi:guide
526+ orientation="1,0"
527+ position="9,39"
528+ id="guide4086" />
529+ </sodipodi:namedview>
530+ <metadata
531+ id="metadata6143">
532+ <rdf:RDF>
533+ <cc:Work
534+ rdf:about="">
535+ <dc:format>image/svg+xml</dc:format>
536+ <dc:type
537+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
538+ <dc:title></dc:title>
539+ </cc:Work>
540+ </rdf:RDF>
541+ </metadata>
542+ <g
543+ inkscape:label="Layer 1"
544+ inkscape:groupmode="layer"
545+ id="layer1"
546+ transform="translate(-283.57144,-358.79068)">
547+ <g
548+ transform="translate(169.57144,223.42822)"
549+ id="g5937"
550+ inkscape:export-filename="envelope02.png"
551+ inkscape:export-xdpi="90"
552+ inkscape:export-ydpi="90" />
553+ <g
554+ id="g6442"
555+ transform="translate(-753.45981,336.4283)">
556+ <path
557+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
558+ d="M 45.046875 3 C 32.915975 27.594868 24.552722 55.021065 23.982422 56.908203 C 23.901522 57.129789 23.841578 57.361086 23.767578 57.585938 C 23.036878 59.796557 22.623047 62.152027 22.623047 64.607422 C 22.623047 76.973464 32.652638 86.998047 45.023438 86.998047 C 57.372742 86.972595 67.376953 76.959723 67.376953 64.609375 C 67.376953 62.155598 66.975594 59.797236 66.246094 57.587891 C 66.246094 57.587891 58.008075 29.900931 45.046875 3.0390625 L 45.046875 3.03125 L 45.046875 3.0195312 L 45.046875 3.0058594 L 45.046875 3 z M 44.996094 17.728516 C 54.458094 39.650002 60.503906 59.296875 60.503906 59.296875 A 5.9907304 5.9907304 0 0 0 60.558594 59.466797 C 61.095294 61.092212 61.386719 62.80886 61.386719 64.609375 C 61.386719 73.725917 54.126659 80.989079 45.005859 81.005859 C 35.879459 80.996009 28.613281 73.728301 28.613281 64.607422 C 28.613281 62.825026 28.910878 61.113375 29.455078 59.466797 A 5.9907304 5.9907304 0 0 0 29.457031 59.458984 C 29.615031 58.978962 29.665675 58.806709 29.609375 58.960938 A 5.9907304 5.9907304 0 0 0 29.716797 58.638672 C 30.156997 57.182234 36.199294 37.969649 44.996094 17.728516 z "
559+ transform="translate(1037.0313,22.36238)"
560+ id="path4253" />
561+ <rect
562+ style="fill:none;stroke:none"
563+ id="rect1687"
564+ width="90"
565+ height="90"
566+ x="1037.0312"
567+ y="22.362379" />
568+ </g>
569+ </g>
570+</svg>
571
572=== added file 'app/graphics/extended-information_uv-level.svg'
573--- app/graphics/extended-information_uv-level.svg 1970-01-01 00:00:00 +0000
574+++ app/graphics/extended-information_uv-level.svg 2015-04-29 14:22:07 +0000
575@@ -0,0 +1,270 @@
576+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
577+<!-- Created with Inkscape (http://www.inkscape.org/) -->
578+
579+<svg
580+ xmlns:dc="http://purl.org/dc/elements/1.1/"
581+ xmlns:cc="http://creativecommons.org/ns#"
582+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
583+ xmlns:svg="http://www.w3.org/2000/svg"
584+ xmlns="http://www.w3.org/2000/svg"
585+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
586+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
587+ width="90"
588+ height="90"
589+ id="svg6138"
590+ version="1.1"
591+ inkscape:version="0.91pre2 r"
592+ viewBox="0 0 90 90.000001"
593+ sodipodi:docname="weather-uv-level.svg">
594+ <defs
595+ id="defs6140">
596+ <linearGradient
597+ id="linearGradient3899">
598+ <stop
599+ id="stop4292"
600+ offset="0"
601+ style="stop-color:#fbf7e3;stop-opacity:1" />
602+ <stop
603+ id="stop4294"
604+ offset="1"
605+ style="stop-color:#c6b386;stop-opacity:1" />
606+ </linearGradient>
607+ </defs>
608+ <sodipodi:namedview
609+ id="base"
610+ pagecolor="#ffffff"
611+ bordercolor="#666666"
612+ borderopacity="1.0"
613+ inkscape:pageopacity="0.0"
614+ inkscape:pageshadow="2"
615+ inkscape:zoom="7.9580785"
616+ inkscape:cx="32.979067"
617+ inkscape:cy="45.789944"
618+ inkscape:document-units="px"
619+ inkscape:current-layer="g6442"
620+ showgrid="true"
621+ fit-margin-top="0"
622+ fit-margin-left="0"
623+ fit-margin-right="0"
624+ fit-margin-bottom="0"
625+ inkscape:snap-global="true"
626+ inkscape:snap-bbox="true"
627+ inkscape:bbox-paths="true"
628+ inkscape:snap-bbox-midpoints="true"
629+ inkscape:snap-bbox-edge-midpoints="true"
630+ inkscape:bbox-nodes="true"
631+ inkscape:object-paths="true"
632+ inkscape:snap-intersection-paths="true"
633+ inkscape:object-nodes="true"
634+ inkscape:snap-smooth-nodes="true"
635+ inkscape:snap-midpoints="true"
636+ inkscape:snap-others="true"
637+ inkscape:snap-object-midpoints="true"
638+ inkscape:snap-center="true"
639+ showguides="true"
640+ inkscape:guide-bbox="true">
641+ <inkscape:grid
642+ type="xygrid"
643+ id="grid6700"
644+ empspacing="6" />
645+ <sodipodi:guide
646+ orientation="0,1"
647+ position="90,87"
648+ id="guide4064" />
649+ <sodipodi:guide
650+ orientation="0,1"
651+ position="89,84"
652+ id="guide4066" />
653+ <sodipodi:guide
654+ orientation="1,0"
655+ position="3,69"
656+ id="guide4068" />
657+ <sodipodi:guide
658+ orientation="1,0"
659+ position="6,60"
660+ id="guide4070" />
661+ <sodipodi:guide
662+ orientation="1,0"
663+ position="87,58"
664+ id="guide4072" />
665+ <sodipodi:guide
666+ orientation="1,0"
667+ position="84,47"
668+ id="guide4074" />
669+ <sodipodi:guide
670+ orientation="0,1"
671+ position="77,3"
672+ id="guide4076" />
673+ <sodipodi:guide
674+ orientation="0,1"
675+ position="81,6"
676+ id="guide4078" />
677+ <sodipodi:guide
678+ orientation="1,0"
679+ position="81,25"
680+ id="guide4080" />
681+ <sodipodi:guide
682+ orientation="0,1"
683+ position="78,9"
684+ id="guide4082" />
685+ <sodipodi:guide
686+ orientation="0,1"
687+ position="79,81"
688+ id="guide4084" />
689+ <sodipodi:guide
690+ orientation="1,0"
691+ position="9,39"
692+ id="guide4086" />
693+ </sodipodi:namedview>
694+ <metadata
695+ id="metadata6143">
696+ <rdf:RDF>
697+ <cc:Work
698+ rdf:about="">
699+ <dc:format>image/svg+xml</dc:format>
700+ <dc:type
701+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
702+ <dc:title></dc:title>
703+ </cc:Work>
704+ </rdf:RDF>
705+ </metadata>
706+ <g
707+ inkscape:label="Layer 1"
708+ inkscape:groupmode="layer"
709+ id="layer1"
710+ transform="translate(-283.57144,-358.79068)">
711+ <g
712+ transform="translate(169.57144,223.42822)"
713+ id="g5937"
714+ inkscape:export-filename="envelope02.png"
715+ inkscape:export-xdpi="90"
716+ inkscape:export-ydpi="90" />
717+ <g
718+ id="g6442"
719+ transform="translate(-753.45981,336.4283)">
720+ <rect
721+ style="fill:none;stroke:none"
722+ id="rect1687"
723+ width="90"
724+ height="90"
725+ x="1037.0312"
726+ y="22.362379" />
727+ <path
728+ style="color:#000000;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
729+ d="m 1054.1015,75.51863 a 33.872092,33.872092 0 0 0 0.5547,2.339844 33.872092,33.872092 0 0 1 -0.5547,-2.339844 z"
730+ id="path4162" />
731+ <path
732+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.25;marker:none;enable-background:accumulate"
733+ d="M 45 12 A 33.00005 33.00005 0 0 0 12 45 A 33.00005 33.00005 0 0 0 45 78 A 33.00005 33.00005 0 0 0 78 45 A 33.00005 33.00005 0 0 0 45 12 z M 45 18 A 27 27 0 0 1 72 45 A 27 27 0 0 1 45 72 A 27 27 0 0 1 18 45 A 27 27 0 0 1 45 18 z "
734+ transform="translate(1037.0313,22.36238)"
735+ id="path4189" />
736+ <path
737+ sodipodi:nodetypes="ccsssccc"
738+ inkscape:transform-center-y="-37.504247"
739+ inkscape:transform-center-x="-0.0125"
740+ inkscape:connector-curvature="0"
741+ id="path2194-5"
742+ d="m 1088.2477,35.36157 c 0,0 -2.5383,-5.872205 -6.1954,-11.007637 0,0 0,0 -0.01,0.0017 0,0 0,0.0017 -0.01,0.0024 0,0 -0.01,0.002 -0.01,0.0026 0,0 -0.01,0.0017 -0.01,0.0017 -3.7738,5.416839 -6.1725,11 -6.1725,11 z"
743+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" />
744+ <path
745+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
746+ d="m 1103.4153,42.757091 c 0,0 0.7378,-6.354629 0.1384,-12.630594 0,0 0,0 -0.01,-0.0035 0,0 -9e-4,0.0015 -0.01,-0.0029 0,0 -0.01,-0.0033 -0.01,-0.0027 0,0 -0.01,-0.0035 -0.01,-0.0035 -5.9767,2.80422 -10.8456,6.440029 -10.8456,6.440029 z"
747+ id="path4192"
748+ inkscape:connector-curvature="0"
749+ inkscape:transform-center-x="-16.197006"
750+ inkscape:transform-center-y="-30.926886"
751+ sodipodi:nodetypes="ccsssccc" />
752+ <path
753+ sodipodi:nodetypes="ccsssccc"
754+ inkscape:transform-center-y="-16.173909"
755+ inkscape:transform-center-x="-30.9307"
756+ inkscape:connector-curvature="0"
757+ id="path4194"
758+ d="m 1112.853,56.745599 c 0,0 3.8163,-5.13437 6.4352,-10.869215 0,0 0,0 -0.01,-0.008 0,0 0,8.49e-4 -0.01,-0.0075 0,0 -0.01,-0.0079 -0.01,-0.0073 0,0 -0.01,-0.008 -0.01,-0.008 -6.578,-0.559824 -12.6125,0.154429 -12.6125,0.154429 z"
759+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" />
760+ <path
761+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
762+ d="m 1114.0321,73.578853 c 0,0 5.8722,-2.538345 11.0076,-6.195417 0,0 0,0 0,-0.01193 0,0 -5e-4,7.35e-4 -0.01,-0.0115 0,0 0,-0.01184 0,-0.01132 0,0 0,-0.01193 0,-0.01193 -5.4168,-3.773822 -11,-6.172511 -11,-6.172511 z"
763+ id="path4196"
764+ inkscape:connector-curvature="0"
765+ inkscape:transform-center-x="-37.50345"
766+ inkscape:transform-center-y="0.0091698086"
767+ sodipodi:nodetypes="ccsssccc" />
768+ <path
769+ sodipodi:nodetypes="ccsssccc"
770+ inkscape:transform-center-y="16.194334"
771+ inkscape:transform-center-x="-30.9356"
772+ inkscape:connector-curvature="0"
773+ id="path4198"
774+ d="m 1106.6366,88.746428 c 0,0 6.3546,0.737829 12.6305,0.138412 0,0 0,0 0.01,-0.01033 0,0 -8e-4,3.87e-4 0,-0.01496 0,0 0.01,-0.01025 0.01,-0.0098 0,0 0.01,-0.01033 0.01,-0.01033 -2.8042,-5.976626 -6.44,-10.845552 -6.44,-10.845552 z"
775+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" />
776+ <path
777+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
778+ d="m 1092.6481,98.184183 c 0,0 5.1343,3.816277 10.8691,6.435117 0,0 0,0 0.014,-0.004 0,0 -8e-4,-7e-5 0.01,-0.013 0,0 0.014,-0.004 0.014,-0.003 0,0 0.014,-0.004 0.014,-0.004 0.5598,-6.578013 -0.1544,-12.612527 -0.1544,-12.612527 z"
779+ id="path4200"
780+ inkscape:connector-curvature="0"
781+ inkscape:transform-center-x="-16.184519"
782+ inkscape:transform-center-y="30.938658"
783+ sodipodi:nodetypes="ccsssccc" />
784+ <path
785+ sodipodi:nodetypes="ccsssccc"
786+ inkscape:transform-center-y="37.507651"
787+ inkscape:transform-center-x="0.003949878"
788+ inkscape:connector-curvature="0"
789+ id="path4202"
790+ d="m 1075.8148,99.363269 c 0,0 2.5383,5.872141 6.1954,11.007521 0,0 0,0 0.014,0.004 0,0 -7e-4,-4.6e-4 0.015,-0.006 0,0 0.014,0.004 0.014,0.004 0,0 0.014,0.004 0.014,0.004 3.7738,-5.41683 6.1726,-10.999969 6.1726,-10.999969 z"
791+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" />
792+ <path
793+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
794+ d="m 1060.6472,91.967738 c 0,0 -0.7378,6.354573 -0.1384,12.630492 0,0 0,0 0.01,0.0105 0,0 -3e-4,-7.4e-4 0.016,0.002 0,0 0.01,0.0105 0.01,0.0105 0,0 0.01,0.0105 0.01,0.0105 5.9766,-2.80422 10.8456,-6.439956 10.8456,-6.439956 z"
795+ id="path4204"
796+ inkscape:connector-curvature="0"
797+ inkscape:transform-center-x="16.194006"
798+ inkscape:transform-center-y="30.937355"
799+ sodipodi:nodetypes="ccsssccc" />
800+ <path
801+ sodipodi:nodetypes="ccsssccc"
802+ inkscape:transform-center-y="16.184506"
803+ inkscape:transform-center-x="30.94415"
804+ inkscape:connector-curvature="0"
805+ id="path4206"
806+ d="m 1051.2094,77.97922 c 0,0 -3.8162,5.134322 -6.4351,10.869127 0,0 0,0 0,0.01409 0,0 2e-4,-7.9e-4 0.013,0.0097 0,0 0,0.01409 0,0.01409 0,0 0,0.01409 0,0.01409 6.578,0.559774 12.6126,-0.154365 12.6126,-0.154365 z"
807+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" />
808+ <path
809+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
810+ d="m 1050.0303,61.145908 c 0,0 -5.8721,2.538353 -11.0075,6.19539 0,0 0,0 -0.01,0.0122 0,0 5e-4,-5.85e-4 0.01,0.0149 0,0 -0.01,0.0122 -0.01,0.0122 0,0 -0.01,0.0122 -0.01,0.0122 5.4168,3.773778 11,6.172616 11,6.172616 z"
811+ id="path4208"
812+ inkscape:connector-curvature="0"
813+ inkscape:transform-center-x="37.5147"
814+ inkscape:transform-center-y="-0.0067180911"
815+ sodipodi:nodetypes="ccsssccc" />
816+ <path
817+ sodipodi:nodetypes="ccsssccc"
818+ inkscape:transform-center-y="-16.199665"
819+ inkscape:transform-center-x="30.94315"
820+ inkscape:connector-curvature="0"
821+ id="path4210"
822+ d="m 1057.4258,45.978282 c 0,0 -6.3545,-0.737771 -12.6304,-0.138384 0,0 0,0 -0.015,0.0056 0,0 7e-4,-2.57e-4 0,0.0179 0,0 -0.015,0.0056 -0.015,0.0056 0,0 -0.015,0.0056 -0.015,0.0056 2.8042,5.976587 6.44,10.845642 6.44,10.845642 z"
823+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate" />
824+ <path
825+ style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;enable-background:accumulate"
826+ d="m 1071.4144,36.540483 c 0,0 -5.1343,-3.816179 -10.8691,-6.435044 0,0 0,0 -0.016,-0.0026 0,0 7e-4,1.27e-4 -0.01,0.0155 0,0 -0.016,-0.0026 -0.016,-0.0026 0,0 -0.016,-0.0026 -0.016,-0.0026 -0.5598,6.577976 0.1544,12.612601 0.1544,12.612601 z"
827+ id="path4212"
828+ inkscape:connector-curvature="0"
829+ inkscape:transform-center-x="16.187519"
830+ inkscape:transform-center-y="-30.94809"
831+ sodipodi:nodetypes="ccsssccc" />
832+ <text
833+ xml:space="preserve"
834+ style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:31.51123047px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:'Ubuntu Medium';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
835+ x="1103.2705"
836+ y="79.316757"
837+ id="text4214"
838+ sodipodi:linespacing="125%"><tspan
839+ sodipodi:role="line"
840+ id="tspan4216"
841+ x="1103.2705"
842+ y="79.316757">UV</tspan></text>
843+ </g>
844+ </g>
845+</svg>
846
847=== added file 'app/graphics/extended-information_wind.svg'
848--- app/graphics/extended-information_wind.svg 1970-01-01 00:00:00 +0000
849+++ app/graphics/extended-information_wind.svg 2015-04-29 14:22:07 +0000
850@@ -0,0 +1,155 @@
851+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
852+<!-- Created with Inkscape (http://www.inkscape.org/) -->
853+
854+<svg
855+ xmlns:dc="http://purl.org/dc/elements/1.1/"
856+ xmlns:cc="http://creativecommons.org/ns#"
857+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
858+ xmlns:svg="http://www.w3.org/2000/svg"
859+ xmlns="http://www.w3.org/2000/svg"
860+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
861+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
862+ width="90"
863+ height="90"
864+ id="svg6138"
865+ version="1.1"
866+ inkscape:version="0.91pre2 r"
867+ viewBox="0 0 90 90.000001"
868+ sodipodi:docname="weather-chance-of-wind02.svg">
869+ <defs
870+ id="defs6140" />
871+ <sodipodi:namedview
872+ id="base"
873+ pagecolor="#ffffff"
874+ bordercolor="#666666"
875+ borderopacity="1.0"
876+ inkscape:pageopacity="0.0"
877+ inkscape:pageshadow="2"
878+ inkscape:zoom="3.2596289"
879+ inkscape:cx="81.435648"
880+ inkscape:cy="24.842587"
881+ inkscape:document-units="px"
882+ inkscape:current-layer="g6442"
883+ showgrid="true"
884+ fit-margin-top="0"
885+ fit-margin-left="0"
886+ fit-margin-right="0"
887+ fit-margin-bottom="0"
888+ inkscape:snap-global="true"
889+ inkscape:snap-bbox="true"
890+ inkscape:bbox-paths="true"
891+ inkscape:snap-bbox-midpoints="true"
892+ inkscape:snap-bbox-edge-midpoints="true"
893+ inkscape:bbox-nodes="true"
894+ inkscape:object-paths="true"
895+ inkscape:snap-intersection-paths="true"
896+ inkscape:object-nodes="true"
897+ inkscape:snap-smooth-nodes="true"
898+ inkscape:snap-midpoints="true"
899+ inkscape:snap-others="true"
900+ inkscape:snap-object-midpoints="true"
901+ inkscape:snap-center="true"
902+ showguides="false"
903+ inkscape:guide-bbox="true">
904+ <inkscape:grid
905+ type="xygrid"
906+ id="grid6700"
907+ empspacing="6" />
908+ <sodipodi:guide
909+ orientation="0,1"
910+ position="90,87"
911+ id="guide4064" />
912+ <sodipodi:guide
913+ orientation="0,1"
914+ position="89,84"
915+ id="guide4066" />
916+ <sodipodi:guide
917+ orientation="1,0"
918+ position="3,69"
919+ id="guide4068" />
920+ <sodipodi:guide
921+ orientation="1,0"
922+ position="6,60"
923+ id="guide4070" />
924+ <sodipodi:guide
925+ orientation="1,0"
926+ position="87,58"
927+ id="guide4072" />
928+ <sodipodi:guide
929+ orientation="1,0"
930+ position="84,47"
931+ id="guide4074" />
932+ <sodipodi:guide
933+ orientation="0,1"
934+ position="77,3"
935+ id="guide4076" />
936+ <sodipodi:guide
937+ orientation="0,1"
938+ position="81,6"
939+ id="guide4078" />
940+ <sodipodi:guide
941+ orientation="1,0"
942+ position="81,25"
943+ id="guide4080" />
944+ <sodipodi:guide
945+ orientation="0,1"
946+ position="78,9"
947+ id="guide4082" />
948+ <sodipodi:guide
949+ orientation="0,1"
950+ position="79,81"
951+ id="guide4084" />
952+ <sodipodi:guide
953+ orientation="1,0"
954+ position="9,39"
955+ id="guide4086" />
956+ </sodipodi:namedview>
957+ <metadata
958+ id="metadata6143">
959+ <rdf:RDF>
960+ <cc:Work
961+ rdf:about="">
962+ <dc:format>image/svg+xml</dc:format>
963+ <dc:type
964+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
965+ <dc:title></dc:title>
966+ </cc:Work>
967+ </rdf:RDF>
968+ </metadata>
969+ <g
970+ inkscape:label="Layer 1"
971+ inkscape:groupmode="layer"
972+ id="layer1"
973+ transform="translate(-283.57144,-358.79068)">
974+ <g
975+ transform="translate(169.57144,223.42822)"
976+ id="g5937"
977+ inkscape:export-filename="envelope02.png"
978+ inkscape:export-xdpi="90"
979+ inkscape:export-ydpi="90" />
980+ <g
981+ id="g6442"
982+ transform="translate(-753.45981,336.4283)">
983+ <rect
984+ style="fill:none;stroke:none"
985+ id="rect1687"
986+ width="90"
987+ height="90"
988+ x="1037.0312"
989+ y="22.362379" />
990+ <path
991+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-indent:0;text-align:end;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:end;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
992+ d="m 75.279297,28.75 c -1.0334,0 -2.070116,0.17314 -3.103516,0.517578 -1.0332,0.301421 -1.957037,0.799407 -2.773437,1.488281 -0.7749,0.645859 -1.426106,1.497766 -1.941406,2.574219 -0.193801,0.386934 -0.311535,0.83777 -0.427735,1.285156 l 4.048828,2.333985 c 0.066,-0.47516 0.09082,-0.97049 0.265625,-1.34961 0.2583,-0.516687 0.599203,-0.93497 1.033203,-1.236328 0.4327,-0.344501 0.877363,-0.575907 1.351563,-0.705078 0.5166,-0.172251 1.013028,-0.253906 1.486328,-0.253906 0.9909,0 1.914591,0.365704 2.775391,1.097656 0.9043,0.688938 1.349609,1.71392 1.349609,3.091797 0,1.463904 -0.463956,2.57267 -1.410156,3.304688 -0.9054,0.731951 -2.2137,1.097656 -3.9375,1.097656 l -0.90625,0 -5.109375,0 -2.976563,0 -53.367237,0 0,0.0039 c -1.118972,8.07e-4 -2.232917,0.175074 -3.2753908,0.546875 -1.0812,0.374449 -2.0898969,0.990457 -2.9042969,1.802734 -0.8511,0.837684 -1.4685875,1.874775 -1.8671875,2.980469 -0.422,1.158702 -0.5898438,2.388837 -0.5898438,3.673828 0,1.287641 0.1681907,2.523171 0.5878907,3.6875 l 0,0.0059 0,0.0078 c 0.4008,1.096658 1.0169625,2.124759 1.8515625,2.960938 l 0.011719,0.01172 0.011719,0.01172 c 0.8122,0.795376 1.8055406,1.402256 2.8691406,1.785156 l 0.023437,0.0059 0.019531,0.0078 c 1.041,0.357709 2.145119,0.521485 3.261719,0.521485 l 0,0.002 41.3438,0 2.980469,0 5.115234,0 0.908203,0 c 1.7259,0 3.034806,0.36677 3.941406,1.099609 0.9473,0.732906 1.414063,1.842913 1.414063,3.308594 0,1.379548 -0.446163,2.403976 -1.351563,3.09375 -0.8619,0.73284 -1.787297,1.099609 -2.779297,1.099609 -0.4739,0 -0.970981,-0.08145 -1.488281,-0.253906 -0.4746,-0.129329 -0.920316,-0.362111 -1.353515,-0.707031 -0.434501,-0.301723 -0.776457,-0.720967 -1.035157,-1.238282 -0.1741,-0.379579 -0.200625,-0.873874 -0.265625,-1.349609 l -4.052734,2.335938 c 0.1164,0.44793 0.231781,0.899706 0.425781,1.287109 0.5159,1.07776 1.169413,1.931483 1.945313,2.578125 0.8175,0.689709 1.742843,1.188446 2.777343,1.490234 1.0347,0.344855 2.072722,0.517579 3.107422,0.517579 0.7758,0 1.660344,-0.153292 2.652344,-0.455079 1.0346,-0.258658 1.998997,-0.75733 2.904297,-1.490234 0.906,-0.68971 1.658365,-1.634709 2.259766,-2.841797 0.605199,-1.163958 0.910156,-2.648384 0.910156,-4.458984 l 0.0039,0 C 72,60.363013 70.961878,57.768642 68.892578,56.259766 66.823378,54.750954 63.956869,54 60.292969,54 l -48.6563,0 0,0.0098 c -0.5345,0 -0.948916,-0.07592 -1.291016,-0.191407 -0.2996,-0.111208 -0.4927686,-0.23897 -0.6679686,-0.408203 -0.1552,-0.158288 -0.3061656,-0.371439 -0.4472656,-0.751953 l 0,-0.0039 c -0.1279,-0.355148 -0.2324219,-0.897858 -0.2324219,-1.650391 0,-0.752625 0.1039625,-1.28965 0.2265625,-1.625 l 0,-0.0059 0,-0.0078 c 0.1465,-0.406946 0.2963938,-0.609758 0.4335938,-0.74414 l 0.011719,-0.01172 0.011719,-0.01172 c 0.1749,-0.175302 0.3458723,-0.286102 0.6386723,-0.386718 l 0.01953,-0.0078 0.02148,-0.0078 C 10.695178,48.075095 11.107669,48 11.636669,48 l 60.669972,0 c 3.6595,0 6.523043,-0.750829 8.589843,-2.257812 C 82.963184,44.23514 84,41.644264 84,37.984375 l -0.0039,0 c 0,-1.808407 -0.303703,-3.290578 -0.908203,-4.453125 -0.6007,-1.205626 -1.352913,-2.149016 -2.257813,-2.837891 -0.9043,-0.732015 -1.86719,-1.229936 -2.90039,-1.488281 C 76.938787,28.903658 76.054197,28.75 75.279297,28.75 Z"
993+ transform="translate(1037.0313,22.36238)"
994+ id="path4178"
995+ inkscape:connector-curvature="0"
996+ sodipodi:nodetypes="sccccccccscscsccccccccsccccccccccccccscscsccccccccscccccssccccccscccccccccssccccccs" />
997+ <path
998+ sodipodi:nodetypes="ccccsccccccccscscscccccsscc"
999+ inkscape:connector-curvature="0"
1000+ id="path4171"
1001+ d="m 1091.0274,48.500103 c 0,-1.780677 -0.2989,-3.239878 -0.8941,-4.384599 -0.5915,-1.187139 -1.3323,-2.116397 -2.2233,-2.794708 -0.8904,-0.720792 -1.8392,-1.211305 -2.8567,-1.465688 -0.9756,-0.2968 -1.8456,-0.44714 -2.6087,-0.44714 -1.0176,0 -2.0383,0.170054 -3.0558,0.50921 -1.0175,0.2968 -1.9269,0.787377 -2.7308,1.465687 -0.7631,0.635956 -1.4055,1.473955 -1.9129,2.533903 -0.1908,0.381001 -0.3053,0.826425 -0.4198,1.266952 l 3.9862,2.297899 c 0.064,-0.467873 0.089,-0.955778 0.2607,-1.329084 0.2544,-0.508765 0.5915,-0.920483 1.0188,-1.21722 0.4261,-0.339219 0.8637,-0.568417 1.3305,-0.695608 0.5087,-0.16961 0.9978,-0.248405 1.4639,-0.248405 0.9756,0 1.885,0.359888 2.7327,1.080617 0.8904,0.678374 1.3292,1.686427 1.3292,3.043176 0,1.441458 -0.4579,2.533521 -1.3896,3.254314 -0.8916,0.720728 -2.1794,1.080616 -3.8768,1.080616 l -0.8929,0 -5.031,0 -2.9311,0 -17.2945,0 0,5.912355 24.4865,0 c 3.6033,0 6.4232,-0.739426 8.4582,-2.223302 2.0351,-1.48394 3.0552,-4.035204 3.0552,-7.638975 z"
1002+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#808080;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
1003+ </g>
1004+ </g>
1005+</svg>
1006
1007=== modified file 'app/ui/HomePage.qml'
1008--- app/ui/HomePage.qml 2015-04-26 23:41:58 +0000
1009+++ app/ui/HomePage.qml 2015-04-29 14:22:07 +0000
1010@@ -96,6 +96,12 @@
1011 height: parent.height
1012 contentWidth: parent.width
1013
1014+ Behavior on contentHeight {
1015+ NumberAnimation {
1016+
1017+ }
1018+ }
1019+
1020 PullToRefresh {
1021 id: pullToRefresh
1022 parent: locationFlickable
1023@@ -112,20 +118,26 @@
1024 ListView {
1025 id: locationPages
1026 anchors.fill: parent
1027- width: parent.width
1028+ currentIndex: settings.current
1029+ delegate: LocationPane {}
1030 height: childrenRect.height
1031- contentWidth: parent.width
1032- contentHeight: childrenRect.height
1033+ highlightRangeMode: ListView.StrictlyEnforceRange
1034 model: weatherApp.locationsList.length
1035+ orientation: ListView.Horizontal
1036 // TODO with snapMode, currentIndex is not properly set and setting currentIndex fails
1037 //snapMode: ListView.SnapOneItem
1038- orientation: ListView.Horizontal
1039- currentIndex: settings.current
1040- highlightRangeMode: ListView.StrictlyEnforceRange
1041+ width: parent.width
1042+
1043+ property bool loaded: false
1044+
1045+ signal collapseOtherDelegates(int index)
1046+
1047 onCurrentIndexChanged: {
1048 if (loaded) {
1049 // FIXME: when a model is reloaded this causes the currentIndex to be lost
1050 settings.current = currentIndex
1051+
1052+ collapseOtherDelegates(-1) // collapse all
1053 }
1054 }
1055 onModelChanged: {
1056@@ -137,9 +149,12 @@
1057 loaded = true
1058 }
1059 }
1060- delegate: LocationPane {}
1061+ onVisibleChanged: {
1062+ if (!visible && loaded) {
1063+ collapseOtherDelegates(-1) // collapse all
1064+ }
1065+ }
1066
1067- property bool loaded: false
1068 // TODO: workaround for not being able to use snapMode property
1069 Component.onCompleted: {
1070 var scaleFactor = units.gridUnit * 10;
1071
1072=== modified file 'app/ui/LocationPane.qml'
1073--- app/ui/LocationPane.qml 2015-04-07 18:01:24 +0000
1074+++ app/ui/LocationPane.qml 2015-04-29 14:22:07 +0000
1075@@ -21,7 +21,7 @@
1076 import Ubuntu.Components.ListItems 0.1 as ListItem
1077 import "../components"
1078
1079-Rectangle {
1080+Item {
1081 id: locationItem
1082 /*
1083 Data properties
1084@@ -40,13 +40,15 @@
1085 height: childrenRect.height
1086 anchors.fill: parent.fill
1087
1088- /*
1089- Calculates the height of all location data components, to set the Flickable.contentHeight right.
1090- */
1091- function setFlickableContentHeight() {
1092- var contentHeightGu = (homeTempInfo.height+homeGraphic.height
1093- +(weekdayColumn.height*mainPageWeekdayListView.model.count))/units.gridUnit;
1094- locationFlickable.contentHeight = units.gu(contentHeightGu+25);
1095+ // FIXME: not sure where the 3GU comes from, PullToRefresh or something in HomePage?
1096+ onHeightChanged: locationFlickable.contentHeight = locationItem.height + units.gu(3)
1097+
1098+ function emptyIfUndefined(variable, append) {
1099+ if (append === undefined) {
1100+ append = ""
1101+ }
1102+
1103+ return variable === undefined ? "" : variable + append
1104 }
1105
1106 /*
1107@@ -97,12 +99,16 @@
1108 day: formatTimestamp(forecasts[x].date, 'dddd'),
1109 low: Math.round(forecasts[x][tempUnits].tempMin).toString() + settings.tempScale,
1110 high: (forecasts[x][tempUnits].tempMax !== undefined) ? Math.round(forecasts[x][tempUnits].tempMax).toString() + settings.tempScale : "",
1111- image: (forecasts[x].icon !== undefined && iconMap[forecasts[x].icon] !== undefined) ? iconMap[forecasts[x].icon] : ""
1112+ image: (forecasts[x].icon !== undefined && iconMap[forecasts[x].icon] !== undefined) ? iconMap[forecasts[x].icon] : "",
1113+ chanceOfRain: forecasts[x].propPrecip === undefined ? -1 : forecasts[x].propPrecip,
1114+ humidity: emptyIfUndefined(forecasts[x].humidity, "%"),
1115+ uvIndex: emptyIfUndefined(forecasts[x].uv),
1116+ wind: forecasts[x][tempUnits].windSpeed === undefined || forecasts[x].windDir === undefined
1117+ ? "" : Math.round(forecasts[x][tempUnits].windSpeed) + settings.windUnits + " " + forecasts[x].windDir
1118 }
1119 mainPageWeekdayListView.model.append(dayData);
1120 }
1121 }
1122- setFlickableContentHeight();
1123
1124 // set data for hourly forecasts
1125 if(hourlyForecasts.length > 0) {
1126@@ -165,6 +171,7 @@
1127 id: weekdayColumn
1128 width: parent.width
1129 height: childrenRect.height
1130+
1131 anchors {
1132 top: locationTop.bottom
1133 left: parent.left
1134@@ -174,11 +181,20 @@
1135 Repeater {
1136 id: mainPageWeekdayListView
1137 model: ListModel{}
1138- DayDelegate {
1139+ delegate: DayDelegate {
1140 day: model.day
1141 high: model.high
1142 image: model.image
1143 low: model.low
1144+
1145+ chanceOfRain: model.chanceOfRain
1146+ humidity: model.humidity
1147+ // TODO: extra from API
1148+ //pollen: model.pollen
1149+ //sunrise: model.sunrise
1150+ //sunset: model.sunset
1151+ wind: model.wind
1152+ uvIndex: model.uvIndex
1153 }
1154 }
1155 }
1156
1157=== modified file 'po/com.ubuntu.weather.pot'
1158--- po/com.ubuntu.weather.pot 2015-04-27 22:49:35 +0000
1159+++ po/com.ubuntu.weather.pot 2015-04-29 14:22:07 +0000
1160@@ -8,7 +8,7 @@
1161 msgstr ""
1162 "Project-Id-Version: ubuntu-weather-app\n"
1163 "Report-Msgid-Bugs-To: \n"
1164-"POT-Creation-Date: 2015-04-27 17:49-0500\n"
1165+"POT-Creation-Date: 2015-04-29 15:21+0100\n"
1166 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1167 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1168 "Language-Team: LANGUAGE <LL@li.org>\n"
1169@@ -18,6 +18,34 @@
1170 "Content-Transfer-Encoding: 8bit\n"
1171 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
1172
1173+#: ../app/components/DayDelegate.qml:193
1174+msgid "Chance of rain"
1175+msgstr ""
1176+
1177+#: ../app/components/DayDelegate.qml:202
1178+msgid "Winds"
1179+msgstr ""
1180+
1181+#: ../app/components/DayDelegate.qml:209
1182+msgid "UV Index"
1183+msgstr ""
1184+
1185+#: ../app/components/DayDelegate.qml:214
1186+msgid "Pollen"
1187+msgstr ""
1188+
1189+#: ../app/components/DayDelegate.qml:220
1190+msgid "Humidity"
1191+msgstr ""
1192+
1193+#: ../app/components/DayDelegate.qml:226
1194+msgid "Sunrise"
1195+msgstr ""
1196+
1197+#: ../app/components/DayDelegate.qml:232
1198+msgid "Sunset"
1199+msgstr ""
1200+
1201 #: ../app/components/HomeTempInfo.qml:38
1202 msgid "Today"
1203 msgstr ""

Subscribers

People subscribed via source and target branches

to all changes: