-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHourPicker.qml
73 lines (64 loc) · 2.1 KB
/
HourPicker.qml
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
66
67
68
69
70
71
72
73
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
RowLayout{
spacing: 20
property alias text: label.text
property alias hour: hoursTumbler.currentIndex
property alias minute: hoursTumbler.currentIndex
Label{
id: label
text: qsTr("Start")
font.pixelSize: parent.height/2
horizontalAlignment: "AlignRight"
verticalAlignment: "AlignVCenter"
fontSizeMode: "Fit"
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
}
Rectangle {
id: tumblerbase
width: frame.implicitWidth + 10
height: frame.implicitHeight + 10
function formatText(count, modelData) {
var data = count === 12 ? modelData + 1 : modelData;
return data.toString().length < 2 ? "0" + data : data;
}
FontMetrics {
id: fontMetrics
}
Component {
id: delegateComponent
Label {
text: tumblerbase.formatText(Tumbler.tumbler.count, modelData)
opacity: 1.0 - Math.abs(Tumbler.displacement) / (Tumbler.tumbler.visibleItemCount / 2)
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
font.pixelSize: fontMetrics.font.pixelSize * 1.25
}
}
Frame {
id: frame
padding: 0
property int visibleItemCount: 3
height: (fontMetrics.font.pixelSize * visibleItemCount)*2
Row {
id: row
Tumbler {
id: hoursTumbler
model: 24
delegate: delegateComponent
visibleItemCount: frame.visibleItemCount
height: frame.height
}
Tumbler {
id: minutesTumbler
model: 60
delegate: delegateComponent
visibleItemCount: frame.visibleItemCount
height: frame.height
}
}
}
}
}