1
0
mirror of https://gitlab.com/kelteseth/ScreenPlay.git synced 2024-09-14 22:42:34 +02:00
ScreenPlay/ScreenPlayWeather/qml/TestMain.qml
2023-02-02 15:25:26 +01:00

190 lines
5.6 KiB
QML

import QtQuick
import QtQuick.Layouts
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Controls.Material.impl
import Qt5Compat.GraphicalEffects
import ScreenPlayWeather
Window {
id: root
width: 1600
height: 768
visible: true
title: qsTr("ScreenPlayWeather")
ScreenPlayWeather {
id: weather
city: "Friedrichshafen"
onReady: {
rp.model = weather.days;
// Qt bug https://bugreports.qt.io/browse/QTBUG-105137
test();
}
}
function test() {
}
function mapWeatherCode(code) {
const weather_time = ""; // or "-day", "-night"
const weather_prefix = "wi" + weather_time + "-";
// https://open-meteo.com/en/docs
// WMO Weather interpretation codes (WW)
// to https://erikflowers.github.io/weather-icons/
switch (code) {
case 0:
return weather_prefix + "day-sunny";
case 1:
case 2:
case 3:
return weather_prefix + "cloud";
case 45:
case 48:
return weather_prefix + "day-sunny";
case 51:
case 53:
case 55:
return weather_prefix + "rain-mix";
case 61:
case 63:
case 65:
return weather_prefix + "rain-mix";
case 71:
case 73:
case 75:
return weather_prefix + "snow";
case 77:
return weather_prefix + "snow";
case 80:
case 81:
case 82:
return weather_prefix + "snow";
case 85:
case 86:
return weather_prefix + "snow";
case 95:
return weather_prefix + "thunderstorm";
case 96:
case 99:
return weather_prefix + "storm-showers";
}
}
Rectangle {
anchors.fill: wrapper
color: Material.backgroundColor
Material.elevation: 5
radius: 4
}
Rectangle {
anchors.fill: wrapper
color: Material.backgroundColor
radius: 4
layer.enabled: true
layer.effect: ElevationEffect {
elevation: 4
}
}
ColumnLayout {
id: wrapper
anchors.centerIn: parent
width: implicitWidth + 100
height: implicitHeight + 100
TextField {
Layout.alignment: Qt.AlignCenter
horizontalAlignment: Text.AlignHCenter
onEditingFinished: weather.setCity(text)
text: "Friedrichshafen"
}
Text {
Layout.alignment: Qt.AlignCenter
horizontalAlignment: Text.AlignHCenter
text: "longtitude: " + weather.longtitude + " - latitude: " + weather.latitude + " - elevation: " + weather.elevation + "m - population: " + weather.population
}
RowLayout {
Layout.alignment: Qt.AlignHCenter
Repeater {
id: rp
onModelChanged: print("MODEL CHANGED")
onCountChanged: print(count)
ColumnLayout {
id: cl
spacing: 20
Layout.preferredWidth: 120
TextItem {
text: "Day"
value: day
}
TextItem {
text: "Sunrise"
value: sunrise
}
TextItem {
text: "Sunset"
value: sunset
}
Image {
height: 64
width: height
sourceSize: Qt.size(height, height)
layer {
enabled: true
effect: ColorOverlay {
color: Material.primaryColor
}
}
Layout.alignment: Qt.AlignCenter
horizontalAlignment: Image.AlignHCenter
source: "qrc:/qml/ScreenPlayWeather/assets/icons/" + root.mapWeatherCode(weatherCode) + ".svg"
}
TextItem {
text: "Weather Code"
value: weatherCode
}
TextItem {
text: "Temperature min"
value: temperature_2m_min
}
TextItem {
text: "Temperature max"
value: temperature_2m_max
}
// TextItem {
// text: "Precipitation Sum"
// value: precipitationSum
// }
// TextItem {
// text: "Precipitation Hours"
// value: precipitationHours
// }
}
}
}
}
component TextItem: Column {
property alias value: value.text
property alias text: description.text
Layout.preferredWidth: 120
Text {
id: value
width: 120
font.pointSize: 16
horizontalAlignment: Text.AlignHCenter
color: Material.primaryTextColor
}
Text {
id: description
horizontalAlignment: Text.AlignHCenter
color: Material.secondaryTextColor
width: 120
}
}
}