Kirigami-addons

FormIconDelegate.qml
1// SPDX-FileCopyrightText: 2024 Carl Schwan <carl@carlschwan.eu>
2// SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
3
4import QtQuick
5import QtQuick.Controls as Controls
6import QtQuick.Layouts
7
8import org.kde.iconthemes as KIconThemes
9import org.kde.kirigamiaddons.formcard as FormCard
10import org.kde.kirigami as Kirigami
11
12/**
13 \brief A FormCard delegate for icons.
14
15 Allow users to select icons. By default "Icon" is the default label
16 but this can be overwritten with the `text` property.
17
18 \code{qml}
19 FormCard.FormCard {
20 FormCard.FormIconDelegate {}
21
22 FormCard.FormDelegateSeparator {}
23
24 FormCard.FormIconDelegate {
25 text: i18nc("@label", "Active icon")
26 iconName: "actor-symbolic"
27 }
28 }
29 \endcode
30 \image html formcardicon.png
31
32 \note This element is readonly on Android.
33
34 \since 1.8.0
35 */
36FormCard.AbstractFormDelegate {
37 id: root
38
39 /**
40 * This property holds the name of the selected icon.
41 */
42 property alias iconName: buttonIcon.source
43
44 text: "Icon"
45 icon.name: "preferences-desktop-emoticons-symbolic"
46 onClicked: iconDialog.open()
47
48 contentItem: RowLayout {
49 spacing: 0
50
51 Kirigami.Icon {
52 source: root.icon.name
53 Layout.rightMargin: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing
54 implicitWidth: Kirigami.Units.iconSizes.small
55 implicitHeight: Kirigami.Units.iconSizes.small
56 }
57
58 Controls.Label {
59 Layout.fillWidth: true
60 text: root.text
61 elide: Text.ElideRight
62 wrapMode: Text.Wrap
63 maximumLineCount: 2
64 Accessible.ignored: true // base class sets this text on root already
65 }
66
67 Kirigami.Icon {
68 id: buttonIcon
69
70 source: "addressbook-details-symbolic"
71 Layout.preferredWidth: Kirigami.Units.iconSizes.small
72 Layout.preferredHeight: Kirigami.Units.iconSizes.small
73 Layout.rightMargin: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing
74 }
75
76 FormCard.FormArrow {
77 Layout.leftMargin: Kirigami.Units.smallSpacing
78 Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
79 direction: Qt.RightArrow
80 visible: root.background.visible
81 }
82 }
83
84 KIconThemes.IconDialog {
85 id: iconDialog
86 onIconNameChanged: buttonIcon.source = iconName
87 }
88}
A single card that follows a form style.
Definition FormCard.qml:35
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Mar 28 2025 11:56:08 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.