/* * Copyright (C) 2020 Konsulko Group * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import QtQuick 2.2 import QtQuick.Layouts 1.1 import QtQuick.Controls 2.0 Rectangle { id: weather_main width: 1000 height: 1000 radius: 2 color: "black" ColumnLayout { id: weather_col anchors.fill: parent.fill Label { id: weather_title Layout.fillWidth: true Layout.fillHeight: false Layout.topMargin: 20 Layout.leftMargin: 20 Layout.rightMargin: 20 text: weatherTemplate.title color: "white" font.pixelSize: 48 font.bold: true maximumLineCount: 1 wrapMode: Text.Wrap elide: Text.ElideRight horizontalAlignment: Label.AlignLeft verticalAlignment: Label.AlignVCenter } Label { id: weather_subtitle Layout.fillWidth: true Layout.fillHeight: false Layout.topMargin: 0 Layout.leftMargin: 20 Layout.rightMargin: 20 text: weatherTemplate.subtitle visible: weatherTemplate.subtitle != "" color: "white" font.pixelSize: 32 font.bold: false maximumLineCount: 1 wrapMode: Text.Wrap elide: Text.ElideRight horizontalAlignment: Label.AlignLeft verticalAlignment: Label.AlignVCenter } RowLayout { id: weather_row Layout.fillWidth: true Layout.fillHeight: true Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter Layout.topMargin: 200 Layout.leftMargin: 20 Layout.rightMargin: 20 spacing: 0 Image { id: weather_currentWeatherIcon_imageContent Layout.fillWidth: true Layout.fillHeight: true Layout.maximumWidth: (weather_main.width - 3 * parent.spacing) / 3 Layout.preferredWidth: (weather_main.width - 3 * parent.spacing) / 3 Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter source: weatherTemplate.currentWeatherIconSource fillMode: Image.PreserveAspectFit horizontalAlignment: Image.AlignHCenter verticalAlignment: Image.AlignVCenter } Text { id: weather_currentWeather_textContent Layout.fillWidth: true Layout.fillHeight: false Layout.maximumWidth: (weather_main.width - 3 * parent.spacing) / 3 Layout.preferredWidth: (weather_main.width - 3 * parent.spacing) / 3 Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter text: weatherTemplate.currentTemperature color: "white" font.pixelSize: 150 font.bold: false wrapMode: Text.Wrap verticalAlignment: Text.AlignTop horizontalAlignment: Text.AlignHCenter maximumLineCount: 1 } ColumnLayout { id: weather_low_high_col Layout.fillWidth: true Layout.fillHeight: false Layout.maximumWidth: (weather_main.width - 3 * parent.spacing) / 3 Layout.preferredWidth: (weather_main.width - 3 * parent.spacing) / 3 Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter RowLayout { id: weather_high_row Layout.fillWidth: true Layout.fillHeight: true Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter spacing: 20 Image { id: weather_highTempArrow_imageContent Layout.fillWidth: false Layout.fillHeight: false Layout.maximumWidth: (weather_main.width - 3 * parent.spacing) / 6 Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter source: weatherTemplate.highTemperatureArrowSource fillMode: Image.PreserveAspectFit horizontalAlignment: Image.AlignHCenter verticalAlignment: Image.AlignVCenter } Text { id: weather_highTemp_textContent Layout.fillWidth: false Layout.fillHeight: false Layout.maximumWidth: (weather_main.width - 3 * parent.spacing) / 6 Layout.preferredWidth: (weather_main.width - 3 * parent.spacing) / 6 Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter text: weatherTemplate.highTemperature color: "white" font.pixelSize: 60 font.bold: false wrapMode: Text.Wrap verticalAlignment: Text.AlignVCenter horizontalAlignment: Text.AlignLeft maximumLineCount: 1 } } RowLayout { id: weather_low_row Layout.fillWidth: true Layout.fillHeight: true Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter spacing: 20 Image { id: weather_lowTempArrow_imageContent Layout.fillWidth: false Layout.fillHeight: false Layout.maximumWidth: (weather_main.width - 3 * parent.spacing) / 6 Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter source: weatherTemplate.lowTemperatureArrowSource fillMode: Image.PreserveAspectFit horizontalAlignment: Image.AlignHCenter verticalAlignment: Image.AlignVCenter } Text { id: weather_lowTemp_textContent Layout.fillWidth: false Layout.fillHeight: false Layout.maximumWidth: (weather_main.width - 3 * parent.spacing) / 6 Layout.preferredWidth: (weather_main.width - 3 * parent.spacing) / 6 Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter text: weatherTemplate.lowTemperature color: "white" font.pixelSize: 60 font.bold: false wrapMode: Text.Wrap verticalAlignment: Text.AlignVCenter horizontalAlignment: Text.AlignLeft maximumLineCount: 1 } } } } } Button { id: weather_close anchors.bottom: parent.bottom anchors.horizontalCenter: parent.horizontalCenter anchors.bottomMargin: 20 text: "Close" onReleased: { weather_close.highlighted = false clear() hide() } onPressed: { weather_close.highlighted = true } onCanceled: { weather_close.highlighted = false } } // Functions function clear() { weatherTemplate.visible = false weatherTemplate.title = "" weatherTemplate.subtitle = "" weatherTemplate.currentTemperature = "" weatherTemplate.currentWeatherIconSource = "" weatherTemplate.lowTemperature = "" weatherTemplate.lowTemperatureArrowSource = "" weatherTemplate.highTemperature = "" weatherTemplate.highTemperatureArrowSource = "" } }