Warning, /libraries/kirigami-addons/src/formcard/FormButtonDelegate.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.Controls 2.15 0008 import QtQuick.Layouts 1.15 0009 0010 import org.kde.kirigami 2.19 as Kirigami 0011 0012 import "private" as Private 0013 0014 /** 0015 * @brief A Form delegate that corresponds to a clickable button. 0016 * 0017 * Use the inherited QtQuick.Controls.AbstractButton.text property to define 0018 * the main text of the button. 0019 * 0020 * The trailing property (right-most side of the button) includes an arrow 0021 * pointing to the right by default and cannot be overridden. 0022 * 0023 * @since KirigamiAddons 0.11.0 0024 * 0025 * @inherit AbstractFormDelegate 0026 */ 0027 AbstractFormDelegate { 0028 id: root 0029 0030 /** 0031 * @brief A label containing secondary text that appears under the 0032 * inherited text property. 0033 * 0034 * This provides additional information shown in a faint gray color. 0035 * 0036 * This is supposed to be a short text and the API user should avoid 0037 * making it longer than two lines. 0038 */ 0039 property string description: "" 0040 0041 /** 0042 * @brief This property allows to override the internal description 0043 * item (a QtQuick.Controls.Label) with a custom component. 0044 */ 0045 property alias descriptionItem: internalDescriptionItem 0046 0047 /** 0048 * @brief This property holds an item that will be displayed to the 0049 * left of the delegate's contents. 0050 * 0051 * default: `null` 0052 */ 0053 property var leading: null 0054 0055 /** 0056 * @brief This property holds the padding after the leading item. 0057 * 0058 * It is recommended to use Kirigami.Units here instead of direct values. 0059 * 0060 * @see Kirigami.Units 0061 */ 0062 property real leadingPadding: Kirigami.Units.smallSpacing 0063 0064 focusPolicy: Qt.StrongFocus 0065 0066 icon { 0067 width: Kirigami.Units.iconSizes.small 0068 height: Kirigami.Units.iconSizes.small 0069 } 0070 0071 contentItem: RowLayout { 0072 spacing: 0 0073 0074 Private.ContentItemLoader { 0075 Layout.rightMargin: visible ? root.leadingPadding : 0 0076 visible: root.leading 0077 implicitHeight: visible ? root.leading.implicitHeight : 0 0078 implicitWidth: visible ? root.leading.implicitWidth : 0 0079 contentItem: root.leading 0080 } 0081 0082 Kirigami.Icon { 0083 visible: root.icon.name !== "" 0084 source: root.icon.name 0085 color: root.icon.color 0086 Layout.rightMargin: (root.icon.name !== "") ? Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing : 0 0087 implicitWidth: (root.icon.name !== "") ? root.icon.width : 0 0088 implicitHeight: (root.icon.name !== "") ? root.icon.height : 0 0089 } 0090 0091 ColumnLayout { 0092 Layout.fillWidth: true 0093 spacing: Kirigami.Units.smallSpacing 0094 0095 Label { 0096 Layout.fillWidth: true 0097 text: root.text 0098 elide: Text.ElideRight 0099 wrapMode: Text.Wrap 0100 maximumLineCount: 2 0101 color: root.enabled ? Kirigami.Theme.textColor : Kirigami.Theme.disabledTextColor 0102 Accessible.ignored: true // base class sets this text on root already 0103 } 0104 0105 Label { 0106 id: internalDescriptionItem 0107 Layout.fillWidth: true 0108 text: root.description 0109 color: Kirigami.Theme.disabledTextColor 0110 elide: Text.ElideRight 0111 visible: root.description !== "" 0112 wrapMode: Text.Wrap 0113 Accessible.ignored: !visible 0114 } 0115 } 0116 0117 FormArrow { 0118 Layout.leftMargin: Kirigami.Units.smallSpacing 0119 Layout.alignment: Qt.AlignRight | Qt.AlignVCenter 0120 direction: Qt.RightArrow 0121 visible: root.background.visible 0122 } 0123 } 0124 0125 Accessible.onPressAction: action ? action.trigger() : root.clicked() 0126 }