Warning, /office/klevernotes/src/contents/ui/sharedComponents/ExpendingFormSwitch.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 // SPDX-FileCopyrightText: 2023 Louis Schul <schul9louis@gmail.com>
0003 
0004 /*
0005  * BASED ON FormSwitchDelegate :
0006  * Copyright 2022 Devin Lin <devin@kde.org>
0007  * SPDX-License-Identifier: LGPL-2.0-or-later
0008  */
0009 
0010 import QtQuick 2.15
0011 import QtQuick.Templates 2.15 as T
0012 import QtQuick.Controls 2.15 as Controls
0013 import QtQuick.Layouts 1.15
0014 
0015 import org.kde.kirigami 2.19 as Kirigami
0016 import org.kde.kirigamiaddons.formcard 1.0
0017 
0018 T.SwitchDelegate {
0019     id: root
0020 
0021     default property alias delegates: internalColumn.children
0022     /**
0023      * @brief A label containing secondary text that appears under the
0024      * inherited text property.
0025      *
0026      * This provides additional information shown in a faint gray color.
0027      */
0028     property string description: ""
0029 
0030     /**
0031      * @brief This property holds the padding after the leading item.
0032      */
0033     property real leadingPadding: Kirigami.Units.smallSpacing
0034 
0035     /**
0036      * @brief This property holds the padding before the trailing item.
0037      */
0038     property real trailingPadding: Kirigami.Units.smallSpacing
0039 
0040     /**
0041      * @brief This property allows to override the internal description
0042      * item (a QtQuick.Controls.Label) with a custom component.
0043      */
0044     property alias descriptionItem: internalDescriptionItem
0045 
0046     leftPadding: Kirigami.Units.gridUnit
0047     topPadding: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing
0048     bottomPadding: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing
0049     rightPadding: Kirigami.Units.gridUnit
0050 
0051     implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding
0052     implicitHeight: contentItem.implicitHeight + topPadding + bottomPadding
0053 
0054     focusPolicy: Qt.StrongFocus
0055     hoverEnabled: true
0056     background: FormDelegateBackground { control: root }
0057 
0058     contentItem: ColumnLayout {
0059         spacing: 0
0060         RowLayout {
0061             spacing: 0
0062 
0063             ColumnLayout {
0064                 spacing: Kirigami.Units.smallSpacing
0065                 Layout.fillWidth: true
0066 
0067                 Controls.Label {
0068                     text: root.text
0069                     color: root.enabled ? Kirigami.Theme.textColor : Kirigami.Theme.disabledTextColor
0070                     elide: Text.ElideRight
0071                     wrapMode: Text.Wrap
0072                     maximumLineCount: 2
0073 
0074                     Layout.fillWidth: true
0075                 }
0076 
0077                 Controls.Label {
0078                     id: internalDescriptionItem
0079 
0080                     text: root.description
0081                     color: Kirigami.Theme.disabledTextColor
0082                     visible: root.description !== ""
0083                     wrapMode: Text.Wrap
0084                     textFormat: Text.StyledText // This way we can display a link to the supported Highlighters
0085                     onLinkActivated: function (link) {
0086                         Qt.openUrlExternally(link)
0087                     }
0088 
0089                     Layout.fillWidth: true
0090                 }
0091             }
0092 
0093             Controls.Switch {
0094                 id: switchItem
0095                 focusPolicy: Qt.NoFocus // provided by delegate
0096                 Layout.leftMargin: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing
0097 
0098                 enabled: root.enabled
0099                 checked: root.checked
0100 
0101                 onToggled: root.toggled()
0102                 onClicked: root.clicked()
0103                 onPressAndHold: root.pressAndHold()
0104                 onDoubleClicked: root.doubleClicked()
0105 
0106                 onCheckedChanged: {
0107                     root.checked = checked;
0108                     checked = Qt.binding(() => root.checked);
0109                 }
0110             }
0111         }
0112 
0113         ColumnLayout {
0114             id: internalColumn
0115 
0116             spacing: 0
0117             visible: switchItem.checked
0118 
0119             Layout.topMargin: Kirigami.Units.smallSpacing
0120         }
0121     }
0122 
0123     Layout.fillWidth: true
0124 }