qtdoc/examples/demos/thermostat/content/TemperatureSetterSmallViewF...

236 lines
7.5 KiB
QML

// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
/*
This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only.
It is supposed to be strictly declarative and only uses a subset of QML. If you edit
this file manually, you might introduce QML code that is not supported by Qt Design Studio.
Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files.
*/
pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Controls.Basic
import QtQuick.Layouts
import QtQuick.Effects
import Thermostat
import ThermostatCustomControls
Pane {
id: root
required property ScheduleViewForm scheduleViewRoot
property alias saveButton: saveButton
property alias cancelButton: cancelButton
width: 400
height: 370
topPadding: 16
bottomPadding: 19
background: Rectangle {
color: Constants.accentColor
radius: 12
}
Frame {
id: frame
height: 200
width: 380
anchors.horizontalCenter: parent.horizontalCenter
ColumnLayout {
anchors.fill: parent
RowLayout {
Layout.preferredWidth: parent.width
Row {
id: row
Layout.alignment: Qt.AlignLeft
Layout.fillWidth: true
spacing: 10
Item {
width: 15
height: 15
anchors.verticalCenter: parent.verticalCenter
Image {
id: icon
source: "images/temperature.svg"
sourceSize.width: 15
sourceSize.height: 15
}
MultiEffect {
anchors.fill: icon
source: icon
colorization: 1
colorizationColor: Constants.iconColor
}
}
Label {
font.pixelSize: 14
font.weight: 600
font.family: "Titillium Web"
text: qsTr("Set Temperature :")
color: Constants.primaryTextColor
}
}
CustomTextField {
id: customTextField
Layout.preferredWidth: 102
Layout.preferredHeight: 40
font.pixelSize: 14
text: slider.value
Connections {
function onAccepted() {
slider.value = +customTextField.text
}
}
}
}
Item {
id: item1
Layout.fillWidth: true
Layout.fillHeight: true
CustomSlider {
id: slider
width: parent.width
value: root.scheduleViewRoot.currentTemp
anchors.bottom: parent.bottom
Connections {
function onValueChanged() {
root.scheduleViewRoot.currentTemp = slider.value
}
}
}
}
ColumnLayout {
spacing: 0
Label {
font.pixelSize: 14
font.weight: 600
font.family: "Titillium Web"
text: qsTr("Mode")
color: Constants.primaryTextColor
}
RowLayout {
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
Layout.fillWidth: true
Layout.leftMargin: 50
spacing: 16
Repeater {
model: [qsTr("Heating"), qsTr("Cooling"), qsTr("Auto")]
CustomRadioButton {
id: radioButton
required property string modelData
required property int index
text: modelData
font.pixelSize: 14
indicatorSize: 14
topPadding: 0
bottomPadding: 0
checked: root.scheduleViewRoot.currentMode === index
Connections {
function onClicked() {
root.scheduleViewRoot.currentMode = radioButton.index
}
}
}
}
}
}
ColumnLayout {
spacing: 0
Label {
font.pixelSize: 14
font.weight: 600
font.family: "Titillium Web"
text: qsTr("Repeat")
color: Constants.primaryTextColor
}
RowLayout {
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
Layout.fillWidth: true
Layout.leftMargin: 50
spacing: 16
Repeater {
id: repeater
model: [qsTr("MO"), qsTr("TU"), qsTr("WE"), qsTr(
"TH"), qsTr("FR"), qsTr("SA"), qsTr("SU")]
Label {
id: weekdayLabel
required property int index
required property string modelData
property bool checked: root.scheduleViewRoot.selectedDays[index]
text: modelData
Layout.fillWidth: true
height: 21
font.pixelSize: 14
horizontalAlignment: Text.AlignHCenter
color: checked ? "#2CDE85" : Constants.primaryTextColor
TapHandler {
property Connections _: Connections {
function onTapped() {
root.scheduleViewRoot.selectedDays[weekdayLabel.index]
= !root.scheduleViewRoot.selectedDays[weekdayLabel.index]
}
}
}
}
}
}
}
}
}
Row {
anchors.top: frame.bottom
anchors.right: frame.right
anchors.topMargin: 16
spacing: 17
CustomRoundButton {
id: cancelButton
width: 78
height: 38
text: qsTr("Cancel")
radius: 8
contentColor: "#2CDE85"
checkable: false
font.pixelSize: 14
display: AbstractButton.TextOnly
}
CustomRoundButton {
id: saveButton
width: 78
height: 38
text: qsTr("Save")
radius: 8
contentColor: "#2CDE85"
checkable: false
font.pixelSize: 14
display: AbstractButton.TextOnly
}
}
}