Warning, /libraries/kirigami-addons/src/dateandtime/private/DatePickerDelegate.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-FileCopyrightText: 2023 Carl Schwan <carl@carlschwan.eu>
0002 // SPDX-License-Identifier: LGPL-2.1-or-later
0003 
0004 import QtQuick 2.15
0005 import QtQuick.Templates 2.15 as T
0006 import QtQuick.Layouts 1.15
0007 import org.kde.kirigami 2.20 as Kirigami
0008 import org.kde.kirigamiaddons.delegates 1.0 as Delegates
0009 
0010 Delegates.RoundedItemDelegate {
0011     id: root
0012 
0013     required property int index
0014     required property date date
0015     required property date minimumDate
0016     required property date maximumDate
0017     required property Repeater repeater
0018     required property T.Action previousAction
0019     required property T.Action nextAction
0020 
0021     readonly property bool inScope: (!minimumDate.valueOf() || minimumDate.valueOf() <= date.valueOf())
0022         && (!maximumDate.valueOf() || maximumDate.valueOf() >= date.valueOf())
0023 
0024     leftInset: 0
0025     rightInset: 0
0026     topInset: 0
0027     bottomInset: 0
0028 
0029     focusPolicy: inScope ? Qt.TabFocus : Qt.NoFocus
0030     enabled: inScope
0031 
0032     focus: inScope && (index === 0 || !repeater.itemAt(index - 1).inScope)
0033 
0034     contentItem: Delegates.DefaultContentItem {
0035         itemDelegate: root
0036 
0037         labelItem {
0038             leftPadding: Kirigami.Units.mediumSpacing
0039             rightPadding: Kirigami.Units.mediumSpacing
0040             horizontalAlignment: Text.AlignHCenter
0041         }
0042     }
0043 
0044     Keys.onLeftPressed: if (inScope) {
0045         if (index !== 0) {
0046             const item = repeater.itemAt(index - 1);
0047             if (item.inScope) {
0048                 item.forceActiveFocus();
0049             }
0050         } else {
0051             goPreviousAction.trigger();
0052         }
0053     }
0054 
0055     Keys.onRightPressed: if (inScope) {
0056         if (index !== repeater.count - 1) {
0057             const item = repeater.itemAt(index + 1);
0058             if (item.inScope) {
0059                 item.forceActiveFocus();
0060             }
0061         } else {
0062             goNextAction.trigger();
0063         }
0064     }
0065 
0066     Layout.fillWidth: true
0067     Layout.fillHeight: true
0068 }