0d60cbdc3cee6e3068efaa9ca58aa84bd7222964
[apps/hvac.git] / app / HVAC.qml
1 /*
2  * Copyright (C) 2016 The Qt Company Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 import QtQuick 2.6
18 import QtQuick.Layouts 1.1
19 import QtQuick.Controls 2.0
20 import AGL.Demo.Controls 1.0
21 import 'api' as API
22
23 ApplicationWindow {
24     id: root
25
26     API.Binding {
27         id: binding
28         url: bindingAddress
29         onFanSpeedChanged: fanSpeedSlider.value = fanSpeed
30     }
31
32     ColumnLayout {
33         anchors.fill: parent
34         anchors.topMargin: width / 10
35         anchors.bottomMargin: width / 10
36         RowLayout {
37             Layout.fillHeight: true
38             Layout.alignment: Qt.AlignHCenter
39             Image {
40                 source: './images/HMI_HVAC_Fan_Icon.svg'
41             }
42             Item {
43                 width: root.width * 0.8
44                 Slider {
45                     id: fanSpeedSlider
46                     anchors.left: parent.left
47                     anchors.right: parent.right
48                     anchors.verticalCenter: parent.verticalCenter
49                     from: 0.0
50                     to: 255.0
51                     stepSize: 1.0
52                     onValueChanged: {
53                         binding.fanSpeed = value
54                     }
55                 }
56                 Label {
57                     anchors.left: fanSpeedSlider.left
58                     anchors.top: fanSpeedSlider.bottom
59                     font.pixelSize: 32
60                     text: 'FAN SPEED'
61                 }
62             }
63         }
64         RowLayout {
65             Layout.fillHeight: true
66             Layout.fillWidth: true
67             Layout.alignment: Layout.Center
68             spacing: 20
69             ColumnLayout {
70                 Layout.fillWidth: true
71                 spacing: 20
72                 SeatHeatButton {
73                     id: leftSeat
74                     side: 'Left'
75                 }
76                 HeatDegree {
77                     onCurrentItemChanged: {
78                         console.log("Left Temp changed",degree)
79                         binding.leftTemperature = degree
80                     }
81                 }
82             }
83             ColumnLayout {
84                 Layout.fillWidth: true
85                 spacing: 20
86                 ToggleButton {
87                     onImage: './images/HMI_HVAC_Active.svg'
88                     offImage: './images/HMI_HVAC_Inactive.svg'
89                     Label {
90                         anchors.centerIn: parent
91                         color: parent.checked ? '#66FF99' : '#848286'
92                         text: 'A/C'
93                         font.pixelSize: parent.height / 3
94                     }
95                     onCheckedChanged: {
96                         console.debug('A/C', checked)
97                     }
98                 }
99                 ToggleButton {
100                     onImage: './images/HMI_HVAC_Active.svg'
101                     offImage: './images/HMI_HVAC_Inactive.svg'
102                     Label {
103                         anchors.centerIn: parent
104                         color: parent.checked ? '#66FF99' : '#848286'
105                         text: 'AUTO'
106                         font.pixelSize: parent.height / 3
107                     }
108                     onCheckedChanged: {
109                         console.debug('AUTO', checked)
110                     }
111                 }
112                 ToggleButton {
113                     onImage: './images/HMI_HVAC_Circulation_Active.svg'
114                     offImage: './images/HMI_HVAC_Circulation_Inactive.svg'
115                     onCheckedChanged: {
116                         console.debug('Circulation', checked)
117                     }
118                 }
119             }
120
121             ColumnLayout {
122                 Layout.fillWidth: true
123                 spacing: 20
124                 SeatHeatButton {
125                     id: rightSeat
126                     side: 'Right'
127                 }
128                 HeatDegree {
129                     onCurrentItemChanged: {
130                         console.log("Right Temp changed",degree)
131                         binding.rightTemperature = degree
132                     }
133                 }
134             }
135         }
136
137         RowLayout {
138             Layout.fillHeight: true
139             Layout.alignment: Qt.AlignHCenter
140             spacing: root.width / 20
141             Repeater {
142                 model: ['AirDown', 'AirUp', 'AirRight', 'Rear', 'Front']
143                 ToggleButton {
144                     onImage: './images/HMI_HVAC_%1_Active.svg'.arg(model.modelData)
145                     offImage: './images/HMI_HVAC_%1_Inactive.svg'.arg(model.modelData)
146                     onCheckedChanged: {
147                         console.debug(model.modelData, checked)
148                     }
149                 }
150             }
151         }
152     }
153 }