Warning, /libraries/kirigami-addons/src/delegates/RoundedItemDelegate.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2023 Carl Schwan <carl@carlschwan.eu> 0002 // SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0003 0004 import QtQuick 2.15 0005 import QtQuick.Layouts 1.15 0006 import QtQuick.Controls 2.15 as QQC2 0007 import QtQuick.Templates 2.15 as T 0008 import org.kde.kirigami 2.20 as Kirigami 0009 0010 T.ItemDelegate { 0011 id: root 0012 0013 /** 0014 * This property holds a ListView 0015 * 0016 * It is automatically set if the RoundedItemDelegate is the direct delegate 0017 * of a ListView and must be set otherwise. 0018 */ 0019 property var listView: ListView 0020 0021 /** 0022 * This property holds a GridView 0023 * 0024 * It is automatically set if the RoundedItemDelegate is the direct delegate 0025 * of a GridView and must be set otherwise. 0026 */ 0027 property var gridView: GridView 0028 0029 implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 0030 implicitContentWidth + leftPadding + rightPadding, 0031 implicitIndicatorWidth + leftPadding + rightPadding) 0032 implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 0033 implicitContentHeight + topPadding + bottomPadding, 0034 implicitIndicatorHeight + topPadding + bottomPadding, 0035 Kirigami.Units.gridUnit * 2) 0036 0037 width: if (listView.view) { 0038 return listView.view.width; 0039 } else if (gridView.view) { 0040 return gridView.view.cellWidth; 0041 } else { 0042 implicitWidth 0043 } 0044 0045 height: if (gridView.view) { 0046 return gridView.view.cellHeight; 0047 } else { 0048 return implicitHeight; 0049 } 0050 highlighted: listView.isCurrentItem || gridView.isCurrentItem 0051 0052 spacing: Kirigami.Units.mediumSpacing 0053 0054 padding: Kirigami.Units.mediumSpacing 0055 0056 horizontalPadding: padding + Math.round(Kirigami.Units.smallSpacing / 2) 0057 leftPadding: horizontalPadding 0058 rightPadding: horizontalPadding 0059 0060 verticalPadding: padding 0061 topPadding: verticalPadding 0062 bottomPadding: verticalPadding 0063 0064 topInset: if (root.index !== undefined && index === 0 && listView.view && listView.view.topMargin === 0) { 0065 Kirigami.Units.smallSpacing; 0066 } else { 0067 Math.round(Kirigami.Units.smallSpacing / 2); 0068 } 0069 bottomInset: if (root.index !== undefined && listView.view && index === listView.view.count - 1 && listView.view.bottomMargin === 0) { 0070 Kirigami.Units.smallSpacing; 0071 } else { 0072 Math.round(Kirigami.Units.smallSpacing / 2) 0073 } 0074 rightInset: Kirigami.Units.smallSpacing 0075 leftInset: Kirigami.Units.smallSpacing 0076 0077 icon { 0078 width: if (contentItem instanceof SubtitleContentItem) { 0079 Kirigami.Units.iconSizes.large 0080 } else { 0081 Kirigami.Units.iconSizes.sizeForLabels 0082 } 0083 0084 height: if (contentItem instanceof SubtitleContentItem) { 0085 Kirigami.Units.iconSizes.large 0086 } else { 0087 Kirigami.Units.iconSizes.sizeForLabels 0088 } 0089 } 0090 0091 Accessible.description: if (contentItem instanceof SubtitleContentItem) { 0092 contentItem.subtitle 0093 } else { 0094 "" 0095 } 0096 0097 background: Rectangle { 0098 radius: Kirigami.Units.smallSpacing 0099 0100 color: if (root.highlighted || root.checked || (root.down && !root.checked) || root.visualFocus) { 0101 const highlight = Kirigami.ColorUtils.tintWithAlpha(Kirigami.Theme.backgroundColor, Kirigami.Theme.highlightColor, 0.3); 0102 if (root.hovered) { 0103 Kirigami.ColorUtils.tintWithAlpha(highlight, Kirigami.Theme.textColor, 0.10) 0104 } else { 0105 highlight 0106 } 0107 } else if (root.hovered) { 0108 Kirigami.ColorUtils.tintWithAlpha(Kirigami.Theme.backgroundColor, Kirigami.Theme.textColor, 0.10) 0109 } else { 0110 Kirigami.Theme.backgroundColor 0111 } 0112 0113 border { 0114 color: Kirigami.Theme.highlightColor 0115 width: root.visualFocus || root.activeFocus ? 1 : 0 0116 } 0117 0118 Behavior on color { 0119 ColorAnimation { 0120 duration: Kirigami.Units.shortDuration 0121 } 0122 } 0123 } 0124 0125 contentItem: DefaultContentItem { 0126 itemDelegate: root 0127 } 0128 }