qtdoc/examples/demos/thermostat/content/StatisticsViewForm.ui.qml

189 lines
5.0 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.
*/
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import Thermostat
import ThermostatCustomControls
Pane {
id: root
leftPadding: 20
rightPadding: 20
bottomPadding: 15
property int currentRoomIndex: 0
required property var roomsList
background: Rectangle {
color: Constants.backgroundColor
}
Column {
id: title
width: parent.width
Label {
id: header
text: qsTr("Statistics")
font: Constants.desktopTitleFont
color: Constants.primaryTextColor
elide: Text.ElideRight
}
RowLayout {
id: label
width: parent.width
Label {
text: qsTr("Overview of your home's temperature and energy usage")
font: Constants.desktopSubtitleFont
color: Constants.accentTextColor
elide: Text.ElideRight
Layout.fillWidth: true
}
CustomComboBox {
id: comboBox
Layout.alignment: Qt.AlignLeft | Qt.AlignTop
model: roomsList
currentIndex: root.currentRoomIndex
onCurrentIndexChanged: root.currentRoomIndex = currentIndex
}
}
}
StatisticsStackView {
id: scrollView
anchors.top: title.bottom
anchors.topMargin: 12
anchors.leftMargin: 28
width: internal.contentWidth
height: internal.contentHeight
isOneColumn: internal.isOneColumn
model: roomsList
currentRoomIndex: root.currentRoomIndex
}
StatisticsSwipeView {
id: swipeView
anchors.top: title.bottom
model: roomsList
width: internal.contentWidth
height: internal.contentHeight
isOneColumn: internal.isOneColumn
currentRoomIndex: root.currentRoomIndex
onCurrentRoomIndexChanged: root.currentRoomIndex = currentRoomIndex
visible: false
}
QtObject {
id: internal
readonly property int contentHeight: root.height - title.height
- root.topPadding - root.bottomPadding
readonly property int contentWidth: root.width - root.rightPadding - root.leftPadding
readonly property bool isOneColumn: contentWidth < 900
}
states: [
State {
name: "desktopLayout"
when: Constants.isBigDesktopLayout || Constants.isSmallDesktopLayout
PropertyChanges {
target: header
font.pixelSize: 48
font.weight: 600
font.family: "Titillium Web"
}
PropertyChanges {
target: label
visible: true
}
PropertyChanges {
target: root
leftPadding: 20
}
PropertyChanges {
target: scrollView
visible: true
}
PropertyChanges {
target: swipeView
visible: false
}
},
State {
name: "mobileLayout"
when: Constants.isMobileLayout
PropertyChanges {
target: header
font.pixelSize: 24
font.weight: 600
font.family: "Titillium Web"
}
PropertyChanges {
target: label
visible: false
}
PropertyChanges {
target: root
leftPadding: 16
rightPadding: 16
}
PropertyChanges {
target: scrollView
visible: false
}
PropertyChanges {
target: swipeView
visible: true
}
},
State {
name: "smallLayout"
when: Constants.isSmallLayout
PropertyChanges {
target: header
visible: false
}
PropertyChanges {
target: label
visible: false
}
PropertyChanges {
target: root
leftPadding: 15
rightPadding: 15
topPadding: 3
}
PropertyChanges {
target: scrollView
visible: false
}
PropertyChanges {
target: swipeView
visible: true
}
}
]
}