Warning, /libraries/kirigami-addons/src/treeview/qml/TreeViewDecoration.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 * SPDX-FileCopyrightText: 2020 Marco Martin <mart@kde.org>
0003 *
0004 * SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006
0007 import QtQuick 2.6
0008 import QtQuick.Layouts 1.4
0009 import QtQuick.Controls 2.2 as QQC2
0010 import QtQuick.Templates 2.2 as T2
0011 import org.kde.kitemmodels 1.0
0012 import org.kde.kirigami 2.14 as Kirigami
0013
0014 /**
0015 * The tree expander decorator for item views.
0016 *
0017 * It will have a "> v" expander button graphics, and will have indentation on the left
0018 * depending on the level of the tree the item is in
0019 *
0020 * It is recommanded to directly use RoundedTreeDelegate instead of this component.
0021 */
0022 RowLayout {
0023 /**
0024 * This property holds the delegate there this decoration will live in.
0025 * It needs to be assigned explicitly by the developer.
0026 */
0027 required property T2.ItemDelegate parentDelegate
0028
0029 /**
0030 * This property holds the KDescendantsProxyModel the view is showing.
0031 * It needs to be assigned explicitly by the developer.
0032 */
0033 required property KDescendantsProxyModel model
0034
0035 /**
0036 * This property holds the color of the decoration highlight.
0037 */
0038 property color decorationHighlightColor
0039
0040 /**
0041 * This property holds the index of the item.
0042 *
0043 * Provided by the model/ListView
0044 */
0045 required property int index
0046
0047 /**
0048 * This property holds the descendant level of the item.
0049 *
0050 * Provided by the model/ListView
0051 */
0052 required property int kDescendantLevel
0053
0054 /**
0055 * This property holds whether this item has siblings.
0056 *
0057 * Provided by the model/ListView
0058 */
0059 required property var kDescendantHasSiblings
0060
0061 /**
0062 * This property holds whether the item is expandable.
0063 *
0064 * Provided by the model/ListView
0065 */
0066 required property bool kDescendantExpandable
0067
0068 /**
0069 * This property holds whether the item is expanded.
0070 *
0071 * Provided by the model/ListView
0072 */
0073 required property bool kDescendantExpanded
0074
0075 Layout.topMargin: -parentDelegate.topPadding
0076 Layout.bottomMargin: -parentDelegate.bottomPadding
0077 Repeater {
0078 model: kDescendantLevel - 1
0079 delegate: Item {
0080 Layout.preferredWidth: controlRoot.width
0081 Layout.fillHeight: true
0082
0083 Rectangle {
0084 anchors {
0085 horizontalCenter: parent.horizontalCenter
0086 top: parent.top
0087 bottom: parent.bottom
0088 }
0089 visible: kDescendantHasSiblings[modelData]
0090 color: Kirigami.Theme.textColor
0091 opacity: 0.5
0092 width: 1
0093 }
0094 }
0095 }
0096 T2.Button {
0097 id: controlRoot
0098 Layout.preferredWidth: Kirigami.Units.gridUnit
0099 Layout.fillHeight: true
0100 enabled: kDescendantExpandable
0101 onClicked: model.toggleChildren(parentDelegate.index)
0102 contentItem: Item {
0103 id: styleitem
0104 implicitWidth: Kirigami.Units.gridUnit
0105 Rectangle {
0106 anchors {
0107 horizontalCenter: parent.horizontalCenter
0108 top: parent.top
0109 bottom: expander.visible ? expander.top : parent.verticalCenter
0110 }
0111 color: Kirigami.Theme.textColor
0112 opacity: 0.5
0113 width: 1
0114 }
0115 Kirigami.Icon {
0116 id: expander
0117 anchors.centerIn: parent
0118 width: Kirigami.Units.iconSizes.small
0119 height: width
0120 source: kDescendantExpanded ? "go-down-symbolic" : (Qt.application.layoutDirection == Qt.RightToLeft ? "go-previous-symbolic" : "go-next-symbolic")
0121 isMask: true
0122 color: controlRoot.hovered ? decorationLayout.decorationHighlightColor ? decorationLayout.decorationHighlightColor : Kirigami.Theme.highlightColor : Kirigami.Theme.textColor
0123 Kirigami.Theme.highlightColor : Kirigami.Theme.textColor
0124 Behavior on color { ColorAnimation { duration: Kirigami.Units.shortDuration; easing.type: Easing.InOutQuad } }
0125 visible: kDescendantExpandable
0126 }
0127 Rectangle {
0128 anchors {
0129 horizontalCenter: parent.horizontalCenter
0130 top: expander.visible ? expander.bottom : parent.verticalCenter
0131 bottom: parent.bottom
0132 }
0133 visible: kDescendantHasSiblings[kDescendantHasSiblings.length - 1]
0134 color: Kirigami.Theme.textColor
0135 opacity: 0.5
0136 width: 1
0137 }
0138 Rectangle {
0139 anchors {
0140 verticalCenter: parent.verticalCenter
0141 left: expander.visible ? expander.right : parent.horizontalCenter
0142 right: parent.right
0143 }
0144 color: Kirigami.Theme.textColor
0145 opacity: 0.5
0146 height: 1
0147 }
0148 }
0149 background: Item {}
0150 }
0151 }