summaryrefslogtreecommitdiffstats
path: root/weather-qml
diff options
context:
space:
mode:
Diffstat (limited to 'weather-qml')
-rw-r--r--weather-qml/.DS_Storebin0 -> 6148 bytes
-rw-r--r--weather-qml/.gitignore19
-rw-r--r--weather-qml/CityModel.qml183
-rw-r--r--weather-qml/CityPanel.qml154
-rw-r--r--weather-qml/Cloudy.qml106
-rw-r--r--weather-qml/Fog.qml67
-rw-r--r--weather-qml/ForecastLabel.qml70
-rw-r--r--weather-qml/ForecastView.qml60
-rw-r--r--weather-qml/Haze.qml67
-rw-r--r--weather-qml/HungItem.qml28
-rw-r--r--weather-qml/LargeCloud.qml11
-rw-r--r--weather-qml/MediumCloud.qml11
-rw-r--r--weather-qml/Mist.qml119
-rw-r--r--weather-qml/MostlyCloudy.qml91
-rw-r--r--weather-qml/MostlySunny.qml75
-rw-r--r--weather-qml/ParallaxView.qml60
-rw-r--r--weather-qml/PartlyCloudy.qml75
-rw-r--r--weather-qml/README.rtf7
-rw-r--r--weather-qml/Rain.qml119
-rw-r--r--weather-qml/RainItem.qml15
-rw-r--r--weather-qml/ScrollBar.qml27
-rw-r--r--weather-qml/SmallCloud.qml11
-rw-r--r--weather-qml/SplashScreen.qml53
-rw-r--r--weather-qml/Storm.qml119
-rw-r--r--weather-qml/Sunny.qml31
-rw-r--r--weather-qml/Throbber.qml14
-rw-r--r--weather-qml/Thunderstorm.qml119
-rw-r--r--weather-qml/UnknownForecast.qml30
-rw-r--r--weather-qml/Weather.qmlproject19
-rw-r--r--weather-qml/default.qml73
-rw-r--r--weather-qml/images/bg_bottom_options.pngbin0 -> 23540 bytes
-rw-r--r--weather-qml/images/bg_day_clear.pngbin0 -> 67412 bytes
-rw-r--r--weather-qml/images/bg_day_heavyrain.pngbin0 -> 70658 bytes
-rw-r--r--weather-qml/images/bg_day_rain.pngbin0 -> 76568 bytes
-rw-r--r--weather-qml/images/bg_loading.pngbin0 -> 39649 bytes
-rw-r--r--weather-qml/images/bg_night_clear.pngbin0 -> 50357 bytes
-rw-r--r--weather-qml/images/bg_night_rain.pngbin0 -> 52185 bytes
-rw-r--r--weather-qml/images/bt_options_bg.pngbin0 -> 23540 bytes
-rwxr-xr-xweather-qml/images/button_list_delete.pngbin0 -> 1204 bytes
-rw-r--r--weather-qml/images/centigrades.pngbin0 -> 1755 bytes
-rw-r--r--weather-qml/images/city_name_background_bigger.pngbin0 -> 31290 bytes
-rw-r--r--weather-qml/images/city_panel_bg.pngbin0 -> 1195 bytes
-rw-r--r--weather-qml/images/cloud_1.pngbin0 -> 41678 bytes
-rw-r--r--weather-qml/images/cloud_1_line.pngbin0 -> 293 bytes
-rw-r--r--weather-qml/images/cloud_2.pngbin0 -> 24353 bytes
-rw-r--r--weather-qml/images/cloud_2_line.pngbin0 -> 316 bytes
-rw-r--r--weather-qml/images/cloud_3.pngbin0 -> 17637 bytes
-rw-r--r--weather-qml/images/cloud_3_line.pngbin0 -> 326 bytes
-rw-r--r--weather-qml/images/cloud_rain_1.pngbin0 -> 37844 bytes
-rw-r--r--weather-qml/images/cloud_rain_1_line.pngbin0 -> 220 bytes
-rw-r--r--weather-qml/images/cloud_rain_2.pngbin0 -> 24909 bytes
-rw-r--r--weather-qml/images/cloud_rain_2_line.pngbin0 -> 217 bytes
-rw-r--r--weather-qml/images/cloud_rain_3.pngbin0 -> 17375 bytes
-rw-r--r--weather-qml/images/cloud_rain_3_line.pngbin0 -> 205 bytes
-rw-r--r--weather-qml/images/cloud_storm_1.pngbin0 -> 38960 bytes
-rw-r--r--weather-qml/images/cloud_storm_1_line.pngbin0 -> 190 bytes
-rw-r--r--weather-qml/images/cloud_storm_2.pngbin0 -> 20736 bytes
-rw-r--r--weather-qml/images/cloud_storm_2_line.pngbin0 -> 211 bytes
-rw-r--r--weather-qml/images/cloud_storm_3.pngbin0 -> 14377 bytes
-rw-r--r--weather-qml/images/cloud_storm_3_line.pngbin0 -> 218 bytes
-rw-r--r--weather-qml/images/cloud_tstorm_1.pngbin0 -> 49152 bytes
-rw-r--r--weather-qml/images/cloud_tstorm_1_line.pngbin0 -> 190 bytes
-rw-r--r--weather-qml/images/cloud_tstorm_2.pngbin0 -> 28085 bytes
-rw-r--r--weather-qml/images/cloud_tstorm_2_line.pngbin0 -> 211 bytes
-rw-r--r--weather-qml/images/cold_sun.pngbin0 -> 14860 bytes
-rw-r--r--weather-qml/images/cold_sun_line.pngbin0 -> 385 bytes
-rw-r--r--weather-qml/images/division_line.pngbin0 -> 145 bytes
-rw-r--r--weather-qml/images/fog.pngbin0 -> 3706 bytes
-rw-r--r--weather-qml/images/haze.pngbin0 -> 3545 bytes
-rw-r--r--weather-qml/images/icon_max.pngbin0 -> 344 bytes
-rw-r--r--weather-qml/images/icon_min.pngbin0 -> 337 bytes
-rw-r--r--weather-qml/images/list_item_bg.pngbin0 -> 9100 bytes
-rw-r--r--weather-qml/images/list_item_pressed_bg.pngbin0 -> 17315 bytes
-rw-r--r--weather-qml/images/list_item_selected_bg.pngbin0 -> 19575 bytes
-rw-r--r--weather-qml/images/list_top.pngbin0 -> 1058 bytes
-rw-r--r--weather-qml/images/loading_1.pngbin0 -> 1206 bytes
-rw-r--r--weather-qml/images/loading_10.pngbin0 -> 1174 bytes
-rw-r--r--weather-qml/images/loading_11.pngbin0 -> 1162 bytes
-rw-r--r--weather-qml/images/loading_12.pngbin0 -> 1165 bytes
-rw-r--r--weather-qml/images/loading_13.pngbin0 -> 1180 bytes
-rw-r--r--weather-qml/images/loading_14.pngbin0 -> 1211 bytes
-rw-r--r--weather-qml/images/loading_15.pngbin0 -> 1156 bytes
-rw-r--r--weather-qml/images/loading_16.pngbin0 -> 1195 bytes
-rw-r--r--weather-qml/images/loading_17.pngbin0 -> 1158 bytes
-rw-r--r--weather-qml/images/loading_18.pngbin0 -> 1170 bytes
-rw-r--r--weather-qml/images/loading_19.pngbin0 -> 1221 bytes
-rw-r--r--weather-qml/images/loading_2.pngbin0 -> 1166 bytes
-rw-r--r--weather-qml/images/loading_20.pngbin0 -> 1181 bytes
-rw-r--r--weather-qml/images/loading_21.pngbin0 -> 1176 bytes
-rw-r--r--weather-qml/images/loading_22.pngbin0 -> 1156 bytes
-rw-r--r--weather-qml/images/loading_23.pngbin0 -> 1186 bytes
-rw-r--r--weather-qml/images/loading_24.pngbin0 -> 1205 bytes
-rw-r--r--weather-qml/images/loading_25.pngbin0 -> 1156 bytes
-rw-r--r--weather-qml/images/loading_3.pngbin0 -> 1164 bytes
-rw-r--r--weather-qml/images/loading_4.pngbin0 -> 1122 bytes
-rw-r--r--weather-qml/images/loading_5.pngbin0 -> 1175 bytes
-rw-r--r--weather-qml/images/loading_6.pngbin0 -> 1166 bytes
-rw-r--r--weather-qml/images/loading_7.pngbin0 -> 1129 bytes
-rw-r--r--weather-qml/images/loading_8.pngbin0 -> 1160 bytes
-rw-r--r--weather-qml/images/loading_9.pngbin0 -> 1163 bytes
-rw-r--r--weather-qml/images/minus_sign.pngbin0 -> 259 bytes
-rw-r--r--weather-qml/images/mist_01.pngbin0 -> 29211 bytes
-rw-r--r--weather-qml/images/mist_02.pngbin0 -> 26915 bytes
-rw-r--r--weather-qml/images/mist_03.pngbin0 -> 28047 bytes
-rw-r--r--weather-qml/images/mist_04.pngbin0 -> 35158 bytes
-rw-r--r--weather-qml/images/mist_05.pngbin0 -> 29677 bytes
-rw-r--r--weather-qml/images/moon.pngbin0 -> 9824 bytes
-rw-r--r--weather-qml/images/moon_line.pngbin0 -> 211 bytes
-rw-r--r--weather-qml/images/na_icon.pngbin0 -> 2687 bytes
-rw-r--r--weather-qml/images/na_icon_line.pngbin0 -> 211 bytes
-rw-r--r--weather-qml/images/rain_01.pngbin0 -> 40505 bytes
-rw-r--r--weather-qml/images/rain_02.pngbin0 -> 36909 bytes
-rw-r--r--weather-qml/images/rain_03.pngbin0 -> 33674 bytes
-rw-r--r--weather-qml/images/rain_04.pngbin0 -> 39423 bytes
-rw-r--r--weather-qml/images/rain_05.pngbin0 -> 39821 bytes
-rw-r--r--weather-qml/images/scroll.pngbin0 -> 217 bytes
-rw-r--r--weather-qml/images/scroll_knob.pngbin0 -> 236 bytes
-rw-r--r--weather-qml/images/star_01.pngbin0 -> 1425 bytes
-rw-r--r--weather-qml/images/star_02.pngbin0 -> 1223 bytes
-rw-r--r--weather-qml/images/star_03.pngbin0 -> 727 bytes
-rw-r--r--weather-qml/images/storm_01.pngbin0 -> 43473 bytes
-rw-r--r--weather-qml/images/storm_02.pngbin0 -> 38353 bytes
-rw-r--r--weather-qml/images/storm_03.pngbin0 -> 34302 bytes
-rw-r--r--weather-qml/images/storm_04.pngbin0 -> 41249 bytes
-rw-r--r--weather-qml/images/storm_05.pngbin0 -> 43272 bytes
-rw-r--r--weather-qml/images/sun.pngbin0 -> 43738 bytes
-rw-r--r--weather-qml/images/sun_line.pngbin0 -> 402 bytes
-rw-r--r--weather-qml/images/thunder.pngbin0 -> 7510 bytes
-rw-r--r--weather-qml/images/umbrella.pngbin0 -> 34987 bytes
129 files changed, 1833 insertions, 0 deletions
diff --git a/weather-qml/.DS_Store b/weather-qml/.DS_Store
new file mode 100644
index 0000000..5008ddf
--- /dev/null
+++ b/weather-qml/.DS_Store
Binary files differ
diff --git a/weather-qml/.gitignore b/weather-qml/.gitignore
new file mode 100644
index 0000000..87cab50
--- /dev/null
+++ b/weather-qml/.gitignore
@@ -0,0 +1,19 @@
+*.o
+moc_*.cpp
+Makefile
+qrc_*.cpp
+*.moc
+*~
+*.inf
+*.sis
+*.mmp
+*.rss
+*.pkg
+*.loc
+*.mk
+*.cache
+*#
+.cproject
+.project
+.make.cache
+ABLD.BAT
diff --git a/weather-qml/CityModel.qml b/weather-qml/CityModel.qml
new file mode 100644
index 0000000..d4760a8
--- /dev/null
+++ b/weather-qml/CityModel.qml
@@ -0,0 +1,183 @@
+import Qt 4.6
+
+ListModel {
+ ListElement {
+ cityId: "Mostly Cloudy"
+ cityName: "Mostly Cloudy"
+ lower: 18
+ upper: 31
+ current: 22
+ isNight: false
+ weather: "MostlyCloudy"
+ }
+
+ ListElement {
+ cityId: "Mostly Cloudy 2"
+ cityName: "Mostly Cloudy 2"
+ lower: 18
+ upper: 31
+ current: 22
+ isNight: true
+ weather: "MostlyCloudy"
+ }
+
+ ListElement {
+ cityId: "Storm"
+ cityName: "Storm"
+ lower: 2
+ upper: 21
+ current: 8
+ isNight: false
+ weather: "Storm"
+ }
+
+ ListElement {
+ cityId: "Storm 2"
+ cityName: "Storm 2"
+ lower: 2
+ upper: 21
+ current: 8
+ isNight: true
+ weather: "Storm"
+ }
+
+ ListElement {
+ cityId: "Thunderstorm"
+ cityName: "Thunderstorm"
+ lower: 10
+ upper: 13
+ current: 7
+ isNight: false
+ weather: "Thunderstorm"
+ }
+
+ ListElement {
+ cityId: "Thunderstorm 2"
+ cityName: "Thunderstorm 2"
+ lower: 10
+ upper: 13
+ current: 7
+ isNight: true
+ weather: "Thunderstorm"
+ }
+
+ ListElement {
+ cityId: "Rain"
+ cityName: "Rain"
+ lower: 11
+ upper: 25
+ current: 12
+ isNight: false
+ weather: "Rain"
+ }
+
+ ListElement {
+ cityId: "Rain 2"
+ cityName: "Rain 2"
+ lower: 11
+ upper: 25
+ current: 12
+ isNight: true
+ weather: "Rain"
+ }
+
+ ListElement {
+ cityId: "Mist"
+ cityName: "Mist"
+ lower: 21
+ upper: 25
+ current: 22
+ isNight: false
+ weather: "Mist"
+ }
+
+ ListElement {
+ cityId: "Mist 2"
+ cityName: "Mist 2"
+ lower: 21
+ upper: 25
+ current: 22
+ isNight: true
+ weather: "Mist"
+ }
+
+ ListElement {
+ cityId: "Haze"
+ cityName: "Haze"
+ lower: 1
+ upper: 9
+ current: 11
+ isNight: false
+ weather: "Haze"
+ }
+
+ ListElement {
+ cityId: "Haze 2"
+ cityName: "Haze 2"
+ lower: 1
+ upper: 9
+ current: 11
+ isNight: true
+ weather: "Haze"
+ }
+
+ ListElement {
+ cityId: "Fog"
+ cityName: "Fog"
+ lower: 28
+ upper: 35
+ current: 30
+ isNight: false
+ weather: "Fog"
+ }
+
+ ListElement {
+ cityId: "Fog 2"
+ cityName: "Fog 2"
+ lower: 28
+ upper: 35
+ current: 30
+ isNight: true
+ weather: "Fog"
+ }
+
+ ListElement {
+ cityId: "Cloudy"
+ cityName: "Cloudy"
+ lower: 25
+ upper: 28
+ current: 27
+ isNight: false
+ weather: "Cloudy"
+ }
+
+ ListElement {
+ cityId: "Cloudy 2"
+ cityName: "Cloudy 2"
+ lower: 25
+ upper: 28
+ current: 27
+ isNight: true
+ weather: "Cloudy"
+ }
+
+ ListElement {
+ cityId: "Mostly Sunny"
+ cityName: "Mostly Sunny"
+ lower: 33
+ upper: 39
+ current: 36
+ isNight: false
+ weather: "MostlySunny"
+ }
+
+ ListElement {
+ cityId: "Mostly Sunny 2"
+ cityName: "Mostly Sunny 2"
+ lower: 33
+ upper: 39
+ current: 36
+ isNight: true
+ weather: "MostlySunny"
+ }
+}
diff --git a/weather-qml/CityPanel.qml b/weather-qml/CityPanel.qml
new file mode 100644
index 0000000..19b4ef1
--- /dev/null
+++ b/weather-qml/CityPanel.qml
@@ -0,0 +1,154 @@
+import Qt 4.6
+
+Item {
+ id: root
+ width: window.width
+
+ property string currentMessage;
+
+ signal gotoCity(string cityId);
+
+ MouseArea {
+ id: overlay
+ anchors.fill: parent
+ visible: false
+ onClicked: root.state = ""
+ }
+
+ Image {
+ id: backPanel
+ opacity: 0.0
+ y: frontPanel.y
+ source: "images/city_panel_bg.png"
+ }
+
+ Rectangle {
+ id: cityRect
+ x: 0
+ y: 36
+ width: 360
+ height: 64
+ color: "#071217"
+ opacity: 0.0
+ anchors.topMargin: -1 // XXX workaround for internal rounding bug
+ anchors.top: backPanel.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ /// XXX: list item bg
+ height: (80 * Math.min(cityListView.count, 5)) + 17
+
+ Component {
+ id: cityDelegate
+ Item {
+ id: cityItem
+ width: background.width
+ height: background.height
+
+ ListView.onRemove: SequentialAnimation {
+ PropertyAction { target: cityItem; property: "ListView.delayRemove"; value: true }
+ NumberAnimation { target: cityItem; property: "opacity"; to: 0 }
+ NumberAnimation { target: cityItem; property: "height"; to: 0; duration: 9000; }
+ PropertyAction { target: cityItem; property: "ListView.delayRemove"; value: false }
+ }
+
+ ListView.onAdd: SequentialAnimation {
+ PropertyAction { target: cityItem; property: "opacity"; value: 0 }
+ NumberAnimation { target: cityItem; property: "height"; from: 0; to: background.height; duration: 9000;}
+ NumberAnimation { target: cityItem; property: "opacity"; from: 0; to: 1 }
+ }
+
+ Image {
+ id: background;
+ source: "images/list_item_bg.png"
+ MouseArea {
+ anchors.fill: parent
+ onClicked: { root.gotoCity(cityId); }
+ }
+ }
+
+ Text {
+ text: cityName
+ color: "white"
+ font.family: "Nokia Sans"
+ font.pixelSize: 38
+ anchors.fill: parent
+ anchors.leftMargin: 30
+ anchors.rightMargin: 30
+ verticalAlignment: "AlignVCenter"
+ }
+ }
+ }
+
+ ListView {
+ id: cityListView;
+ clip: true;
+ model: cityModel
+ opacity: 0.0
+ delegate: cityDelegate
+ anchors.fill: cityRect
+ anchors.topMargin: -17
+ anchors.bottomMargin: 35
+
+ ScrollBar {
+ id: scroll
+ pageSize: cityListView.height / cityListView.contentHeight
+ position: cityListView.contentY / cityListView.contentHeight
+ anchors.top: cityListView.top
+ anchors.bottom: cityListView.bottom
+ anchors.right: cityListView.right
+ anchors.rightMargin: 10
+ anchors.bottomMargin: 15
+ width: 8
+ }
+ }
+ }
+
+ Image {
+ id: frontPanel
+ source: "images/city_name_background_bigger.png"
+ anchors.bottom: root.bottom
+ MouseArea {
+ anchors.fill: frontPanel
+ onClicked: { root.state = "final"; }
+ }
+ }
+
+ states : State {
+ name: "final"
+ PropertyChanges { target: frontPanel; opacity: 0.0; visible: false; }
+ PropertyChanges { target: backPanel; opacity: 1.0; }
+ PropertyChanges { target: cityRect; opacity: 1.0; }
+ PropertyChanges { target: backPanel; y: root.height - cityRect.height; }
+ PropertyChanges { target: overlay; visible: true; }
+ PropertyChanges { target: cityListView; opacity: 1.0; }
+ }
+
+ transitions: Transition {
+ from: ""; to: "final"
+ SequentialAnimation {
+ ParallelAnimation {
+ NumberAnimation { target: backPanel; properties: "opacity"; duration: 300 }
+ NumberAnimation { target: cityRect; properties: "opacity"; duration: 300 }
+ }
+ NumberAnimation { target: frontPanel; properties: "opacity"; duration: 300 }
+ NumberAnimation { target: frontPanel; properties: "visible"; duration: 0 }
+ NumberAnimation { target: backPanel; properties: "y"; duration: 250 }
+ NumberAnimation { target: cityListView; properties: "opacity"; duration: 200 }
+ }
+ }
+
+ transitions: Transition {
+ from: "final"; to: ""
+ SequentialAnimation {
+ NumberAnimation { target: cityListView; properties: "opacity"; duration: 200 }
+ NumberAnimation { target: backPanel; properties: "y"; duration: 250 }
+ NumberAnimation { target: frontPanel; properties: "opacity"; duration: 300 }
+ NumberAnimation { target: frontPanel; properties: "visible"; duration: 0 }
+ ParallelAnimation {
+ NumberAnimation { target: backPanel; properties: "opacity"; duration: 300 }
+ NumberAnimation { target: cityRect; properties: "opacity"; duration: 300 }
+ }
+ }
+ }
+}
diff --git a/weather-qml/Cloudy.qml b/weather-qml/Cloudy.qml
new file mode 100644
index 0000000..84e6f92
--- /dev/null
+++ b/weather-qml/Cloudy.qml
@@ -0,0 +1,106 @@
+import Qt 4.6
+
+ForecastView {
+ id: root
+ isClear: false
+
+ SmallCloud {
+ id: cloud5
+ x: scaledX(-22)
+ y: scaledY(-800)
+ finalY: scaledY(-477);
+ type: isDay ? "cloud" : "cloud_rain"
+ }
+
+ SmallCloud {
+ id: cloud4
+ x: scaledX(317)
+ y: scaledY(-800)
+ finalY: scaledY(-480);
+ type: isDay ? "cloud" : "cloud_rain"
+ }
+
+ HungItem {
+ id: sun
+ x: isDay ? scaledX(198) : scaledX(220)
+ y: scaledY(-800)
+ itemX: 0
+ itemY: isDay ? 176 : 180
+ height: isDay ? 460 : 440
+ finalY: isDay ? scaledY(-255) : scaledY(-205)
+ itemImage: isDay ? "images/cold_sun.png" : "images/moon.png"
+ lineImage: isDay ? "images/cold_sun_line.png" : "images/moon_line.png"
+ }
+
+ MediumCloud {
+ id: cloud3
+ x: scaledX(215)
+ y: scaledY(-800)
+ finalY: scaledY(-340)
+ type: isDay ? "cloud" : "cloud_rain"
+ }
+
+ LargeCloud {
+ id: cloud2
+ x: scaledX(-1)
+ y: scaledY(-800)
+ finalY: scaledY(-333)
+ type: isDay ? "cloud" : "cloud_rain"
+ }
+
+ LargeCloud {
+ id: cloud1
+ x: scaledX(318)
+ y: scaledY(-800)
+ finalY: scaledY(-331)
+ type: isDay ? "cloud" : "cloud_rain"
+ }
+
+ states : State {
+ name: "final"
+ PropertyChanges { target: sun; y: sun.finalY; }
+ PropertyChanges { target: cloud1; y: cloud1.finalY; }
+ PropertyChanges { target: cloud2; y: cloud2.finalY; }
+ PropertyChanges { target: cloud3; y: cloud3.finalY; }
+ PropertyChanges { target: cloud4; y: cloud4.finalY; }
+ PropertyChanges { target: cloud5; y: cloud5.finalY; }
+ }
+
+ transitions: Transition {
+ SequentialAnimation {
+ ParallelAnimation {
+ NumberAnimation { target: cloud1; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 200 }
+ NumberAnimation { target: cloud3; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 400 }
+ NumberAnimation { target: cloud2; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 600 }
+ NumberAnimation { target: cloud4; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 600 }
+ NumberAnimation { target: cloud5; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+ }
+
+ NumberAnimation { target: sun; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+ }
+
+ onPresent: { root.state = "final"; }
+}
diff --git a/weather-qml/Fog.qml b/weather-qml/Fog.qml
new file mode 100644
index 0000000..3def8af
--- /dev/null
+++ b/weather-qml/Fog.qml
@@ -0,0 +1,67 @@
+import Qt 4.6
+
+ForecastView {
+ id: root
+ isClear: false
+
+ SmallCloud {
+ id: cloud2
+ x: scaledX(308)
+ y: scaledY(-800)
+ finalY: scaledY(-468);
+ type: "cloud_rain"
+ }
+
+ HungItem {
+ id: sun
+ x: isDay ? scaledX(198) : scaledX(220)
+ y: scaledY(-800)
+ itemX: 0
+ itemY: isDay ? 176 : 180
+ height: isDay ? 460 : 440
+ finalY: isDay ? scaledY(-255) : scaledY(-205)
+ itemImage: isDay ? "images/cold_sun.png" : "images/moon.png"
+ lineImage: isDay ? "images/cold_sun_line.png" : "images/moon_line.png"
+ }
+
+ MediumCloud {
+ id: cloud1
+ x: scaledX(3)
+ y: scaledY(-800)
+ finalY: scaledY(-296)
+ type: "cloud_rain"
+ }
+
+ Image {
+ id: fog
+ x: scaledX(-30)
+ source: "images/fog.png"
+ }
+
+ states : State {
+ name: "final"
+ PropertyChanges { target: sun; y: sun.finalY; }
+ PropertyChanges { target: cloud1; y: cloud1.finalY; }
+ PropertyChanges { target: cloud2; y: cloud2.finalY; }
+ }
+
+ transitions: Transition {
+ SequentialAnimation {
+ ParallelAnimation {
+ NumberAnimation { target: cloud1; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 200 }
+ NumberAnimation { target: cloud2; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+ }
+
+ NumberAnimation { target: sun; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+ }
+
+ onPresent: { root.state = "final"; }
+}
diff --git a/weather-qml/ForecastLabel.qml b/weather-qml/ForecastLabel.qml
new file mode 100644
index 0000000..60a4440
--- /dev/null
+++ b/weather-qml/ForecastLabel.qml
@@ -0,0 +1,70 @@
+import Qt 4.6
+
+Item {
+ id: root
+
+ property string lowTemperature
+ property string highTemperature
+ property string currentTemperature
+
+ Row {
+ anchors.bottom: line.bottom
+ anchors.bottomMargin: 58
+ anchors.bottom: parent.bottom
+ anchors.horizontalCenter: line.horizontalCenter
+
+ Text {
+ text: currentTemperature
+ font.family: "Nokia Sans"
+ font.pixelSize: 120
+ font.bold: true
+ color: "white"
+ }
+
+ Image {
+ source: "images/centigrades.png"
+ }
+ }
+
+ Image {
+ id: line
+ source: "images/division_line.png"
+ anchors.top: parent.top
+ anchors.topMargin: 104
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Row {
+ anchors.left: line.left
+ anchors.top: line.bottom
+
+ Image {
+ source: "images/icon_max.png"
+ }
+
+ Text {
+ text: highTemperature + "°C"
+ font.family: "Nokia Sans"
+ font.pixelSize: 30
+ color: "white"
+ opacity: 0.7
+ }
+ }
+
+ Row {
+ anchors.right: line.right
+ anchors.top: line.bottom
+
+ Image {
+ source: "images/icon_min.png"
+ }
+
+ Text {
+ text: lowTemperature + "°C"
+ font.family: "Nokia Sans"
+ font.pixelSize: 30
+ color: "white"
+ opacity: 0.7
+ }
+ }
+}
diff --git a/weather-qml/ForecastView.qml b/weather-qml/ForecastView.qml
new file mode 100644
index 0000000..9aace9c
--- /dev/null
+++ b/weather-qml/ForecastView.qml
@@ -0,0 +1,60 @@
+import Qt 4.6
+
+Item {
+ id: root
+ anchors.fill: parent
+
+ signal present();
+
+ property bool isDay : true;
+ property bool isClear : true;
+ property string cityName;
+ property int lowTemperature;
+ property int highTemperature;
+ property int currentTemperature;
+
+ function scaledX(x) {
+ return x * window.scaleFactorX;
+ }
+
+ function scaledY(y) {
+ return y * window.scaleFactorY;
+ }
+
+ Image {
+ id: bg
+ x: root.width / 2 - bg.width / 2
+ source: root.isDay ? (root.isClear ? "images/bg_day_clear.png" : "images/bg_day_rain.png")
+ : (root.isClear ? "images/bg_night_clear.png" : "images/bg_night_rain.png");
+ }
+
+ ForecastLabel {
+ id: display1
+ x: 110
+ z: 99
+ width: 260
+ height: 180
+ anchors.bottomMargin: 115
+ anchors.bottom: parent.bottom
+ currentTemperature: root.currentTemperature
+ lowTemperature: root.lowTemperature
+ highTemperature: root.highTemperature
+ }
+
+ Text {
+ id: cityLabel
+ z: 99
+ text: root.cityName
+ font.family: "Nokia Sans"
+ font.pixelSize: 40
+ color: "#ffffff"
+ horizontalAlignment: "AlignHCenter"
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.leftMargin: 50
+ anchors.bottomMargin: 76
+ anchors.bottom: parent.bottom
+ }
+
+ Connections { target: parent; onPresent: present(); }
+}
diff --git a/weather-qml/Haze.qml b/weather-qml/Haze.qml
new file mode 100644
index 0000000..7da5e67
--- /dev/null
+++ b/weather-qml/Haze.qml
@@ -0,0 +1,67 @@
+import Qt 4.6
+
+ForecastView {
+ id: root
+ isClear: false
+
+ SmallCloud {
+ id: cloud2
+ x: scaledX(341)
+ y: scaledY(-800)
+ finalY: scaledY(-469);
+ type: "cloud_rain"
+ }
+
+ HungItem {
+ id: sun
+ x: isDay ? scaledX(198) : scaledX(220)
+ y: scaledY(-800)
+ itemX: 0
+ itemY: isDay ? 176 : 180
+ height: isDay ? 460 : 440
+ finalY: isDay ? scaledY(-255) : scaledY(-205)
+ itemImage: isDay ? "images/cold_sun.png" : "images/moon.png"
+ lineImage: isDay ? "images/cold_sun_line.png" : "images/moon_line.png"
+ }
+
+ MediumCloud {
+ id: cloud1
+ x: scaledX(6)
+ y: scaledY(-800)
+ finalY: scaledY(-296)
+ type: "cloud_rain"
+ }
+
+ Image {
+ id: haze
+ x: scaledX(-30)
+ source: "images/haze.png"
+ }
+
+ states : State {
+ name: "final"
+ PropertyChanges { target: sun; y: sun.finalY; }
+ PropertyChanges { target: cloud1; y: cloud1.finalY; }
+ PropertyChanges { target: cloud2; y: cloud2.finalY; }
+ }
+
+ transitions: Transition {
+ SequentialAnimation {
+ ParallelAnimation {
+ NumberAnimation { target: cloud1; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 200 }
+ NumberAnimation { target: cloud2; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+ }
+
+ NumberAnimation { target: sun; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+ }
+
+ onPresent: { root.state = "final"; }
+}
diff --git a/weather-qml/HungItem.qml b/weather-qml/HungItem.qml
new file mode 100644
index 0000000..cf14c09
--- /dev/null
+++ b/weather-qml/HungItem.qml
@@ -0,0 +1,28 @@
+import Qt 4.6
+
+Item {
+ id: root
+
+ property real itemX
+ property real itemY
+ property real finalY
+ property string lineImage
+ property string itemImage
+
+ width: item.width
+ height: itemY + item.height
+
+ Image {
+ id: line
+ source: root.lineImage
+ anchors.horizontalCenter: root.horizontalCenter
+ }
+
+ Image {
+ id: item
+ x: root.itemX
+ y: root.itemY
+ source: root.itemImage
+ anchors.bottom: parent.bottom
+ }
+}
diff --git a/weather-qml/LargeCloud.qml b/weather-qml/LargeCloud.qml
new file mode 100644
index 0000000..c05e234
--- /dev/null
+++ b/weather-qml/LargeCloud.qml
@@ -0,0 +1,11 @@
+import Qt 4.6
+
+HungItem {
+ id: root
+ itemX: 15;
+ itemY: 420;
+
+ property string type: "cloud";
+ itemImage: "images/" + root.type + "_1.png"
+ lineImage: "images/" + root.type + "_1_line.png"
+}
diff --git a/weather-qml/MediumCloud.qml b/weather-qml/MediumCloud.qml
new file mode 100644
index 0000000..527ce97
--- /dev/null
+++ b/weather-qml/MediumCloud.qml
@@ -0,0 +1,11 @@
+import Qt 4.6
+
+HungItem {
+ id: root
+ itemX: 13;
+ itemY: 420;
+
+ property string type: "cloud";
+ itemImage: "images/" + root.type + "_2.png"
+ lineImage: "images/" + root.type + "_2_line.png"
+}
diff --git a/weather-qml/Mist.qml b/weather-qml/Mist.qml
new file mode 100644
index 0000000..d30e604
--- /dev/null
+++ b/weather-qml/Mist.qml
@@ -0,0 +1,119 @@
+import Qt 4.6
+
+ForecastView {
+ id: root
+ isClear: false
+
+ SmallCloud {
+ id: cloud5
+ x: scaledX(297)
+ y: scaledY(-800)
+ finalY: scaledY(-460);
+ type: "cloud_rain"
+ }
+
+ SmallCloud {
+ id: cloud4
+ x: scaledX(64)
+ y: scaledY(-800)
+ finalY: scaledY(-436)
+ type: "cloud_rain"
+ }
+
+ HungItem {
+ id: sun
+ x: isDay ? scaledX(198) : scaledX(220)
+ y: scaledY(-800)
+ itemX: 0
+ itemY: isDay ? 176 : 180
+ height: isDay ? 460 : 440
+ finalY: isDay ? scaledY(-255) : scaledY(-205)
+ itemImage: isDay ? "images/cold_sun.png" : "images/moon.png"
+ lineImage: isDay ? "images/cold_sun_line.png" : "images/moon_line.png"
+ }
+
+ MediumCloud {
+ id: cloud3
+ x: scaledX(154)
+ y: scaledY(-800)
+ finalY: scaledY(-296)
+ type: "cloud_rain"
+ }
+
+ RainItem {
+ id: rain
+ x: scaledX(70)
+ y: scaledY(376)
+ visible: false
+ rainType: "mist"
+ }
+
+ LargeCloud {
+ id: cloud2
+ x: scaledX(315)
+ y: scaledY(-800)
+ finalY: scaledY(-351)
+ type: "cloud_rain"
+ }
+
+ LargeCloud {
+ id: cloud1
+ x: scaledX(-70)
+ y: scaledY(-800)
+ finalY: scaledY(-294)
+ type: "cloud_rain"
+ }
+
+ states : State {
+ name: "final"
+ PropertyChanges { target: sun; y: sun.finalY; }
+ PropertyChanges { target: cloud1; y: cloud1.finalY; }
+ PropertyChanges { target: cloud2; y: cloud2.finalY; }
+ PropertyChanges { target: cloud3; y: cloud3.finalY; }
+ PropertyChanges { target: cloud4; y: cloud4.finalY; }
+ PropertyChanges { target: cloud5; y: cloud5.finalY; }
+ PropertyChanges { target: rain; visible: true; }
+ }
+
+ transitions: Transition {
+ SequentialAnimation {
+ ParallelAnimation {
+ NumberAnimation { target: cloud1; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 200 }
+ NumberAnimation { target: cloud2; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 400 }
+ NumberAnimation { target: cloud3; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 600 }
+ NumberAnimation { target: cloud4; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 800 }
+ NumberAnimation { target: cloud5; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+ }
+
+ NumberAnimation { target: sun; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+
+ PauseAnimation { duration: 100 }
+
+ NumberAnimation { target: rain; properties: "visible"; duration: 0 }
+ }
+ }
+
+ onPresent: { root.state = "final"; }
+}
diff --git a/weather-qml/MostlyCloudy.qml b/weather-qml/MostlyCloudy.qml
new file mode 100644
index 0000000..8485f2f
--- /dev/null
+++ b/weather-qml/MostlyCloudy.qml
@@ -0,0 +1,91 @@
+import Qt 4.6
+
+ForecastView {
+ id: root
+ isClear: false
+
+ SmallCloud {
+ id: cloud4
+ x: scaledX(84)
+ y: scaledY(-800)
+ finalY: scaledY(-483);
+ type: isDay ? "cloud" : "cloud_rain"
+ }
+
+ HungItem {
+ id: sun
+ x: isDay ? scaledX(198) : scaledX(220)
+ y: scaledY(-800)
+ itemX: 0
+ itemY: isDay ? 176 : 180
+ height: isDay ? 460 : 440
+ finalY: isDay ? scaledY(-255) : scaledY(-205)
+ itemImage: isDay ? "images/cold_sun.png" : "images/moon.png"
+ lineImage: isDay ? "images/cold_sun_line.png" : "images/moon_line.png"
+ }
+
+ MediumCloud {
+ id: cloud3
+ x: scaledX(-43)
+ y: scaledY(-800)
+ finalY: scaledY(-333)
+ type: isDay ? "cloud" : "cloud_rain"
+ }
+
+ MediumCloud {
+ id: cloud2
+ x: scaledX(374)
+ y: scaledY(-800)
+ finalY: scaledY(-334)
+ type: isDay ? "cloud" : "cloud_rain"
+ }
+
+ LargeCloud {
+ id: cloud1
+ x: scaledX(235)
+ y: scaledY(-800)
+ finalY: scaledY(-298)
+ type: isDay ? "cloud" : "cloud_rain"
+ }
+
+ states : State {
+ name: "final"
+ PropertyChanges { target: sun; y: sun.finalY; }
+ PropertyChanges { target: cloud1; y: cloud1.finalY; }
+ PropertyChanges { target: cloud2; y: cloud2.finalY; }
+ PropertyChanges { target: cloud3; y: cloud3.finalY; }
+ PropertyChanges { target: cloud4; y: cloud4.finalY; }
+ }
+
+ transitions: Transition {
+ SequentialAnimation {
+ ParallelAnimation {
+ NumberAnimation { target: cloud1; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 200 }
+ NumberAnimation { target: cloud3; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 400 }
+ NumberAnimation { target: cloud2; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 600 }
+ NumberAnimation { target: cloud4; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+ }
+
+ NumberAnimation { target: sun; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+ }
+
+ onPresent: { root.state = "final"; }
+}
diff --git a/weather-qml/MostlySunny.qml b/weather-qml/MostlySunny.qml
new file mode 100644
index 0000000..4970238
--- /dev/null
+++ b/weather-qml/MostlySunny.qml
@@ -0,0 +1,75 @@
+import Qt 4.6
+
+ForecastView {
+ id: root
+
+ SmallCloud {
+ id: cloud3
+ x: scaledX(-7)
+ y: scaledY(-800)
+ finalY: scaledY(-540);
+ type: isDay ? "cloud" : "cloud_rain"
+ }
+
+ SmallCloud {
+ id: cloud2
+ x: scaledX(399)
+ y: scaledY(-800)
+ finalY: scaledY(-409);
+ type: isDay ? "cloud" : "cloud_rain"
+ }
+
+ HungItem {
+ id: sun
+ x: isDay ? scaledX(120) : scaledX(220)
+ y: scaledY(-800)
+ itemX: 0
+ itemY: isDay ? 200 : 180
+ height: isDay ? 500 : 440
+ finalY: isDay ? scaledY(-198) : scaledY(-205)
+ itemImage: isDay ? "images/sun.png" : "images/moon.png"
+ lineImage: isDay ? "images/sun_line.png" : "images/moon_line.png"
+ }
+
+ MediumCloud {
+ id: cloud1
+ x: scaledX(-20)
+ y: scaledY(-800)
+ finalY: scaledY(-218)
+ type: isDay ? "cloud" : "cloud_rain"
+ }
+
+ states : State {
+ name: "final"
+ PropertyChanges { target: sun; y: sun.finalY; }
+ PropertyChanges { target: cloud1; y: cloud1.finalY; }
+ PropertyChanges { target: cloud2; y: cloud2.finalY; }
+ PropertyChanges { target: cloud3; y: cloud3.finalY; }
+ }
+
+ transitions: Transition {
+ SequentialAnimation {
+ ParallelAnimation {
+ NumberAnimation { target: cloud1; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 200 }
+ NumberAnimation { target: cloud2; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 400 }
+ NumberAnimation { target: cloud3; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+ }
+
+ NumberAnimation { target: sun; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+ }
+
+ onPresent: { root.state = "final"; }
+}
diff --git a/weather-qml/ParallaxView.qml b/weather-qml/ParallaxView.qml
new file mode 100644
index 0000000..cfd4414
--- /dev/null
+++ b/weather-qml/ParallaxView.qml
@@ -0,0 +1,60 @@
+import Qt 4.6
+
+Item {
+ id: root
+
+ Component {
+ id: cityDelegate
+
+ Item {
+ id: itemInner
+ width: 432
+ height: window.height
+
+ signal present();
+
+ Component.onCompleted: {
+ var component = createComponent(weather + ".qml");
+ var element = component.createObject();
+
+ if (element != 0) {
+ element.parent = itemInner;
+ element.cityName = cityName;
+ element.isDay = !isNight;
+ element.lowTemperature = lower;
+ element.highTemperature = upper;
+ element.currentTemperature = current;
+ }
+ }
+ }
+ }
+
+ ListView {
+ id: list
+ property bool moving: false
+
+ anchors.fill: parent
+ orientation: "Horizontal"
+ currentIndex: window.currentIndex
+
+ onCurrentIndexChanged: {
+ if (!moving && currentItem)
+ currentItem.present();
+ }
+
+ onMovementStarted: {
+ moving = true;
+ }
+
+ onMovementEnded: {
+ moving = false;
+ currentItem.present();
+ }
+
+ model: cityModel
+ delegate: cityDelegate
+
+ snapMode: ListView.SnapOneItem
+ highlightRangeMode: "StrictlyEnforceRange"
+ }
+}
diff --git a/weather-qml/PartlyCloudy.qml b/weather-qml/PartlyCloudy.qml
new file mode 100644
index 0000000..39a01a8
--- /dev/null
+++ b/weather-qml/PartlyCloudy.qml
@@ -0,0 +1,75 @@
+import Qt 4.6
+
+ForecastView {
+ id: root
+
+ SmallCloud {
+ id: cloud3
+ x: scaledX(396)
+ y: scaledY(-800)
+ finalY: scaledY(-446);
+ type: isDay ? "cloud" : "cloud_rain"
+ }
+
+ HungItem {
+ id: sun
+ x: isDay ? scaledX(120) : scaledX(220)
+ y: scaledY(-800)
+ itemX: 0
+ itemY: isDay ? 200 : 180
+ height: isDay ? 500 : 440
+ finalY: isDay ? scaledY(-198) : scaledY(-205)
+ itemImage: isDay ? "images/sun.png" : "images/moon.png"
+ lineImage: isDay ? "images/sun_line.png" : "images/moon_line.png"
+ }
+
+ MediumCloud {
+ id: cloud2
+ x: scaledX(0)
+ y: scaledY(-800)
+ finalY: scaledY(-307)
+ type: isDay ? "cloud" : "cloud_rain"
+ }
+
+ LargeCloud {
+ id: cloud1
+ x: scaledX(267)
+ y: scaledY(-800)
+ finalY: scaledY(-291)
+ type: isDay ? "cloud" : "cloud_rain"
+ }
+
+ states : State {
+ name: "final"
+ PropertyChanges { target: sun; y: sun.finalY; }
+ PropertyChanges { target: cloud1; y: cloud1.finalY; }
+ PropertyChanges { target: cloud2; y: cloud2.finalY; }
+ PropertyChanges { target: cloud3; y: cloud3.finalY; }
+ }
+
+ transitions: Transition {
+ SequentialAnimation {
+ ParallelAnimation {
+ NumberAnimation { target: cloud1; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 200 }
+ NumberAnimation { target: cloud2; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 400 }
+ NumberAnimation { target: cloud3; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+ }
+
+ NumberAnimation { target: sun; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+ }
+
+ onPresent: { root.state = "final"; }
+}
diff --git a/weather-qml/README.rtf b/weather-qml/README.rtf
new file mode 100644
index 0000000..2819044
--- /dev/null
+++ b/weather-qml/README.rtf
@@ -0,0 +1,7 @@
+{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\paperw11900\paperh16840\margl1440\margr1440\vieww9000\viewh8400\viewkind0
+\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
+
+\f0\fs24 \cf0 Just need to run the "default.qml" file.} \ No newline at end of file
diff --git a/weather-qml/Rain.qml b/weather-qml/Rain.qml
new file mode 100644
index 0000000..1774b2b
--- /dev/null
+++ b/weather-qml/Rain.qml
@@ -0,0 +1,119 @@
+import Qt 4.6
+
+ForecastView {
+ id: root
+ isClear: false
+
+ SmallCloud {
+ id: cloud5
+ x: scaledX(300)
+ y: scaledY(-800)
+ finalY: scaledY(-469);
+ type: "cloud_rain"
+ }
+
+ HungItem {
+ id: sun
+ x: isDay ? scaledX(198) : scaledX(220)
+ y: scaledY(-800)
+ itemX: 0
+ itemY: isDay ? 176 : 180
+ height: isDay ? 460 : 440
+ finalY: isDay ? scaledY(-255) : scaledY(-205)
+ itemImage: isDay ? "images/cold_sun.png" : "images/moon.png"
+ lineImage: isDay ? "images/cold_sun_line.png" : "images/moon_line.png"
+ }
+
+ MediumCloud {
+ id: cloud4
+ x: scaledX(100)
+ y: scaledY(-800)
+ finalY: scaledY(-356)
+ type: "cloud_rain"
+ }
+
+ MediumCloud {
+ id: cloud3
+ x: scaledX(340)
+ y: scaledY(-800)
+ finalY: scaledY(-339)
+ type: "cloud_rain"
+ }
+
+ RainItem {
+ id: rain
+ x: scaledX(70)
+ y: scaledY(376)
+ visible: false
+ rainType: "rain"
+ }
+
+ LargeCloud {
+ id: cloud2
+ x: scaledX(186)
+ y: scaledY(-800)
+ finalY: scaledY(-319)
+ type: "cloud_rain"
+ }
+
+ LargeCloud {
+ id: cloud1
+ x: scaledX(-62)
+ y: scaledY(-800)
+ finalY: scaledY(-289)
+ type: "cloud_rain"
+ }
+
+ states : State {
+ name: "final"
+ PropertyChanges { target: sun; y: sun.finalY; }
+ PropertyChanges { target: cloud1; y: cloud1.finalY; }
+ PropertyChanges { target: cloud2; y: cloud2.finalY; }
+ PropertyChanges { target: cloud3; y: cloud3.finalY; }
+ PropertyChanges { target: cloud4; y: cloud4.finalY; }
+ PropertyChanges { target: cloud5; y: cloud5.finalY; }
+ PropertyChanges { target: rain; visible: true; }
+ }
+
+ transitions: Transition {
+ SequentialAnimation {
+ ParallelAnimation {
+ NumberAnimation { target: cloud1; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 200 }
+ NumberAnimation { target: cloud2; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 400 }
+ NumberAnimation { target: cloud3; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 600 }
+ NumberAnimation { target: cloud4; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 800 }
+ NumberAnimation { target: cloud5; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+ }
+
+ NumberAnimation { target: sun; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+
+ PauseAnimation { duration: 100 }
+
+ NumberAnimation { target: rain; properties: "visible"; duration: 0 }
+ }
+ }
+
+ onPresent: { root.state = "final"; }
+}
diff --git a/weather-qml/RainItem.qml b/weather-qml/RainItem.qml
new file mode 100644
index 0000000..47d9e6f
--- /dev/null
+++ b/weather-qml/RainItem.qml
@@ -0,0 +1,15 @@
+import Qt 4.6
+
+Image {
+ id: rainItem
+ property int frame : 1;
+ property string rainType: "rain";
+
+ source: "images/" + rainType + "_0" + rainItem.frame + ".png"
+
+ frame: NumberAnimation {
+ repeat: true
+ duration: 1100
+ from: 1; to: 5;
+ }
+}
diff --git a/weather-qml/ScrollBar.qml b/weather-qml/ScrollBar.qml
new file mode 100644
index 0000000..2361c32
--- /dev/null
+++ b/weather-qml/ScrollBar.qml
@@ -0,0 +1,27 @@
+import Qt 4.6
+
+Item {
+ id: scrollBar
+
+ property real position
+ property real pageSize
+
+ Rectangle {
+ id: background
+ anchors.fill: parent
+ opacity: 0.3
+ color: "white"
+ radius: (width / 2 - 1)
+ }
+
+ Rectangle {
+ opacity: 0.7
+ color: "black"
+ radius: (width / 2 - 1)
+ x: 1
+ y: Math.min(Math.max(0.0, scrollBar.position),
+ Math.max(0.0, 1.0 - scrollBar.pageSize)) * (scrollBar.height - 2) + 1
+ width: parent.width - 2
+ height: Math.min(1.0, scrollBar.pageSize) * (scrollBar.height - 2)
+ }
+}
diff --git a/weather-qml/SmallCloud.qml b/weather-qml/SmallCloud.qml
new file mode 100644
index 0000000..38db715
--- /dev/null
+++ b/weather-qml/SmallCloud.qml
@@ -0,0 +1,11 @@
+import Qt 4.6
+
+HungItem {
+ id: root
+ itemX: 10;
+ itemY: 492;
+
+ property string type: "cloud";
+ itemImage: "images/" + root.type + "_3.png"
+ lineImage: "images/" + root.type + "_3_line.png"
+}
diff --git a/weather-qml/SplashScreen.qml b/weather-qml/SplashScreen.qml
new file mode 100644
index 0000000..bee13c8
--- /dev/null
+++ b/weather-qml/SplashScreen.qml
@@ -0,0 +1,53 @@
+import Qt 4.6
+
+Item {
+ id: splash
+
+ Image {
+ id: bg
+ source: "images/bg_loading.png"
+ anchors.fill: parent
+ }
+
+ Image {
+ id: bottomMenu
+ source: "images/city_name_background_bigger.png"
+ anchors.bottom: bottomBar.top
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Throbber {
+ id: "progress"
+ anchors.topMargin: 10
+ anchors.top: infoLabel.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Text {
+ id: infoLabel
+ text: "Loading"
+ color: "white"
+ font.family: "Nokia Sans"
+ font.pixelSize: 22
+ anchors.top: parent.top
+ anchors.topMargin: parent.height * 0.3
+ anchors.horizontalCenter: parent.horizontalCenter
+ verticalAlignment: "AlignVCenter"
+ horizontalAlignment: "AlignHCenter"
+ }
+
+ Image {
+ id: umbrella
+ source: "images/umbrella.png"
+ anchors.bottom: bottomBar.top
+ anchors.bottomMargin: 20
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Image {
+ id: bottomBar
+ source: "images/bg_bottom_options.png"
+ anchors.bottom: parent.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+}
diff --git a/weather-qml/Storm.qml b/weather-qml/Storm.qml
new file mode 100644
index 0000000..d92de47
--- /dev/null
+++ b/weather-qml/Storm.qml
@@ -0,0 +1,119 @@
+import Qt 4.6
+
+ForecastView {
+ id: root
+ isClear: false
+
+ SmallCloud {
+ id: cloud5
+ x: scaledX(280)
+ y: scaledY(-800)
+ finalY: scaledY(-480)
+ type: "cloud_storm"
+ }
+
+ SmallCloud {
+ id: cloud4
+ x: scaledX(36)
+ y: scaledY(-800)
+ finalY: scaledY(-494)
+ type: "cloud_storm"
+ }
+
+ HungItem {
+ id: sun
+ x: isDay ? scaledX(198) : scaledX(220)
+ y: scaledY(-800)
+ itemX: 0
+ itemY: isDay ? 176 : 180
+ height: isDay ? 460 : 440
+ finalY: isDay ? scaledY(-255) : scaledY(-205)
+ itemImage: isDay ? "images/cold_sun.png" : "images/moon.png"
+ lineImage: isDay ? "images/cold_sun_line.png" : "images/moon_line.png"
+ }
+
+ MediumCloud {
+ id: cloud2
+ x: scaledX(340)
+ y: scaledY(-800)
+ finalY: scaledY(-350)
+ type: "cloud_storm"
+ }
+
+ LargeCloud {
+ id: cloud3
+ x: scaledX(-30)
+ y: scaledY(-800)
+ finalY: scaledY(-345)
+ type: "cloud_storm"
+ }
+
+ RainItem {
+ id: rain
+ x: scaledX(70)
+ y: scaledY(376)
+ visible: false
+ rainType: "storm"
+ }
+
+ LargeCloud {
+ id: cloud1
+ x: scaledX(202)
+ y: scaledY(-800)
+ finalY: scaledY(-310)
+ type: "cloud_storm"
+ }
+
+ states : State {
+ name: "final"
+ PropertyChanges { target: sun; y: sun.finalY; }
+ PropertyChanges { target: cloud1; y: cloud1.finalY; }
+ PropertyChanges { target: cloud2; y: cloud2.finalY; }
+ PropertyChanges { target: cloud3; y: cloud3.finalY; }
+ PropertyChanges { target: cloud4; y: cloud4.finalY; }
+ PropertyChanges { target: cloud5; y: cloud5.finalY; }
+ PropertyChanges { target: rain; visible: true; }
+ }
+
+ transitions: Transition {
+ SequentialAnimation {
+ ParallelAnimation {
+ NumberAnimation { target: cloud1; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 200 }
+ NumberAnimation { target: cloud3; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 400 }
+ NumberAnimation { target: cloud2; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 600 }
+ NumberAnimation { target: cloud4; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 800 }
+ NumberAnimation { target: cloud5; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+ }
+
+ NumberAnimation { target: sun; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+
+ PauseAnimation { duration: 100 }
+
+ NumberAnimation { target: rain; properties: "visible"; duration: 0 }
+ }
+ }
+
+ onPresent: { root.state = "final"; }
+}
diff --git a/weather-qml/Sunny.qml b/weather-qml/Sunny.qml
new file mode 100644
index 0000000..046ba6d
--- /dev/null
+++ b/weather-qml/Sunny.qml
@@ -0,0 +1,31 @@
+import Qt 4.6
+
+ForecastView {
+ id: root
+
+ HungItem {
+ id: sun
+ x: isDay ? scaledX(120) : scaledX(220)
+ y: scaledY(-800)
+ itemX: 0
+ itemY: isDay ? 200 : 180
+ height: isDay ? 500 : 440
+ finalY: isDay ? scaledY(-198) : scaledY(-205)
+ itemImage: isDay ? "images/sun.png" : "images/moon.png"
+ lineImage: isDay ? "images/sun_line.png" : "images/moon_line.png"
+ }
+
+ states : State {
+ name: "final"
+ PropertyChanges { target: sun; y: sun.finalY; }
+ }
+
+ transitions : Transition {
+ SequentialAnimation {
+ NumberAnimation { target: sun; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+ }
+
+ onPresent: root.state = "final"
+}
diff --git a/weather-qml/Throbber.qml b/weather-qml/Throbber.qml
new file mode 100644
index 0000000..8174c1d
--- /dev/null
+++ b/weather-qml/Throbber.qml
@@ -0,0 +1,14 @@
+import Qt 4.6
+
+Image {
+ id: throbber
+ property int frame : 1;
+
+ source: "images/loading_" + throbber.frame + ".png"
+
+ frame: NumberAnimation {
+ repeat: true
+ duration: 700
+ from: 1; to: 25;
+ }
+}
diff --git a/weather-qml/Thunderstorm.qml b/weather-qml/Thunderstorm.qml
new file mode 100644
index 0000000..094c23c
--- /dev/null
+++ b/weather-qml/Thunderstorm.qml
@@ -0,0 +1,119 @@
+import Qt 4.6
+
+ForecastView {
+ id: root
+ isClear: false
+
+ SmallCloud {
+ id: cloud5
+ x: scaledX(56)
+ y: scaledY(-800)
+ finalY: scaledY(-481)
+ type: "cloud_storm"
+ }
+
+ MediumCloud {
+ id: cloud4
+ x: scaledX(275)
+ y: scaledY(-800)
+ finalY: scaledY(-359)
+ type: "cloud_storm"
+ }
+
+ HungItem {
+ id: sun
+ x: isDay ? scaledX(198) : scaledX(220)
+ y: scaledY(-800)
+ itemX: 0
+ itemY: isDay ? 176 : 180
+ height: isDay ? 460 : 440
+ finalY: isDay ? scaledY(-255) : scaledY(-205)
+ itemImage: isDay ? "images/cold_sun.png" : "images/moon.png"
+ lineImage: isDay ? "images/cold_sun_line.png" : "images/moon_line.png"
+ }
+
+ MediumCloud {
+ id: cloud2
+ x: scaledX(115)
+ y: scaledY(-800)
+ finalY: scaledY(-350)
+ type: "cloud_tstorm"
+ }
+
+ LargeCloud {
+ id: cloud3
+ x: scaledX(-12)
+ y: scaledY(-800)
+ finalY: scaledY(-323)
+ type: "cloud_storm"
+ }
+
+ RainItem {
+ id: rain
+ x: scaledX(70)
+ y: scaledY(376)
+ visible: false
+ rainType: "storm"
+ }
+
+ LargeCloud {
+ id: cloud1
+ x: scaledX(249)
+ y: scaledY(-850)
+ finalY: scaledY(-310)
+ type: "cloud_tstorm"
+ }
+
+ states : State {
+ name: "final"
+ PropertyChanges { target: sun; y: sun.finalY; }
+ PropertyChanges { target: cloud1; y: cloud1.finalY; }
+ PropertyChanges { target: cloud2; y: cloud2.finalY; }
+ PropertyChanges { target: cloud3; y: cloud3.finalY; }
+ PropertyChanges { target: cloud4; y: cloud4.finalY; }
+ PropertyChanges { target: cloud5; y: cloud5.finalY; }
+ PropertyChanges { target: rain; visible: true; }
+ }
+
+ transitions: Transition {
+ SequentialAnimation {
+ ParallelAnimation {
+ NumberAnimation { target: cloud1; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 200 }
+ NumberAnimation { target: cloud3; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 400 }
+ NumberAnimation { target: cloud2; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 600 }
+ NumberAnimation { target: cloud4; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ SequentialAnimation {
+ PauseAnimation { duration: 800 }
+ NumberAnimation { target: cloud5; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+ }
+
+ NumberAnimation { target: sun; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+
+ PauseAnimation { duration: 100 }
+
+ NumberAnimation { target: rain; properties: "visible"; duration: 0 }
+ }
+ }
+
+ onPresent: { root.state = "final"; }
+}
diff --git a/weather-qml/UnknownForecast.qml b/weather-qml/UnknownForecast.qml
new file mode 100644
index 0000000..4f86cbe
--- /dev/null
+++ b/weather-qml/UnknownForecast.qml
@@ -0,0 +1,30 @@
+import Qt 4.6
+
+ForecastView {
+ id: root
+ isClear: true
+
+ HungItem {
+ id: question
+ x: scaledX(260)
+ y: scaledY(-800)
+ itemX: 8
+ itemY: 190
+ height: 476
+ finalY: scaledY(-255)
+ itemImage: "images/na_icon.png"
+ lineImage: "images/na_icon_line.png"
+ }
+
+ states : State {
+ name: "final"
+ PropertyChanges { target: question; y: question.finalY; }
+ }
+
+ transitions: Transition {
+ NumberAnimation { target: question; properties: "y";
+ easing.type: "OutBack"; duration: 500 }
+ }
+
+ onPresent: { root.state = "final"; }
+}
diff --git a/weather-qml/Weather.qmlproject b/weather-qml/Weather.qmlproject
new file mode 100644
index 0000000..3923c0e
--- /dev/null
+++ b/weather-qml/Weather.qmlproject
@@ -0,0 +1,19 @@
+// File generated by QtCreator
+
+import QmlProject 1.0
+
+Project {
+ // Scan current directory and subdirectories for .qml, .js, and image files
+ QmlFiles {
+ directory: "."
+ recursive: true
+ }
+ JavaScriptFiles {
+ directory: "."
+ recursive: true
+ }
+ ImageFiles {
+ directory: "."
+ recursive: true
+ }
+}
diff --git a/weather-qml/default.qml b/weather-qml/default.qml
new file mode 100644
index 0000000..64c4ce7
--- /dev/null
+++ b/weather-qml/default.qml
@@ -0,0 +1,73 @@
+import Qt 4.6
+
+Rectangle {
+ id: window
+ width: 360
+ height: 640
+ color: "black"
+
+ property int currentIndex : -1;
+ property bool splashVisible : true
+ property string weatherSource : ""
+
+ property int verticalOffset: -40
+ property real scaleFactorX: window.width / 480.0
+ property real scaleFactorY: window.height / 864.0
+
+ CityModel {
+ id: cityModel
+ }
+
+ ParallaxView {
+ id: view
+ x: -58
+ width: 432
+ height: window.height
+ }
+
+ CityPanel {
+ id: cityPanel
+ anchors.top: parent.top
+ anchors.bottom: bottomBar.top
+
+ onGotoCity: console.log("todo: goto city")
+ }
+
+ Image {
+ id: bottomBar
+ source: "images/bg_bottom_options.png"
+ anchors.bottom: parent.bottom
+ }
+
+ SplashScreen {
+ id: splash
+ anchors.fill: parent
+ visible: true
+ }
+
+ Timer {
+ interval: 1000
+ repeat: false
+ running: true
+ onTriggered: splash.visible = false;
+ }
+
+ Text {
+ id: exitLabel
+ text: "Exit"
+ color: "white"
+ font.family: "Nokia Sans"
+ font.pixelSize: 22
+
+ anchors.fill: bottomBar
+ anchors.rightMargin: 15
+ anchors.leftMargin: window.width / 2
+ verticalAlignment: "AlignVCenter"
+ horizontalAlignment: "AlignRight"
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: { Qt.quit(); }
+ }
+ }
+}
diff --git a/weather-qml/images/bg_bottom_options.png b/weather-qml/images/bg_bottom_options.png
new file mode 100644
index 0000000..10a2877
--- /dev/null
+++ b/weather-qml/images/bg_bottom_options.png
Binary files differ
diff --git a/weather-qml/images/bg_day_clear.png b/weather-qml/images/bg_day_clear.png
new file mode 100644
index 0000000..2609bbb
--- /dev/null
+++ b/weather-qml/images/bg_day_clear.png
Binary files differ
diff --git a/weather-qml/images/bg_day_heavyrain.png b/weather-qml/images/bg_day_heavyrain.png
new file mode 100644
index 0000000..6f0f80e
--- /dev/null
+++ b/weather-qml/images/bg_day_heavyrain.png
Binary files differ
diff --git a/weather-qml/images/bg_day_rain.png b/weather-qml/images/bg_day_rain.png
new file mode 100644
index 0000000..f3a578e
--- /dev/null
+++ b/weather-qml/images/bg_day_rain.png
Binary files differ
diff --git a/weather-qml/images/bg_loading.png b/weather-qml/images/bg_loading.png
new file mode 100644
index 0000000..aa9a5f8
--- /dev/null
+++ b/weather-qml/images/bg_loading.png
Binary files differ
diff --git a/weather-qml/images/bg_night_clear.png b/weather-qml/images/bg_night_clear.png
new file mode 100644
index 0000000..bfe23ce
--- /dev/null
+++ b/weather-qml/images/bg_night_clear.png
Binary files differ
diff --git a/weather-qml/images/bg_night_rain.png b/weather-qml/images/bg_night_rain.png
new file mode 100644
index 0000000..db8ffba
--- /dev/null
+++ b/weather-qml/images/bg_night_rain.png
Binary files differ
diff --git a/weather-qml/images/bt_options_bg.png b/weather-qml/images/bt_options_bg.png
new file mode 100644
index 0000000..10a2877
--- /dev/null
+++ b/weather-qml/images/bt_options_bg.png
Binary files differ
diff --git a/weather-qml/images/button_list_delete.png b/weather-qml/images/button_list_delete.png
new file mode 100755
index 0000000..81358e7
--- /dev/null
+++ b/weather-qml/images/button_list_delete.png
Binary files differ
diff --git a/weather-qml/images/centigrades.png b/weather-qml/images/centigrades.png
new file mode 100644
index 0000000..fabfd9f
--- /dev/null
+++ b/weather-qml/images/centigrades.png
Binary files differ
diff --git a/weather-qml/images/city_name_background_bigger.png b/weather-qml/images/city_name_background_bigger.png
new file mode 100644
index 0000000..a5e83d0
--- /dev/null
+++ b/weather-qml/images/city_name_background_bigger.png
Binary files differ
diff --git a/weather-qml/images/city_panel_bg.png b/weather-qml/images/city_panel_bg.png
new file mode 100644
index 0000000..6dde03f
--- /dev/null
+++ b/weather-qml/images/city_panel_bg.png
Binary files differ
diff --git a/weather-qml/images/cloud_1.png b/weather-qml/images/cloud_1.png
new file mode 100644
index 0000000..dfab8e2
--- /dev/null
+++ b/weather-qml/images/cloud_1.png
Binary files differ
diff --git a/weather-qml/images/cloud_1_line.png b/weather-qml/images/cloud_1_line.png
new file mode 100644
index 0000000..8a4b090
--- /dev/null
+++ b/weather-qml/images/cloud_1_line.png
Binary files differ
diff --git a/weather-qml/images/cloud_2.png b/weather-qml/images/cloud_2.png
new file mode 100644
index 0000000..a219b5e
--- /dev/null
+++ b/weather-qml/images/cloud_2.png
Binary files differ
diff --git a/weather-qml/images/cloud_2_line.png b/weather-qml/images/cloud_2_line.png
new file mode 100644
index 0000000..b9b8ca3
--- /dev/null
+++ b/weather-qml/images/cloud_2_line.png
Binary files differ
diff --git a/weather-qml/images/cloud_3.png b/weather-qml/images/cloud_3.png
new file mode 100644
index 0000000..45cde4d
--- /dev/null
+++ b/weather-qml/images/cloud_3.png
Binary files differ
diff --git a/weather-qml/images/cloud_3_line.png b/weather-qml/images/cloud_3_line.png
new file mode 100644
index 0000000..0486741
--- /dev/null
+++ b/weather-qml/images/cloud_3_line.png
Binary files differ
diff --git a/weather-qml/images/cloud_rain_1.png b/weather-qml/images/cloud_rain_1.png
new file mode 100644
index 0000000..063be25
--- /dev/null
+++ b/weather-qml/images/cloud_rain_1.png
Binary files differ
diff --git a/weather-qml/images/cloud_rain_1_line.png b/weather-qml/images/cloud_rain_1_line.png
new file mode 100644
index 0000000..204207b
--- /dev/null
+++ b/weather-qml/images/cloud_rain_1_line.png
Binary files differ
diff --git a/weather-qml/images/cloud_rain_2.png b/weather-qml/images/cloud_rain_2.png
new file mode 100644
index 0000000..fc7a9c3
--- /dev/null
+++ b/weather-qml/images/cloud_rain_2.png
Binary files differ
diff --git a/weather-qml/images/cloud_rain_2_line.png b/weather-qml/images/cloud_rain_2_line.png
new file mode 100644
index 0000000..ddef2d4
--- /dev/null
+++ b/weather-qml/images/cloud_rain_2_line.png
Binary files differ
diff --git a/weather-qml/images/cloud_rain_3.png b/weather-qml/images/cloud_rain_3.png
new file mode 100644
index 0000000..89b64dd
--- /dev/null
+++ b/weather-qml/images/cloud_rain_3.png
Binary files differ
diff --git a/weather-qml/images/cloud_rain_3_line.png b/weather-qml/images/cloud_rain_3_line.png
new file mode 100644
index 0000000..862f631
--- /dev/null
+++ b/weather-qml/images/cloud_rain_3_line.png
Binary files differ
diff --git a/weather-qml/images/cloud_storm_1.png b/weather-qml/images/cloud_storm_1.png
new file mode 100644
index 0000000..77ef7c1
--- /dev/null
+++ b/weather-qml/images/cloud_storm_1.png
Binary files differ
diff --git a/weather-qml/images/cloud_storm_1_line.png b/weather-qml/images/cloud_storm_1_line.png
new file mode 100644
index 0000000..013a082
--- /dev/null
+++ b/weather-qml/images/cloud_storm_1_line.png
Binary files differ
diff --git a/weather-qml/images/cloud_storm_2.png b/weather-qml/images/cloud_storm_2.png
new file mode 100644
index 0000000..1ab2ea6
--- /dev/null
+++ b/weather-qml/images/cloud_storm_2.png
Binary files differ
diff --git a/weather-qml/images/cloud_storm_2_line.png b/weather-qml/images/cloud_storm_2_line.png
new file mode 100644
index 0000000..51b38b1
--- /dev/null
+++ b/weather-qml/images/cloud_storm_2_line.png
Binary files differ
diff --git a/weather-qml/images/cloud_storm_3.png b/weather-qml/images/cloud_storm_3.png
new file mode 100644
index 0000000..e896b01
--- /dev/null
+++ b/weather-qml/images/cloud_storm_3.png
Binary files differ
diff --git a/weather-qml/images/cloud_storm_3_line.png b/weather-qml/images/cloud_storm_3_line.png
new file mode 100644
index 0000000..ad52b91
--- /dev/null
+++ b/weather-qml/images/cloud_storm_3_line.png
Binary files differ
diff --git a/weather-qml/images/cloud_tstorm_1.png b/weather-qml/images/cloud_tstorm_1.png
new file mode 100644
index 0000000..784a4be
--- /dev/null
+++ b/weather-qml/images/cloud_tstorm_1.png
Binary files differ
diff --git a/weather-qml/images/cloud_tstorm_1_line.png b/weather-qml/images/cloud_tstorm_1_line.png
new file mode 100644
index 0000000..013a082
--- /dev/null
+++ b/weather-qml/images/cloud_tstorm_1_line.png
Binary files differ
diff --git a/weather-qml/images/cloud_tstorm_2.png b/weather-qml/images/cloud_tstorm_2.png
new file mode 100644
index 0000000..130c3cd
--- /dev/null
+++ b/weather-qml/images/cloud_tstorm_2.png
Binary files differ
diff --git a/weather-qml/images/cloud_tstorm_2_line.png b/weather-qml/images/cloud_tstorm_2_line.png
new file mode 100644
index 0000000..51b38b1
--- /dev/null
+++ b/weather-qml/images/cloud_tstorm_2_line.png
Binary files differ
diff --git a/weather-qml/images/cold_sun.png b/weather-qml/images/cold_sun.png
new file mode 100644
index 0000000..deefdef
--- /dev/null
+++ b/weather-qml/images/cold_sun.png
Binary files differ
diff --git a/weather-qml/images/cold_sun_line.png b/weather-qml/images/cold_sun_line.png
new file mode 100644
index 0000000..f51062b
--- /dev/null
+++ b/weather-qml/images/cold_sun_line.png
Binary files differ
diff --git a/weather-qml/images/division_line.png b/weather-qml/images/division_line.png
new file mode 100644
index 0000000..896c69c
--- /dev/null
+++ b/weather-qml/images/division_line.png
Binary files differ
diff --git a/weather-qml/images/fog.png b/weather-qml/images/fog.png
new file mode 100644
index 0000000..6066207
--- /dev/null
+++ b/weather-qml/images/fog.png
Binary files differ
diff --git a/weather-qml/images/haze.png b/weather-qml/images/haze.png
new file mode 100644
index 0000000..58c1532
--- /dev/null
+++ b/weather-qml/images/haze.png
Binary files differ
diff --git a/weather-qml/images/icon_max.png b/weather-qml/images/icon_max.png
new file mode 100644
index 0000000..e6910d1
--- /dev/null
+++ b/weather-qml/images/icon_max.png
Binary files differ
diff --git a/weather-qml/images/icon_min.png b/weather-qml/images/icon_min.png
new file mode 100644
index 0000000..04f2819
--- /dev/null
+++ b/weather-qml/images/icon_min.png
Binary files differ
diff --git a/weather-qml/images/list_item_bg.png b/weather-qml/images/list_item_bg.png
new file mode 100644
index 0000000..4b61700
--- /dev/null
+++ b/weather-qml/images/list_item_bg.png
Binary files differ
diff --git a/weather-qml/images/list_item_pressed_bg.png b/weather-qml/images/list_item_pressed_bg.png
new file mode 100644
index 0000000..2941e00
--- /dev/null
+++ b/weather-qml/images/list_item_pressed_bg.png
Binary files differ
diff --git a/weather-qml/images/list_item_selected_bg.png b/weather-qml/images/list_item_selected_bg.png
new file mode 100644
index 0000000..aa4ffb9
--- /dev/null
+++ b/weather-qml/images/list_item_selected_bg.png
Binary files differ
diff --git a/weather-qml/images/list_top.png b/weather-qml/images/list_top.png
new file mode 100644
index 0000000..b943e0b
--- /dev/null
+++ b/weather-qml/images/list_top.png
Binary files differ
diff --git a/weather-qml/images/loading_1.png b/weather-qml/images/loading_1.png
new file mode 100644
index 0000000..c06c275
--- /dev/null
+++ b/weather-qml/images/loading_1.png
Binary files differ
diff --git a/weather-qml/images/loading_10.png b/weather-qml/images/loading_10.png
new file mode 100644
index 0000000..22d483e
--- /dev/null
+++ b/weather-qml/images/loading_10.png
Binary files differ
diff --git a/weather-qml/images/loading_11.png b/weather-qml/images/loading_11.png
new file mode 100644
index 0000000..3723524
--- /dev/null
+++ b/weather-qml/images/loading_11.png
Binary files differ
diff --git a/weather-qml/images/loading_12.png b/weather-qml/images/loading_12.png
new file mode 100644
index 0000000..bc8cb15
--- /dev/null
+++ b/weather-qml/images/loading_12.png
Binary files differ
diff --git a/weather-qml/images/loading_13.png b/weather-qml/images/loading_13.png
new file mode 100644
index 0000000..6b0999a
--- /dev/null
+++ b/weather-qml/images/loading_13.png
Binary files differ
diff --git a/weather-qml/images/loading_14.png b/weather-qml/images/loading_14.png
new file mode 100644
index 0000000..b93671d
--- /dev/null
+++ b/weather-qml/images/loading_14.png
Binary files differ
diff --git a/weather-qml/images/loading_15.png b/weather-qml/images/loading_15.png
new file mode 100644
index 0000000..5e6cf81
--- /dev/null
+++ b/weather-qml/images/loading_15.png
Binary files differ
diff --git a/weather-qml/images/loading_16.png b/weather-qml/images/loading_16.png
new file mode 100644
index 0000000..5bb7fce
--- /dev/null
+++ b/weather-qml/images/loading_16.png
Binary files differ
diff --git a/weather-qml/images/loading_17.png b/weather-qml/images/loading_17.png
new file mode 100644
index 0000000..5cdf620
--- /dev/null
+++ b/weather-qml/images/loading_17.png
Binary files differ
diff --git a/weather-qml/images/loading_18.png b/weather-qml/images/loading_18.png
new file mode 100644
index 0000000..c0fe963
--- /dev/null
+++ b/weather-qml/images/loading_18.png
Binary files differ
diff --git a/weather-qml/images/loading_19.png b/weather-qml/images/loading_19.png
new file mode 100644
index 0000000..2ba879b
--- /dev/null
+++ b/weather-qml/images/loading_19.png
Binary files differ
diff --git a/weather-qml/images/loading_2.png b/weather-qml/images/loading_2.png
new file mode 100644
index 0000000..d8f06e1
--- /dev/null
+++ b/weather-qml/images/loading_2.png
Binary files differ
diff --git a/weather-qml/images/loading_20.png b/weather-qml/images/loading_20.png
new file mode 100644
index 0000000..d1b665b
--- /dev/null
+++ b/weather-qml/images/loading_20.png
Binary files differ
diff --git a/weather-qml/images/loading_21.png b/weather-qml/images/loading_21.png
new file mode 100644
index 0000000..5d8f865
--- /dev/null
+++ b/weather-qml/images/loading_21.png
Binary files differ
diff --git a/weather-qml/images/loading_22.png b/weather-qml/images/loading_22.png
new file mode 100644
index 0000000..ab23e6d
--- /dev/null
+++ b/weather-qml/images/loading_22.png
Binary files differ
diff --git a/weather-qml/images/loading_23.png b/weather-qml/images/loading_23.png
new file mode 100644
index 0000000..0da026d
--- /dev/null
+++ b/weather-qml/images/loading_23.png
Binary files differ
diff --git a/weather-qml/images/loading_24.png b/weather-qml/images/loading_24.png
new file mode 100644
index 0000000..09a123f
--- /dev/null
+++ b/weather-qml/images/loading_24.png
Binary files differ
diff --git a/weather-qml/images/loading_25.png b/weather-qml/images/loading_25.png
new file mode 100644
index 0000000..9946381
--- /dev/null
+++ b/weather-qml/images/loading_25.png
Binary files differ
diff --git a/weather-qml/images/loading_3.png b/weather-qml/images/loading_3.png
new file mode 100644
index 0000000..55bb39e
--- /dev/null
+++ b/weather-qml/images/loading_3.png
Binary files differ
diff --git a/weather-qml/images/loading_4.png b/weather-qml/images/loading_4.png
new file mode 100644
index 0000000..6036e50
--- /dev/null
+++ b/weather-qml/images/loading_4.png
Binary files differ
diff --git a/weather-qml/images/loading_5.png b/weather-qml/images/loading_5.png
new file mode 100644
index 0000000..28e1994
--- /dev/null
+++ b/weather-qml/images/loading_5.png
Binary files differ
diff --git a/weather-qml/images/loading_6.png b/weather-qml/images/loading_6.png
new file mode 100644
index 0000000..18cf24c
--- /dev/null
+++ b/weather-qml/images/loading_6.png
Binary files differ
diff --git a/weather-qml/images/loading_7.png b/weather-qml/images/loading_7.png
new file mode 100644
index 0000000..a43d161
--- /dev/null
+++ b/weather-qml/images/loading_7.png
Binary files differ
diff --git a/weather-qml/images/loading_8.png b/weather-qml/images/loading_8.png
new file mode 100644
index 0000000..99706c2
--- /dev/null
+++ b/weather-qml/images/loading_8.png
Binary files differ
diff --git a/weather-qml/images/loading_9.png b/weather-qml/images/loading_9.png
new file mode 100644
index 0000000..113aa50
--- /dev/null
+++ b/weather-qml/images/loading_9.png
Binary files differ
diff --git a/weather-qml/images/minus_sign.png b/weather-qml/images/minus_sign.png
new file mode 100644
index 0000000..6a9c06a
--- /dev/null
+++ b/weather-qml/images/minus_sign.png
Binary files differ
diff --git a/weather-qml/images/mist_01.png b/weather-qml/images/mist_01.png
new file mode 100644
index 0000000..c3b5d5c
--- /dev/null
+++ b/weather-qml/images/mist_01.png
Binary files differ
diff --git a/weather-qml/images/mist_02.png b/weather-qml/images/mist_02.png
new file mode 100644
index 0000000..63b15d8
--- /dev/null
+++ b/weather-qml/images/mist_02.png
Binary files differ
diff --git a/weather-qml/images/mist_03.png b/weather-qml/images/mist_03.png
new file mode 100644
index 0000000..7e67747
--- /dev/null
+++ b/weather-qml/images/mist_03.png
Binary files differ
diff --git a/weather-qml/images/mist_04.png b/weather-qml/images/mist_04.png
new file mode 100644
index 0000000..42bb6b8
--- /dev/null
+++ b/weather-qml/images/mist_04.png
Binary files differ
diff --git a/weather-qml/images/mist_05.png b/weather-qml/images/mist_05.png
new file mode 100644
index 0000000..636b4a6
--- /dev/null
+++ b/weather-qml/images/mist_05.png
Binary files differ
diff --git a/weather-qml/images/moon.png b/weather-qml/images/moon.png
new file mode 100644
index 0000000..5862179
--- /dev/null
+++ b/weather-qml/images/moon.png
Binary files differ
diff --git a/weather-qml/images/moon_line.png b/weather-qml/images/moon_line.png
new file mode 100644
index 0000000..449cb4a
--- /dev/null
+++ b/weather-qml/images/moon_line.png
Binary files differ
diff --git a/weather-qml/images/na_icon.png b/weather-qml/images/na_icon.png
new file mode 100644
index 0000000..2a7877f
--- /dev/null
+++ b/weather-qml/images/na_icon.png
Binary files differ
diff --git a/weather-qml/images/na_icon_line.png b/weather-qml/images/na_icon_line.png
new file mode 100644
index 0000000..449cb4a
--- /dev/null
+++ b/weather-qml/images/na_icon_line.png
Binary files differ
diff --git a/weather-qml/images/rain_01.png b/weather-qml/images/rain_01.png
new file mode 100644
index 0000000..04ec51a
--- /dev/null
+++ b/weather-qml/images/rain_01.png
Binary files differ
diff --git a/weather-qml/images/rain_02.png b/weather-qml/images/rain_02.png
new file mode 100644
index 0000000..fcc9e7e
--- /dev/null
+++ b/weather-qml/images/rain_02.png
Binary files differ
diff --git a/weather-qml/images/rain_03.png b/weather-qml/images/rain_03.png
new file mode 100644
index 0000000..4ab82aa
--- /dev/null
+++ b/weather-qml/images/rain_03.png
Binary files differ
diff --git a/weather-qml/images/rain_04.png b/weather-qml/images/rain_04.png
new file mode 100644
index 0000000..0cd9506
--- /dev/null
+++ b/weather-qml/images/rain_04.png
Binary files differ
diff --git a/weather-qml/images/rain_05.png b/weather-qml/images/rain_05.png
new file mode 100644
index 0000000..cf59516
--- /dev/null
+++ b/weather-qml/images/rain_05.png
Binary files differ
diff --git a/weather-qml/images/scroll.png b/weather-qml/images/scroll.png
new file mode 100644
index 0000000..8ebce0f
--- /dev/null
+++ b/weather-qml/images/scroll.png
Binary files differ
diff --git a/weather-qml/images/scroll_knob.png b/weather-qml/images/scroll_knob.png
new file mode 100644
index 0000000..379e54a
--- /dev/null
+++ b/weather-qml/images/scroll_knob.png
Binary files differ
diff --git a/weather-qml/images/star_01.png b/weather-qml/images/star_01.png
new file mode 100644
index 0000000..6e60dcc
--- /dev/null
+++ b/weather-qml/images/star_01.png
Binary files differ
diff --git a/weather-qml/images/star_02.png b/weather-qml/images/star_02.png
new file mode 100644
index 0000000..6ca331a
--- /dev/null
+++ b/weather-qml/images/star_02.png
Binary files differ
diff --git a/weather-qml/images/star_03.png b/weather-qml/images/star_03.png
new file mode 100644
index 0000000..f8ebb43
--- /dev/null
+++ b/weather-qml/images/star_03.png
Binary files differ
diff --git a/weather-qml/images/storm_01.png b/weather-qml/images/storm_01.png
new file mode 100644
index 0000000..436df98
--- /dev/null
+++ b/weather-qml/images/storm_01.png
Binary files differ
diff --git a/weather-qml/images/storm_02.png b/weather-qml/images/storm_02.png
new file mode 100644
index 0000000..16da93f
--- /dev/null
+++ b/weather-qml/images/storm_02.png
Binary files differ
diff --git a/weather-qml/images/storm_03.png b/weather-qml/images/storm_03.png
new file mode 100644
index 0000000..7ca4192
--- /dev/null
+++ b/weather-qml/images/storm_03.png
Binary files differ
diff --git a/weather-qml/images/storm_04.png b/weather-qml/images/storm_04.png
new file mode 100644
index 0000000..f2ba7ce
--- /dev/null
+++ b/weather-qml/images/storm_04.png
Binary files differ
diff --git a/weather-qml/images/storm_05.png b/weather-qml/images/storm_05.png
new file mode 100644
index 0000000..c35fd7f
--- /dev/null
+++ b/weather-qml/images/storm_05.png
Binary files differ
diff --git a/weather-qml/images/sun.png b/weather-qml/images/sun.png
new file mode 100644
index 0000000..f99abdf
--- /dev/null
+++ b/weather-qml/images/sun.png
Binary files differ
diff --git a/weather-qml/images/sun_line.png b/weather-qml/images/sun_line.png
new file mode 100644
index 0000000..f963c27
--- /dev/null
+++ b/weather-qml/images/sun_line.png
Binary files differ
diff --git a/weather-qml/images/thunder.png b/weather-qml/images/thunder.png
new file mode 100644
index 0000000..de95d9a
--- /dev/null
+++ b/weather-qml/images/thunder.png
Binary files differ
diff --git a/weather-qml/images/umbrella.png b/weather-qml/images/umbrella.png
new file mode 100644
index 0000000..afc79e4
--- /dev/null
+++ b/weather-qml/images/umbrella.png
Binary files differ