1
0
Fork 0
flightgear/src/GUI/qml/DateTimeEdit.qml
2018-07-19 09:58:43 +01:00

155 lines
4.4 KiB
QML

import QtQuick 2.4
import "."
FocusScope {
id: root
property alias label: label.text
property bool enabled: true
property var value: new Date()
implicitHeight: label.implicitHeight
implicitWidth: label.implicitWidth + Style.margin + editFrame.width
function daysInMonth()
{
var tempDate = new Date(year.value, month.value, 0 /* last day of preceeding month */);
return tempDate.getDate();
}
function updateCurrentDate()
{
root.value = new Date(year.value, month.value - 1, dayOfMonth.value,
hours.value, minutes.value);
}
function setDate(date)
{
year.value = date.getFullYear();
month.value = date.getMonth() + 1;
dayOfMonth.value = date.getDate();
hours.value = date.getHours();
minutes.value = date.getMinutes();
updateCurrentDate();
}
StyledText {
id: label
anchors.left: root.left
anchors.leftMargin: Style.margin
anchors.verticalCenter: parent.verticalCenter
horizontalAlignment: Text.AlignRight
enabled: root.enabled
}
Rectangle {
id: editFrame
radius: Style.roundRadius
border.color: root.focus ? Style.themeColor : Style.minorFrameColor
border.width: 1
height: 30
// height: currentChoiceText.implicitHeight + Style.margin
anchors.left: label.right
anchors.leftMargin: Style.margin
width: editRow.childrenRect.width + Style.roundRadius * 2 + 64
// width of current item, or available space after the label
// width: Math.min(root.width - (label.width + Style.margin),
// currentChoiceText.implicitWidth + (Style.margin * 2) + upDownIcon.width);
anchors.verticalCenter: parent.verticalCenter
Row {
id: editRow
anchors {
left: parent.left
top: parent.top
bottom: parent.bottom
right: parent.right
margins: Style.margin
}
DateTimeValueEdit {
id: year
maxValue: 9999
widthString: "0000"
nextToFocus: month
fieldWidth: 4
anchors.verticalCenter: parent.verticalCenter
onCommit: updateCurrentDate();
}
StyledText {
text: " / "
anchors.verticalCenter: parent.verticalCenter
enabled: root.enabled
}
DateTimeValueEdit {
id: month
minValue: 1
maxValue: 12
widthString: "00"
nextToFocus: dayOfMonth
previousToFocus: year
anchors.verticalCenter: parent.verticalCenter
onCommit: updateCurrentDate();
}
StyledText {
text: " / "
anchors.verticalCenter: parent.verticalCenter
enabled: root.enabled
}
DateTimeValueEdit {
id: dayOfMonth
minValue: 1
maxValue: root.daysInMonth()
widthString: "00"
nextToFocus: hours
previousToFocus: month
anchors.verticalCenter: parent.verticalCenter
onCommit: updateCurrentDate();
}
// spacer here
StyledText {
text: " "
anchors.verticalCenter: parent.verticalCenter
enabled: root.enabled
}
DateTimeValueEdit {
id: hours
minValue: 0
maxValue: 23
widthString: "00"
nextToFocus: minutes
previousToFocus: dayOfMonth
anchors.verticalCenter: parent.verticalCenter
onCommit: updateCurrentDate();
}
StyledText {
text: " : "
anchors.verticalCenter: parent.verticalCenter
enabled: root.enabled
}
DateTimeValueEdit {
id: minutes
minValue: 0
maxValue: 59
widthString: "00"
anchors.verticalCenter: parent.verticalCenter
previousToFocus: hours
onCommit: updateCurrentDate();
}
} // of date elements row
}
}