/*SPDX-FileCopyrightText: 2011 Martin *GrΓ€Γlin <mgraesslin@kde.org>SPDX-FileCopyrightText: 2012 Gregor Taetzner <gregor@freenet.de>SPDX-FileCopyrightText: 2014 Sebastian KΓΌgler <sebas@kde.org>SPDX-FileCopyrightText: 2015-2018 Eike Hein <hein@kde.org>SPDX-FileCopyrightText: 2021 Mikel Johnson <mikel5764@gmail.com>SPDX-FileCopyrightText: 2021 Noah Davis <noahadvs@gmail.com>SPDX-FileCopyrightText: 2022 Nate Graham <nate@kde.org>SPDX-License-Identifier: GPL-2.0-or-later*/pragma ComponentBehavior: Boundimport QtQuickimport QtQuick.Layoutsimport org.kde.ksvg as KSvgimport org.kde.plasma.components as PC3import org.kde.kirigami as Kirigamiimport org.kde.plasma.plasmoidAbstractKickoffItemDelegate {id: rootproperty bool compact: Plasmoid.configuration.compactModeleftPadding: KickoffSingleton.listItemMetrics.margins.left+ (mirrored ? KickoffSingleton.fontMetrics.descent : 0)rightPadding: KickoffSingleton.listItemMetrics.margins.right+ (!mirrored ? KickoffSingleton.fontMetrics.descent : 0)// Otherwise it's *too* compact :)topPadding: compact && !isCategoryListItem ? Kirigami.Units.mediumSpacing : Kirigami.Units.smallSpacingbottomPadding: compact && !isCategoryListItem ? Kirigami.Units.mediumSpacing : Kirigami.Units.smallSpacingicon.width: compact || root.isCategoryListItem ? Kirigami.Units.iconSizes.smallMedium : Kirigami.Units.iconSizes.mediumicon.height: compact || root.isCategoryListItem ? Kirigami.Units.iconSizes.smallMedium : Kirigami.Units.iconSizes.mediumlabelTruncated: label.truncateddescriptionTruncated: descriptionLabel.truncateddescriptionVisible: descriptionLabel.visibledragIconItem: iconcontentItem: RowLayout {id: rowspacing: KickoffSingleton.listItemMetrics.margins.left * 2Kirigami.Icon {id: iconimplicitWidth: root.icon.widthimplicitHeight: root.icon.heightLayout.alignment: Qt.AlignLeft | Qt.AlignVCenteranimated: falseselected: root.iconAndLabelsShouldlookSelectedsource: root.removalPlaceholderActive ? "list-remove" : (root.decoration || root.icon.name || root.icon.source)}Item {id: gridLayoutWrapper // exists to break implicitWidth propagationimplicitHeight: gridLayout.implicitHeightLayout.fillWidth: trueGridLayout {id: gridLayoutreadonly property color textColor: root.iconAndLabelsShouldlookSelected ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColoranchors.fill: parentvisible: !root.removalPlaceholderActiverows: root.compact ? 1 : 2columns: root.compact ? 2 : 1rowSpacing: 0columnSpacing: Kirigami.Units.largeSpacingPC3.Label {id: labelLayout.fillWidth: !descriptionLabel.visibleLayout.preferredWidth: Math.min(gridLayoutWrapper.width, implicitWidth)text: root.texttextFormat: root.isMultilineText ? Text.StyledText : Text.PlainTextelide: Text.ElideRightwrapMode: root.isMultilineText ? Text.WordWrap : Text.NoWrapverticalAlignment: Text.AlignVCentermaximumLineCount: root.isMultilineText ? Infinity : 1color: gridLayout.textColor}PC3.Label {id: descriptionLabelLayout.fillWidth: truevisible: {let isApplicationSearchResult = root.model?.group === "Applications" || root.model?.group === "System Settings"let isSearchResultWithDescription = root.isSearchResult && (Plasmoid.configuration?.appNameFormat > 1 || !isApplicationSearchResult)return text.length > 0 && (isSearchResultWithDescription || (text !== label.text && !root.isCategoryListItem && Plasmoid.configuration?.appNameFormat > 1))}opacity: 0.75text: root.descriptiontextFormat: Text.PlainTextfont: Kirigami.Theme.smallFontelide: Text.ElideRightverticalAlignment: Text.AlignVCenterhorizontalAlignment: root.compact ? Text.AlignRight : Text.AlignLeftmaximumLineCount: 1color: gridLayout.textColor}}}Loader {Layout.preferredWidth: root.isCategoryListItem ? Kirigami.Units.largeSpacing : implicitWidthLayout.preferredHeight: root.isCategoryListItem ? Kirigami.Units.largeSpacing : implicitHeightvisible: activeactive: (root.model?.isNewlyInstalled ?? false) && !root.removalPlaceholderActivesourceComponent: Kirigami.Badge {text: root.isCategoryListItem ? "" : i18nc("Newly-installed app, badge, keep short", "New!")type: Kirigami.Badge.Type.PositiveAccessible.description: root.isCategoryListItem? i18n("There is a newly-installed application in this category"): i18n("Newly-installed application")}}}Loader {id: separatorLoaderanchors.left: root.leftanchors.right: root.rightanchors.verticalCenter: root.verticalCenteractive: root.isSeparatorasynchronous: falsesourceComponent: KSvg.SvgItem {width: parent.widthheight: KickoffSingleton.lineSvg.horLineHeightsvg: KickoffSingleton.lineSvgelementId: "horizontal-line"}}}