Warning, /plasma/plasma-desktop/applets/kickoff/package/contents/ui/KickoffListDelegate.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2011 Martin *Gräßlin <mgraesslin@kde.org>
0003 SPDX-FileCopyrightText: 2012 Gregor Taetzner <gregor@freenet.de>
0004 SPDX-FileCopyrightText: 2014 Sebastian Kügler <sebas@kde.org>
0005 SPDX-FileCopyrightText: 2015-2018 Eike Hein <hein@kde.org>
0006 SPDX-FileCopyrightText: 2021 Mikel Johnson <mikel5764@gmail.com>
0007 SPDX-FileCopyrightText: 2021 Noah Davis <noahadvs@gmail.com>
0008 SPDX-FileCopyrightText: 2022 Nate Graham <nate@kde.org>
0009
0010 SPDX-License-Identifier: GPL-2.0-or-later
0011 */
0012 import QtQuick 2.15
0013 import QtQml 2.15
0014 import QtQuick.Layouts 1.15
0015 import org.kde.ksvg 1.0 as KSvg
0016 import org.kde.plasma.components 3.0 as PC3
0017 import org.kde.kirigami 2.20 as Kirigami
0018 import org.kde.plasma.plasmoid 2.0
0019
0020 AbstractKickoffItemDelegate {
0021 id: root
0022
0023 property bool compact: Kirigami.Settings.tabletMode ? false : Plasmoid.configuration.compactMode
0024
0025 leftPadding: KickoffSingleton.listItemMetrics.margins.left
0026 + (mirrored ? KickoffSingleton.fontMetrics.descent : 0)
0027 rightPadding: KickoffSingleton.listItemMetrics.margins.right
0028 + (!mirrored ? KickoffSingleton.fontMetrics.descent : 0)
0029 // Otherwise it's *too* compact :)
0030 topPadding: compact ? Kirigami.Units.mediumSpacing : Kirigami.Units.smallSpacing
0031 bottomPadding: compact ? Kirigami.Units.mediumSpacing : Kirigami.Units.smallSpacing
0032
0033 icon.width: compact || root.isCategoryListItem ? Kirigami.Units.iconSizes.smallMedium : Kirigami.Units.iconSizes.medium
0034 icon.height: compact || root.isCategoryListItem ? Kirigami.Units.iconSizes.smallMedium : Kirigami.Units.iconSizes.medium
0035
0036 labelTruncated: label.truncated
0037 descriptionTruncated: descriptionLabel.truncated
0038 descriptionVisible: descriptionLabel.visible
0039
0040 dragIconItem: icon
0041
0042 contentItem: RowLayout {
0043 id: row
0044 spacing: KickoffSingleton.listItemMetrics.margins.left * 2
0045
0046 Kirigami.Icon {
0047 id: icon
0048 implicitWidth: root.icon.width
0049 implicitHeight: root.icon.height
0050 Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
0051
0052 animated: false
0053 selected: root.iconAndLabelsShouldlookSelected
0054 source: root.decoration || root.icon.name || root.icon.source
0055 }
0056
0057 GridLayout {
0058 id: gridLayout
0059
0060 readonly property color textColor: root.iconAndLabelsShouldlookSelected ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor
0061
0062 Layout.fillWidth: true
0063
0064 rows: root.compact ? 1 : 2
0065 columns: root.compact ? 2 : 1
0066 rowSpacing: 0
0067 columnSpacing: Kirigami.Units.largeSpacing
0068
0069 PC3.Label {
0070 id: label
0071 Layout.fillWidth: !descriptionLabel.visible
0072 Layout.maximumWidth: root.width - root.leftPadding - root.rightPadding - icon.width - row.spacing
0073 Layout.preferredHeight: {
0074 if (root.isCategoryListItem) {
0075 return root.compact ? implicitHeight : Math.round(implicitHeight * 1.5);
0076 }
0077 if (!root.compact && !descriptionLabel.visible) {
0078 return implicitHeight + descriptionLabel.implicitHeight
0079 }
0080 return implicitHeight;
0081 }
0082 text: root.text
0083 textFormat: Text.PlainText
0084 elide: Text.ElideRight
0085 verticalAlignment: Text.AlignVCenter
0086 maximumLineCount: 1
0087 color: gridLayout.textColor
0088 }
0089
0090 PC3.Label {
0091 id: descriptionLabel
0092 Layout.fillWidth: true
0093 // Don't want to show descriptions for apps in the category list, because
0094 // there's not enough room for them with the category list item height
0095 visible: text.length > 0 && text !== root.text && !root.isCategoryListItem
0096 enabled: false
0097 text: root.description
0098 textFormat: Text.PlainText
0099 font: Kirigami.Theme.smallFont
0100 elide: Text.ElideRight
0101 verticalAlignment: Text.AlignVCenter
0102 horizontalAlignment: root.compact ? Text.AlignRight : Text.AlignLeft
0103 maximumLineCount: 1
0104 color: gridLayout.textColor
0105 }
0106 }
0107 }
0108
0109 Loader {
0110 id: separatorLoader
0111
0112 anchors.left: root.left
0113 anchors.right: root.right
0114 anchors.verticalCenter: root.verticalCenter
0115
0116 active: root.isSeparator
0117
0118 asynchronous: false
0119 sourceComponent: KSvg.SvgItem {
0120 width: parent.width
0121 height: KickoffSingleton.lineSvg.horLineHeight
0122
0123 svg: KickoffSingleton.lineSvg
0124 elementId: "horizontal-line"
0125 }
0126 }
0127 }