| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- // Copyright (C) 2021 The Qt Company Ltd.
- // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
- // Qt-Security score:significant reason:default
- import QtQuick
- import QtQuick.Controls.impl
- import QtQuick.Templates as T
- T.TreeViewDelegate {
- id: control
- implicitWidth: leftMargin + __contentIndent + implicitContentWidth + rightPadding + rightMargin
- implicitHeight: Math.max(indicator ? indicator.height : 0, implicitContentHeight) * 1.25
- indentation: indicator ? indicator.width : 12
- leftMargin: 4
- rightMargin: 4
- spacing: 4
- topPadding: contentItem ? (height - contentItem.implicitHeight) / 2 : 0
- leftPadding: !mirrored ? leftMargin + __contentIndent : width - leftMargin - __contentIndent - implicitContentWidth
- highlighted: control.selected || control.current
- || ((control.treeView.selectionBehavior === TableView.SelectRows
- || control.treeView.selectionBehavior === TableView.SelectionDisabled)
- && control.row === control.treeView.currentRow)
- required property int row
- required property var model
- readonly property real __contentIndent: !isTreeNode ? 0 : (depth * indentation) + (indicator ? indicator.width + spacing : 0)
- indicator: Item {
- // Create an area that is big enough for the user to
- // click on, since the image is a bit small.
- readonly property real __indicatorIndent: control.leftMargin + (control.depth * control.indentation)
- x: !control.mirrored ? __indicatorIndent : control.width - __indicatorIndent - width
- y: (control.height - height) / 2
- implicitWidth: 20
- implicitHeight: 40 // same as Button.qml
- ColorImage {
- x: (parent.width - width) / 2
- y: (parent.height - height) / 2
- rotation: control.expanded ? 90 : (control.mirrored ? 180 : 0)
- source: "qrc:/qt-project.org/imports/QtQuick/Controls/Basic/images/arrow-indicator.png"
- color: control.palette.windowText
- defaultColor: "#353637"
- }
- }
- background: Rectangle {
- implicitHeight: 40 // same as Button.qml
- border.color: control.current ? control.palette.highlight : control.palette.windowText
- border.width: Qt.styleHints.accessibility.contrastPreference !== Qt.HighContrast ? 0 :
- control.current ? 2 : 1
- color: control.highlighted
- ? control.palette.highlight
- : (control.treeView.alternatingRows && control.row % 2 !== 0
- ? control.palette.alternateBase : control.palette.base)
- }
- contentItem: Label {
- clip: false
- text: control.model.display
- elide: Text.ElideRight
- color: control.highlighted ? control.palette.highlightedText : control.palette.buttonText
- visible: !control.editing
- }
- // The edit delegate is a separate component, and doesn't need
- // to follow the same strict rules that are applied to a control.
- // qmllint disable attached-property-reuse
- // qmllint disable controls-attached-property-reuse
- // qmllint disable controls-sanity
- TableView.editDelegate: FocusScope {
- width: parent.width
- height: parent.height
- readonly property int __role: {
- let model = control.treeView.model
- let index = control.treeView.index(row, column)
- let editText = model.data(index, Qt.EditRole)
- return editText !== undefined ? Qt.EditRole : Qt.DisplayRole
- }
- TextField {
- id: textField
- x: control.contentItem.x
- y: (parent.height - height) / 2
- width: control.contentItem.width
- text: control.treeView.model.data(control.treeView.index(row, column), __role)
- focus: true
- }
- TableView.onCommit: {
- let index = TableView.view.index(row, column)
- TableView.view.model.setData(index, textField.text, __role)
- }
- Component.onCompleted: textField.selectAll()
- }
- // qmllint enable attached-property-reuse
- // qmllint enable controls-attached-property-reuse
- // qmllint enable controls-sanity
- }
|