Warning, /libraries/kirigami-addons/src/formcard/FormCheckDelegate.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * Copyright 2022 Devin Lin <devin@kde.org> 0003 * SPDX-License-Identifier: LGPL-2.0-or-later 0004 */ 0005 0006 import QtQuick 2.15 0007 import QtQuick.Templates 2.15 as T 0008 import QtQuick.Controls 2.15 as Controls 0009 import QtQuick.Layouts 1.15 0010 0011 import org.kde.kirigami 2.19 as Kirigami 0012 0013 import "private" as Private 0014 0015 /** 0016 * @brief A Form delegate that corresponds to a checkbox. 0017 * 0018 * This component is used for individual settings that can be toggled on, off, or tristate, typically in conjunction with multiple other checkboxes. 0019 * 0020 * Use the inherited QtQuick.Controls.AbstractButton.text property to define the main text of the checkbox. 0021 * 0022 * If you need a purely on/off toggle for a single setting, consider using a FormSwitchDelegate. 0023 * 0024 * If you need multiple toggles for the same setting, use a FormRadioDelegate 0025 * instead. 0026 * 0027 * If you need multiple values for the same setting, use a 0028 * FormComboBoxDelegate instead. 0029 * 0030 * @since KirigamiAddons 0.11.0 0031 * 0032 * @see QtQuick.Controls.AbstractButton 0033 * @see FormSwitchDelegate 0034 * @see FormComboBoxDelegate 0035 * @see FormRadioDelegate 0036 * 0037 * @inherit QtQuick.Controls.CheckDelegate 0038 */ 0039 T.CheckDelegate { 0040 id: root 0041 0042 /** 0043 * @brief A label containing secondary text that appears under the 0044 * inherited text property. 0045 * 0046 * This provides additional information shown in a faint gray color. 0047 */ 0048 property string description: "" 0049 0050 /** 0051 * @brief This property holds an item that will be displayed to the left 0052 * of the delegate's contents. 0053 */ 0054 property var leading: null 0055 0056 /** 0057 * @brief This property holds the padding after the leading item. 0058 */ 0059 property real leadingPadding: Kirigami.Units.smallSpacing 0060 0061 /** 0062 * @brief This property holds an item that will be displayed to the right 0063 * of the delegate's contents. 0064 */ 0065 property var trailing: null 0066 0067 /** 0068 * @brief This property holds the padding before the trailing item. 0069 */ 0070 property real trailingPadding: Kirigami.Units.smallSpacing 0071 0072 /** 0073 * @brief This property allows to override the internal description 0074 * item (a QtQuick.Controls.Label) with a custom component. 0075 */ 0076 property alias descriptionItem: internalDescriptionItem 0077 0078 leftPadding: Kirigami.Units.gridUnit 0079 topPadding: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing 0080 bottomPadding: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing 0081 rightPadding: Kirigami.Units.gridUnit 0082 0083 implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding 0084 implicitHeight: contentItem.implicitHeight + topPadding + bottomPadding 0085 0086 focusPolicy: Qt.StrongFocus 0087 hoverEnabled: true 0088 background: FormDelegateBackground { control: root } 0089 0090 Layout.fillWidth: true 0091 0092 contentItem: RowLayout { 0093 spacing: 0 0094 0095 Private.ContentItemLoader { 0096 Layout.rightMargin: visible ? root.leadingPadding : 0 0097 visible: root.leading 0098 implicitHeight: visible ? root.leading.implicitHeight : 0 0099 implicitWidth: visible ? root.leading.implicitWidth : 0 0100 contentItem: root.leading 0101 } 0102 0103 Controls.CheckBox { 0104 id: checkBoxItem 0105 Layout.rightMargin: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing 0106 focusPolicy: Qt.NoFocus // provided by delegate 0107 0108 checkState: root.checkState 0109 nextCheckState: root.nextCheckState 0110 tristate: root.tristate 0111 0112 onToggled: { 0113 root.toggle(); 0114 root.toggled(); 0115 } 0116 onClicked: root.clicked() 0117 onPressAndHold: root.pressAndHold() 0118 onDoubleClicked: root.doubleClicked() 0119 0120 enabled: root.enabled 0121 checked: root.checked 0122 0123 Accessible.ignored: true 0124 } 0125 0126 ColumnLayout { 0127 Layout.fillWidth: true 0128 spacing: Kirigami.Units.smallSpacing 0129 Controls.Label { 0130 text: root.text 0131 color: root.enabled ? Kirigami.Theme.textColor : Kirigami.Theme.disabledTextColor 0132 elide: Text.ElideRight 0133 wrapMode: Text.Wrap 0134 maximumLineCount: 2 0135 Layout.fillWidth: true 0136 Accessible.ignored: true 0137 } 0138 0139 Controls.Label { 0140 id: internalDescriptionItem 0141 Layout.fillWidth: true 0142 text: root.description 0143 color: Kirigami.Theme.disabledTextColor 0144 visible: root.description !== "" 0145 wrapMode: Text.Wrap 0146 } 0147 } 0148 0149 Private.ContentItemLoader { 0150 Layout.leftMargin: visible ? root.trailingPadding : 0 0151 visible: root.trailing 0152 implicitHeight: visible ? root.trailing.implicitHeight : 0 0153 implicitWidth: visible ? root.trailing.implicitWidth : 0 0154 contentItem: root.trailing 0155 } 0156 } 0157 } 0158