diff options
Diffstat (limited to 'weather-qml')
129 files changed, 1833 insertions, 0 deletions
diff --git a/weather-qml/.DS_Store b/weather-qml/.DS_Store Binary files differnew file mode 100644 index 0000000..5008ddf --- /dev/null +++ b/weather-qml/.DS_Store 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 Binary files differnew file mode 100644 index 0000000..10a2877 --- /dev/null +++ b/weather-qml/images/bg_bottom_options.png diff --git a/weather-qml/images/bg_day_clear.png b/weather-qml/images/bg_day_clear.png Binary files differnew file mode 100644 index 0000000..2609bbb --- /dev/null +++ b/weather-qml/images/bg_day_clear.png diff --git a/weather-qml/images/bg_day_heavyrain.png b/weather-qml/images/bg_day_heavyrain.png Binary files differnew file mode 100644 index 0000000..6f0f80e --- /dev/null +++ b/weather-qml/images/bg_day_heavyrain.png diff --git a/weather-qml/images/bg_day_rain.png b/weather-qml/images/bg_day_rain.png Binary files differnew file mode 100644 index 0000000..f3a578e --- /dev/null +++ b/weather-qml/images/bg_day_rain.png diff --git a/weather-qml/images/bg_loading.png b/weather-qml/images/bg_loading.png Binary files differnew file mode 100644 index 0000000..aa9a5f8 --- /dev/null +++ b/weather-qml/images/bg_loading.png diff --git a/weather-qml/images/bg_night_clear.png b/weather-qml/images/bg_night_clear.png Binary files differnew file mode 100644 index 0000000..bfe23ce --- /dev/null +++ b/weather-qml/images/bg_night_clear.png diff --git a/weather-qml/images/bg_night_rain.png b/weather-qml/images/bg_night_rain.png Binary files differnew file mode 100644 index 0000000..db8ffba --- /dev/null +++ b/weather-qml/images/bg_night_rain.png diff --git a/weather-qml/images/bt_options_bg.png b/weather-qml/images/bt_options_bg.png Binary files differnew file mode 100644 index 0000000..10a2877 --- /dev/null +++ b/weather-qml/images/bt_options_bg.png diff --git a/weather-qml/images/button_list_delete.png b/weather-qml/images/button_list_delete.png Binary files differnew file mode 100755 index 0000000..81358e7 --- /dev/null +++ b/weather-qml/images/button_list_delete.png diff --git a/weather-qml/images/centigrades.png b/weather-qml/images/centigrades.png Binary files differnew file mode 100644 index 0000000..fabfd9f --- /dev/null +++ b/weather-qml/images/centigrades.png diff --git a/weather-qml/images/city_name_background_bigger.png b/weather-qml/images/city_name_background_bigger.png Binary files differnew file mode 100644 index 0000000..a5e83d0 --- /dev/null +++ b/weather-qml/images/city_name_background_bigger.png diff --git a/weather-qml/images/city_panel_bg.png b/weather-qml/images/city_panel_bg.png Binary files differnew file mode 100644 index 0000000..6dde03f --- /dev/null +++ b/weather-qml/images/city_panel_bg.png diff --git a/weather-qml/images/cloud_1.png b/weather-qml/images/cloud_1.png Binary files differnew file mode 100644 index 0000000..dfab8e2 --- /dev/null +++ b/weather-qml/images/cloud_1.png diff --git a/weather-qml/images/cloud_1_line.png b/weather-qml/images/cloud_1_line.png Binary files differnew file mode 100644 index 0000000..8a4b090 --- /dev/null +++ b/weather-qml/images/cloud_1_line.png diff --git a/weather-qml/images/cloud_2.png b/weather-qml/images/cloud_2.png Binary files differnew file mode 100644 index 0000000..a219b5e --- /dev/null +++ b/weather-qml/images/cloud_2.png diff --git a/weather-qml/images/cloud_2_line.png b/weather-qml/images/cloud_2_line.png Binary files differnew file mode 100644 index 0000000..b9b8ca3 --- /dev/null +++ b/weather-qml/images/cloud_2_line.png diff --git a/weather-qml/images/cloud_3.png b/weather-qml/images/cloud_3.png Binary files differnew file mode 100644 index 0000000..45cde4d --- /dev/null +++ b/weather-qml/images/cloud_3.png diff --git a/weather-qml/images/cloud_3_line.png b/weather-qml/images/cloud_3_line.png Binary files differnew file mode 100644 index 0000000..0486741 --- /dev/null +++ b/weather-qml/images/cloud_3_line.png diff --git a/weather-qml/images/cloud_rain_1.png b/weather-qml/images/cloud_rain_1.png Binary files differnew file mode 100644 index 0000000..063be25 --- /dev/null +++ b/weather-qml/images/cloud_rain_1.png diff --git a/weather-qml/images/cloud_rain_1_line.png b/weather-qml/images/cloud_rain_1_line.png Binary files differnew file mode 100644 index 0000000..204207b --- /dev/null +++ b/weather-qml/images/cloud_rain_1_line.png diff --git a/weather-qml/images/cloud_rain_2.png b/weather-qml/images/cloud_rain_2.png Binary files differnew file mode 100644 index 0000000..fc7a9c3 --- /dev/null +++ b/weather-qml/images/cloud_rain_2.png diff --git a/weather-qml/images/cloud_rain_2_line.png b/weather-qml/images/cloud_rain_2_line.png Binary files differnew file mode 100644 index 0000000..ddef2d4 --- /dev/null +++ b/weather-qml/images/cloud_rain_2_line.png diff --git a/weather-qml/images/cloud_rain_3.png b/weather-qml/images/cloud_rain_3.png Binary files differnew file mode 100644 index 0000000..89b64dd --- /dev/null +++ b/weather-qml/images/cloud_rain_3.png diff --git a/weather-qml/images/cloud_rain_3_line.png b/weather-qml/images/cloud_rain_3_line.png Binary files differnew file mode 100644 index 0000000..862f631 --- /dev/null +++ b/weather-qml/images/cloud_rain_3_line.png diff --git a/weather-qml/images/cloud_storm_1.png b/weather-qml/images/cloud_storm_1.png Binary files differnew file mode 100644 index 0000000..77ef7c1 --- /dev/null +++ b/weather-qml/images/cloud_storm_1.png diff --git a/weather-qml/images/cloud_storm_1_line.png b/weather-qml/images/cloud_storm_1_line.png Binary files differnew file mode 100644 index 0000000..013a082 --- /dev/null +++ b/weather-qml/images/cloud_storm_1_line.png diff --git a/weather-qml/images/cloud_storm_2.png b/weather-qml/images/cloud_storm_2.png Binary files differnew file mode 100644 index 0000000..1ab2ea6 --- /dev/null +++ b/weather-qml/images/cloud_storm_2.png diff --git a/weather-qml/images/cloud_storm_2_line.png b/weather-qml/images/cloud_storm_2_line.png Binary files differnew file mode 100644 index 0000000..51b38b1 --- /dev/null +++ b/weather-qml/images/cloud_storm_2_line.png diff --git a/weather-qml/images/cloud_storm_3.png b/weather-qml/images/cloud_storm_3.png Binary files differnew file mode 100644 index 0000000..e896b01 --- /dev/null +++ b/weather-qml/images/cloud_storm_3.png diff --git a/weather-qml/images/cloud_storm_3_line.png b/weather-qml/images/cloud_storm_3_line.png Binary files differnew file mode 100644 index 0000000..ad52b91 --- /dev/null +++ b/weather-qml/images/cloud_storm_3_line.png diff --git a/weather-qml/images/cloud_tstorm_1.png b/weather-qml/images/cloud_tstorm_1.png Binary files differnew file mode 100644 index 0000000..784a4be --- /dev/null +++ b/weather-qml/images/cloud_tstorm_1.png diff --git a/weather-qml/images/cloud_tstorm_1_line.png b/weather-qml/images/cloud_tstorm_1_line.png Binary files differnew file mode 100644 index 0000000..013a082 --- /dev/null +++ b/weather-qml/images/cloud_tstorm_1_line.png diff --git a/weather-qml/images/cloud_tstorm_2.png b/weather-qml/images/cloud_tstorm_2.png Binary files differnew file mode 100644 index 0000000..130c3cd --- /dev/null +++ b/weather-qml/images/cloud_tstorm_2.png diff --git a/weather-qml/images/cloud_tstorm_2_line.png b/weather-qml/images/cloud_tstorm_2_line.png Binary files differnew file mode 100644 index 0000000..51b38b1 --- /dev/null +++ b/weather-qml/images/cloud_tstorm_2_line.png diff --git a/weather-qml/images/cold_sun.png b/weather-qml/images/cold_sun.png Binary files differnew file mode 100644 index 0000000..deefdef --- /dev/null +++ b/weather-qml/images/cold_sun.png diff --git a/weather-qml/images/cold_sun_line.png b/weather-qml/images/cold_sun_line.png Binary files differnew file mode 100644 index 0000000..f51062b --- /dev/null +++ b/weather-qml/images/cold_sun_line.png diff --git a/weather-qml/images/division_line.png b/weather-qml/images/division_line.png Binary files differnew file mode 100644 index 0000000..896c69c --- /dev/null +++ b/weather-qml/images/division_line.png diff --git a/weather-qml/images/fog.png b/weather-qml/images/fog.png Binary files differnew file mode 100644 index 0000000..6066207 --- /dev/null +++ b/weather-qml/images/fog.png diff --git a/weather-qml/images/haze.png b/weather-qml/images/haze.png Binary files differnew file mode 100644 index 0000000..58c1532 --- /dev/null +++ b/weather-qml/images/haze.png diff --git a/weather-qml/images/icon_max.png b/weather-qml/images/icon_max.png Binary files differnew file mode 100644 index 0000000..e6910d1 --- /dev/null +++ b/weather-qml/images/icon_max.png diff --git a/weather-qml/images/icon_min.png b/weather-qml/images/icon_min.png Binary files differnew file mode 100644 index 0000000..04f2819 --- /dev/null +++ b/weather-qml/images/icon_min.png diff --git a/weather-qml/images/list_item_bg.png b/weather-qml/images/list_item_bg.png Binary files differnew file mode 100644 index 0000000..4b61700 --- /dev/null +++ b/weather-qml/images/list_item_bg.png diff --git a/weather-qml/images/list_item_pressed_bg.png b/weather-qml/images/list_item_pressed_bg.png Binary files differnew file mode 100644 index 0000000..2941e00 --- /dev/null +++ b/weather-qml/images/list_item_pressed_bg.png diff --git a/weather-qml/images/list_item_selected_bg.png b/weather-qml/images/list_item_selected_bg.png Binary files differnew file mode 100644 index 0000000..aa4ffb9 --- /dev/null +++ b/weather-qml/images/list_item_selected_bg.png diff --git a/weather-qml/images/list_top.png b/weather-qml/images/list_top.png Binary files differnew file mode 100644 index 0000000..b943e0b --- /dev/null +++ b/weather-qml/images/list_top.png diff --git a/weather-qml/images/loading_1.png b/weather-qml/images/loading_1.png Binary files differnew file mode 100644 index 0000000..c06c275 --- /dev/null +++ b/weather-qml/images/loading_1.png diff --git a/weather-qml/images/loading_10.png b/weather-qml/images/loading_10.png Binary files differnew file mode 100644 index 0000000..22d483e --- /dev/null +++ b/weather-qml/images/loading_10.png diff --git a/weather-qml/images/loading_11.png b/weather-qml/images/loading_11.png Binary files differnew file mode 100644 index 0000000..3723524 --- /dev/null +++ b/weather-qml/images/loading_11.png diff --git a/weather-qml/images/loading_12.png b/weather-qml/images/loading_12.png Binary files differnew file mode 100644 index 0000000..bc8cb15 --- /dev/null +++ b/weather-qml/images/loading_12.png diff --git a/weather-qml/images/loading_13.png b/weather-qml/images/loading_13.png Binary files differnew file mode 100644 index 0000000..6b0999a --- /dev/null +++ b/weather-qml/images/loading_13.png diff --git a/weather-qml/images/loading_14.png b/weather-qml/images/loading_14.png Binary files differnew file mode 100644 index 0000000..b93671d --- /dev/null +++ b/weather-qml/images/loading_14.png diff --git a/weather-qml/images/loading_15.png b/weather-qml/images/loading_15.png Binary files differnew file mode 100644 index 0000000..5e6cf81 --- /dev/null +++ b/weather-qml/images/loading_15.png diff --git a/weather-qml/images/loading_16.png b/weather-qml/images/loading_16.png Binary files differnew file mode 100644 index 0000000..5bb7fce --- /dev/null +++ b/weather-qml/images/loading_16.png diff --git a/weather-qml/images/loading_17.png b/weather-qml/images/loading_17.png Binary files differnew file mode 100644 index 0000000..5cdf620 --- /dev/null +++ b/weather-qml/images/loading_17.png diff --git a/weather-qml/images/loading_18.png b/weather-qml/images/loading_18.png Binary files differnew file mode 100644 index 0000000..c0fe963 --- /dev/null +++ b/weather-qml/images/loading_18.png diff --git a/weather-qml/images/loading_19.png b/weather-qml/images/loading_19.png Binary files differnew file mode 100644 index 0000000..2ba879b --- /dev/null +++ b/weather-qml/images/loading_19.png diff --git a/weather-qml/images/loading_2.png b/weather-qml/images/loading_2.png Binary files differnew file mode 100644 index 0000000..d8f06e1 --- /dev/null +++ b/weather-qml/images/loading_2.png diff --git a/weather-qml/images/loading_20.png b/weather-qml/images/loading_20.png Binary files differnew file mode 100644 index 0000000..d1b665b --- /dev/null +++ b/weather-qml/images/loading_20.png diff --git a/weather-qml/images/loading_21.png b/weather-qml/images/loading_21.png Binary files differnew file mode 100644 index 0000000..5d8f865 --- /dev/null +++ b/weather-qml/images/loading_21.png diff --git a/weather-qml/images/loading_22.png b/weather-qml/images/loading_22.png Binary files differnew file mode 100644 index 0000000..ab23e6d --- /dev/null +++ b/weather-qml/images/loading_22.png diff --git a/weather-qml/images/loading_23.png b/weather-qml/images/loading_23.png Binary files differnew file mode 100644 index 0000000..0da026d --- /dev/null +++ b/weather-qml/images/loading_23.png diff --git a/weather-qml/images/loading_24.png b/weather-qml/images/loading_24.png Binary files differnew file mode 100644 index 0000000..09a123f --- /dev/null +++ b/weather-qml/images/loading_24.png diff --git a/weather-qml/images/loading_25.png b/weather-qml/images/loading_25.png Binary files differnew file mode 100644 index 0000000..9946381 --- /dev/null +++ b/weather-qml/images/loading_25.png diff --git a/weather-qml/images/loading_3.png b/weather-qml/images/loading_3.png Binary files differnew file mode 100644 index 0000000..55bb39e --- /dev/null +++ b/weather-qml/images/loading_3.png diff --git a/weather-qml/images/loading_4.png b/weather-qml/images/loading_4.png Binary files differnew file mode 100644 index 0000000..6036e50 --- /dev/null +++ b/weather-qml/images/loading_4.png diff --git a/weather-qml/images/loading_5.png b/weather-qml/images/loading_5.png Binary files differnew file mode 100644 index 0000000..28e1994 --- /dev/null +++ b/weather-qml/images/loading_5.png diff --git a/weather-qml/images/loading_6.png b/weather-qml/images/loading_6.png Binary files differnew file mode 100644 index 0000000..18cf24c --- /dev/null +++ b/weather-qml/images/loading_6.png diff --git a/weather-qml/images/loading_7.png b/weather-qml/images/loading_7.png Binary files differnew file mode 100644 index 0000000..a43d161 --- /dev/null +++ b/weather-qml/images/loading_7.png diff --git a/weather-qml/images/loading_8.png b/weather-qml/images/loading_8.png Binary files differnew file mode 100644 index 0000000..99706c2 --- /dev/null +++ b/weather-qml/images/loading_8.png diff --git a/weather-qml/images/loading_9.png b/weather-qml/images/loading_9.png Binary files differnew file mode 100644 index 0000000..113aa50 --- /dev/null +++ b/weather-qml/images/loading_9.png diff --git a/weather-qml/images/minus_sign.png b/weather-qml/images/minus_sign.png Binary files differnew file mode 100644 index 0000000..6a9c06a --- /dev/null +++ b/weather-qml/images/minus_sign.png diff --git a/weather-qml/images/mist_01.png b/weather-qml/images/mist_01.png Binary files differnew file mode 100644 index 0000000..c3b5d5c --- /dev/null +++ b/weather-qml/images/mist_01.png diff --git a/weather-qml/images/mist_02.png b/weather-qml/images/mist_02.png Binary files differnew file mode 100644 index 0000000..63b15d8 --- /dev/null +++ b/weather-qml/images/mist_02.png diff --git a/weather-qml/images/mist_03.png b/weather-qml/images/mist_03.png Binary files differnew file mode 100644 index 0000000..7e67747 --- /dev/null +++ b/weather-qml/images/mist_03.png diff --git a/weather-qml/images/mist_04.png b/weather-qml/images/mist_04.png Binary files differnew file mode 100644 index 0000000..42bb6b8 --- /dev/null +++ b/weather-qml/images/mist_04.png diff --git a/weather-qml/images/mist_05.png b/weather-qml/images/mist_05.png Binary files differnew file mode 100644 index 0000000..636b4a6 --- /dev/null +++ b/weather-qml/images/mist_05.png diff --git a/weather-qml/images/moon.png b/weather-qml/images/moon.png Binary files differnew file mode 100644 index 0000000..5862179 --- /dev/null +++ b/weather-qml/images/moon.png diff --git a/weather-qml/images/moon_line.png b/weather-qml/images/moon_line.png Binary files differnew file mode 100644 index 0000000..449cb4a --- /dev/null +++ b/weather-qml/images/moon_line.png diff --git a/weather-qml/images/na_icon.png b/weather-qml/images/na_icon.png Binary files differnew file mode 100644 index 0000000..2a7877f --- /dev/null +++ b/weather-qml/images/na_icon.png diff --git a/weather-qml/images/na_icon_line.png b/weather-qml/images/na_icon_line.png Binary files differnew file mode 100644 index 0000000..449cb4a --- /dev/null +++ b/weather-qml/images/na_icon_line.png diff --git a/weather-qml/images/rain_01.png b/weather-qml/images/rain_01.png Binary files differnew file mode 100644 index 0000000..04ec51a --- /dev/null +++ b/weather-qml/images/rain_01.png diff --git a/weather-qml/images/rain_02.png b/weather-qml/images/rain_02.png Binary files differnew file mode 100644 index 0000000..fcc9e7e --- /dev/null +++ b/weather-qml/images/rain_02.png diff --git a/weather-qml/images/rain_03.png b/weather-qml/images/rain_03.png Binary files differnew file mode 100644 index 0000000..4ab82aa --- /dev/null +++ b/weather-qml/images/rain_03.png diff --git a/weather-qml/images/rain_04.png b/weather-qml/images/rain_04.png Binary files differnew file mode 100644 index 0000000..0cd9506 --- /dev/null +++ b/weather-qml/images/rain_04.png diff --git a/weather-qml/images/rain_05.png b/weather-qml/images/rain_05.png Binary files differnew file mode 100644 index 0000000..cf59516 --- /dev/null +++ b/weather-qml/images/rain_05.png diff --git a/weather-qml/images/scroll.png b/weather-qml/images/scroll.png Binary files differnew file mode 100644 index 0000000..8ebce0f --- /dev/null +++ b/weather-qml/images/scroll.png diff --git a/weather-qml/images/scroll_knob.png b/weather-qml/images/scroll_knob.png Binary files differnew file mode 100644 index 0000000..379e54a --- /dev/null +++ b/weather-qml/images/scroll_knob.png diff --git a/weather-qml/images/star_01.png b/weather-qml/images/star_01.png Binary files differnew file mode 100644 index 0000000..6e60dcc --- /dev/null +++ b/weather-qml/images/star_01.png diff --git a/weather-qml/images/star_02.png b/weather-qml/images/star_02.png Binary files differnew file mode 100644 index 0000000..6ca331a --- /dev/null +++ b/weather-qml/images/star_02.png diff --git a/weather-qml/images/star_03.png b/weather-qml/images/star_03.png Binary files differnew file mode 100644 index 0000000..f8ebb43 --- /dev/null +++ b/weather-qml/images/star_03.png diff --git a/weather-qml/images/storm_01.png b/weather-qml/images/storm_01.png Binary files differnew file mode 100644 index 0000000..436df98 --- /dev/null +++ b/weather-qml/images/storm_01.png diff --git a/weather-qml/images/storm_02.png b/weather-qml/images/storm_02.png Binary files differnew file mode 100644 index 0000000..16da93f --- /dev/null +++ b/weather-qml/images/storm_02.png diff --git a/weather-qml/images/storm_03.png b/weather-qml/images/storm_03.png Binary files differnew file mode 100644 index 0000000..7ca4192 --- /dev/null +++ b/weather-qml/images/storm_03.png diff --git a/weather-qml/images/storm_04.png b/weather-qml/images/storm_04.png Binary files differnew file mode 100644 index 0000000..f2ba7ce --- /dev/null +++ b/weather-qml/images/storm_04.png diff --git a/weather-qml/images/storm_05.png b/weather-qml/images/storm_05.png Binary files differnew file mode 100644 index 0000000..c35fd7f --- /dev/null +++ b/weather-qml/images/storm_05.png diff --git a/weather-qml/images/sun.png b/weather-qml/images/sun.png Binary files differnew file mode 100644 index 0000000..f99abdf --- /dev/null +++ b/weather-qml/images/sun.png diff --git a/weather-qml/images/sun_line.png b/weather-qml/images/sun_line.png Binary files differnew file mode 100644 index 0000000..f963c27 --- /dev/null +++ b/weather-qml/images/sun_line.png diff --git a/weather-qml/images/thunder.png b/weather-qml/images/thunder.png Binary files differnew file mode 100644 index 0000000..de95d9a --- /dev/null +++ b/weather-qml/images/thunder.png diff --git a/weather-qml/images/umbrella.png b/weather-qml/images/umbrella.png Binary files differnew file mode 100644 index 0000000..afc79e4 --- /dev/null +++ b/weather-qml/images/umbrella.png |