aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quickshapes/weatherforecast/MapLabel.qml
blob: 66ba91ecde17cd1ab793c36c89e0d506d00e3487 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

import QtQuick

Rectangle {
    id: mapLabel
    property url iconSource
    property string label
    property int degrees

    radius: 8 * mainWindow.designWindowWidthRatio
    color: Qt.rgba(0, 0, 0, 0.05)
    height: 42 * mainWindow.designWindowHeightRatio
    width: labelText.width + divider.width + labelDegrees.width + iconLoader.width + row.padding * 5

    x: -height / 2
    y: -height / 2

    Row {
        id: row
        anchors.fill: parent
        padding: 8 * mainWindow.designWindowWidthRatio
        spacing: padding

        Text {
            id: labelText
            text: mapLabel.label
            color: "#333"
            font.family: workSansRegular.font.family
            font.pixelSize: 22 * mainWindow.designWindowHeightRatio
            anchors.verticalCenter: parent.verticalCenter
        }

        Rectangle {
            id: divider
            color: "#333"
            width: 2 * mainWindow.designWindowWidthRatio
            antialiasing: true
            height: labelText.implicitHeight
            anchors.verticalCenter: parent.verticalCenter
        }

        Text {
            id: labelDegrees
            text: degrees+"°"
            color: "#333"
            font.family: workSansRegular.font.family
            font.pixelSize: 22 * mainWindow.designWindowHeightRatio
            anchors.verticalCenter: parent.verticalCenter
        }

        Loader {
            id: iconLoader
            source: mapLabel.iconSource

            // TODO: implement PreserveAspectRatio in Shapes
            property real aspectRatio: implicitWidth / implicitHeight
            width: 25 * mainWindow.designWindowWidthRatio
            height: width / aspectRatio

            anchors.verticalCenter: parent.verticalCenter
        }
    }
}