Warning, /plasma/plasma-bigscreen/kcms/bigscreen-settings/ui/delegates/DatePicker.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 * SPDX-FileCopyrightText: 2011 Marco Martin <mart@kde.org>
0003 *
0004 * SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006
0007 import QtQuick 2.14
0008 import org.kde.kirigami as Kirigami
0009
0010 Item {
0011 id: root
0012 clip: true
0013 property int day
0014 property int month
0015 property int year
0016
0017 property bool userConfiguring: visible
0018
0019 property int fontSize: 14
0020 property int _margin: Kirigami.Units.gridUnit
0021
0022 opacity: enabled ? 1.0 : 0.5
0023
0024 onVisibleChanged: {
0025 if(visible){
0026 dayDigit.model = getDaysInMonth()
0027 }
0028 }
0029
0030 onFocusChanged: {
0031 if(focus) {
0032 dayDigit.forceActiveFocus()
0033 }
0034 }
0035
0036 function getDaysInMonth() {
0037 // Here January is 1 based
0038 //Day 0 is the last day in the previous month
0039 //return new Date(year, month, 0).getDate();
0040 // Here January is 0 based
0041 var dt = new Date(root.year, root.month+1, 0).getDate()
0042 return dt
0043 }
0044
0045 Rectangle {
0046 color: "transparent"
0047 border.color: Kirigami.Theme.textColor
0048 border.width: 1
0049 anchors.fill: parent
0050 anchors.margins: Kirigami.Units.largeSpacing
0051
0052 Row {
0053 id: clockRow
0054 spacing: 3
0055 anchors.fill: parent
0056 anchors.margins: Kirigami.Units.smallSpacing
0057
0058 property int day
0059 property int month
0060 property int year
0061
0062 function twoDigitString(number)
0063 {
0064 return number < 10 ? "0"+number : number
0065 }
0066
0067 Digit {
0068 id: dayDigit
0069 currentIndex: ((day - 1) < model) ? day-1 : 1
0070 KeyNavigation.right: monthDigit
0071 KeyNavigation.left: backBtnDTItem
0072
0073 onSelectedIndexChanged: {
0074 if (selectedIndex > -1) {
0075 day = selectedIndex+1
0076 }
0077 }
0078 delegate: Text {
0079 horizontalAlignment: Text.AlignHCenter
0080 width: dayDigit.width
0081 property int ownIndex: index
0082 text: clockRow.twoDigitString(index+1)
0083 color: dayDigit.focus && dayDigit.currentIndex == index ? Kirigami.Theme.linkColor : Kirigami.Theme.textColor
0084 font.pointSize: root.fontSize
0085 opacity: PathView.itemOpacity
0086 }
0087 }
0088 Kirigami.Separator {
0089 anchors {
0090 top: parent.top
0091 bottom: parent.bottom
0092 }
0093 }
0094 Digit {
0095 id: monthDigit
0096 model: 12
0097 currentIndex: month -1
0098 KeyNavigation.right: yearDigit
0099 KeyNavigation.left: dayDigit
0100
0101 onSelectedIndexChanged: {
0102 if (selectedIndex > -1) {
0103 month = selectedIndex + 1
0104 }
0105 }
0106 delegate: Text {
0107 horizontalAlignment: Text.AlignHCenter
0108 width: monthDigit.width
0109 property int ownIndex: index
0110 property variant months: Array(i18n("Jan"), i18n("Feb"), i18n("Mar"), i18n("Apr"), i18n("May"), i18n("Jun"), i18n("Jul"), i18n("Aug"), i18n("Sep"), i18n("Oct"), i18n("Nov"), i18n("Dec"))
0111 text: months[index]
0112 font.pointSize: root.fontSize
0113 color: monthDigit.focus && monthDigit.currentIndex == index ? Kirigami.Theme.linkColor : Kirigami.Theme.textColor
0114 opacity: PathView.itemOpacity
0115 }
0116 Text {
0117 id: monthPlaceHolder
0118 visible: false
0119 font.pointSize: root.fontSize
0120 text: "0000"
0121 }
0122 }
0123 Kirigami.Separator {
0124 anchors {
0125 top: parent.top
0126 bottom: parent.bottom
0127 }
0128 }
0129 Digit {
0130 id: yearDigit
0131 //FIXME: yes, this is a tad lame ;)
0132 model: 3000
0133 currentIndex: year
0134 KeyNavigation.left: monthDigit
0135 KeyNavigation.right: backBtnDTItem
0136
0137 onSelectedIndexChanged: {
0138 if (selectedIndex > -1) {
0139 year = selectedIndex
0140 }
0141 }
0142 Text {
0143 id: yearPlaceHolder
0144 visible: false
0145 font.pointSize: root.fontSize
0146 color: yearDigit.focus && yearDigit.currentIndex == index ? Kirigami.Theme.linkColor : Kirigami.Theme.textColor
0147 text: "0000"
0148 }
0149 }
0150 }
0151 }
0152 }