Revision control

Copy as Markdown

// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick.Controls as QQC2
import WearableStyle
Item {
clip: true
function addAlarm() {
alarms.append(
{
"title": qsTr("New alarm"),
"hour": 0,
"minute": 0,
"nextRing": qsTr("Thursday 20. Nov."),
"armed": false
})
}
QQC2.AbstractButton {
id: plusButton
anchors.top: parent.top
anchors.right: parent.right
anchors.topMargin: 5
anchors.leftMargin: 5
width: height
height: 40
onClicked: parent.addAlarm()
Image {
anchors.centerIn: parent
width: 32
height: 32
source: UIStyle.iconPath("plus")
}
}
ListModel {
id: alarms
ListElement {
title: qsTr("Workday morning")
hour: 6
minute: 30
nextRing: qsTr("Thursday 20. Nov.")
armed: false
}
ListElement {
title: qsTr("Weekend morning")
hour: 8
minute: 40
nextRing: qsTr("Saturday 22. Nov.")
armed: false
}
}
property alias alarmList: listview
ListView {
id: listview
anchors.fill: parent
anchors.margins: 15
anchors.topMargin: 40 + 15
spacing: 10
model: alarms
delegate: ListHeaderItem {
id: alarmItem
property alias onSwitch: onSwitch
property alias minuteTumbler: minuteTumbler
property alias hourTumbler: hourTumbler
required property string title
required property string nextRing
required property bool armed
width: parent.width
height: 94
Item {
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
height: 28
Text {
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.margins: 10
text: alarmItem.title
color: UIStyle.titletextColor
font: UIStyle.h3
}
Text {
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.margins: 10
text: alarmItem.nextRing
color: UIStyle.titletextColor
font: UIStyle.p1
}
}
Item {
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.right: parent.right
height: 66
Switch {
id: onSwitch
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.margins: 15
checked: alarmItem.armed
}
QQC2.Tumbler {
id: minuteTumbler
height: parent.height
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: 0
visibleItemCount: 1
model: 60
delegate: Text {
required property int modelData
text: (modelData < 10 ? "0" : "") + modelData
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
leftPadding: 5
font: UIStyle.tumblerFont
color: UIStyle.textColor
}
}
Text {
id: timespacer
anchors.verticalCenter: parent.verticalCenter
anchors.right: minuteTumbler.left
verticalAlignment: Text.AlignVCenter
font: UIStyle.tumblerFont
color: UIStyle.textColor
text: ":"
}
QQC2.Tumbler {
id: hourTumbler
height: parent.height
anchors.verticalCenter: parent.verticalCenter
anchors.right: timespacer.left
visibleItemCount: 1
model: 12
delegate: Text {
required property int modelData
text: (modelData < 10 ? "0" : "") + modelData
horizontalAlignment: Text.AlignRight
verticalAlignment: Text.AlignVCenter
rightPadding: 5
font: UIStyle.tumblerFont
color: UIStyle.textColor
}
}
}
}
}
}