Warning, /plasma/kwin/src/kcms/rules/ui/RuleItemDelegate.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2020 Ismael Asensio <isma.af@gmail.com>
0003
0004 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006
0007 import QtQuick
0008 import QtQuick.Layouts
0009 import QtQuick.Controls as QQC2
0010 import org.kde.kirigami 2.10 as Kirigami
0011 import org.kde.kcmutils as KCM
0012
0013 QQC2.ItemDelegate {
0014 id: ruleDelegate
0015
0016 property bool ruleEnabled: model.enabled
0017
0018 Kirigami.Theme.colorSet: Kirigami.Theme.View
0019
0020 width: ListView.view.width
0021 highlighted: false
0022 hoverEnabled: false
0023 down: false
0024
0025 contentItem: RowLayout {
0026
0027 Kirigami.Icon {
0028 id: itemIcon
0029 source: model.icon
0030 Layout.preferredHeight: Kirigami.Units.iconSizes.smallMedium
0031 Layout.preferredWidth: Kirigami.Units.iconSizes.smallMedium
0032 Layout.rightMargin: Kirigami.Units.smallSpacing
0033 Layout.alignment: Qt.AlignVCenter
0034 }
0035
0036 RowLayout {
0037 Layout.preferredWidth: 10 * Kirigami.Units.gridUnit
0038 spacing: Kirigami.Units.smallSpacing
0039
0040 QQC2.Label {
0041 id: label
0042 text: model.name
0043 horizontalAlignment: Text.AlignLeft
0044 elide: Text.ElideRight
0045 Layout.fillWidth: true
0046 Layout.alignment: Qt.AlignVCenter
0047
0048 HoverHandler {
0049 id: labelHover
0050 enabled: label.truncated
0051 }
0052
0053 QQC2.ToolTip.text: model.name
0054 QQC2.ToolTip.visible: labelHover.hovered
0055 QQC2.ToolTip.delay: Kirigami.Units.toolTipDelay
0056 }
0057
0058 KCM.ContextualHelpButton {
0059 Layout.preferredHeight: Kirigami.Units.gridUnit * 2
0060 Layout.alignment: Qt.AlignVCenter
0061 visible: model.description.length > 0
0062 toolTipText: model.description
0063 }
0064 }
0065
0066 RowLayout {
0067 // This layout keeps the width constant between delegates, independent of items visibility
0068 Layout.fillWidth: true
0069 Layout.preferredWidth: 20 * Kirigami.Units.gridUnit
0070 Layout.minimumWidth: 13 * Kirigami.Units.gridUnit
0071
0072 OptionsComboBox {
0073 id: policyCombo
0074 Layout.preferredWidth: 50 // 50%
0075 Layout.fillWidth: true
0076 Layout.alignment: Qt.AlignVCenter
0077
0078 visible: count > 0
0079 enabled: ruleEnabled
0080
0081 model: policyModel
0082 onActivated: {
0083 policy = currentValue;
0084 }
0085 }
0086
0087 ValueEditor {
0088 id: valueEditor
0089 Layout.preferredWidth: 50 // 50%
0090 Layout.fillWidth: true
0091 Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
0092
0093 enabled: model.enabled
0094
0095 ruleValue: model.value
0096 ruleOptions: model.options
0097 controlType: model.type
0098
0099 onValueEdited: (value) => {
0100 model.value = value;
0101 }
0102 }
0103
0104 QQC2.ToolButton {
0105 id: itemEnabled
0106 icon.name: "edit-delete"
0107 visible: model.selectable
0108 Layout.alignment: Qt.AlignVCenter
0109 onClicked: {
0110 model.enabled = false;
0111 }
0112 }
0113 }
0114
0115 QQC2.ToolTip {
0116 text: model.description
0117 visible: hovered && (text.length > 0)
0118 }
0119 }
0120 }