72 lines
2.6 KiB
QML
72 lines
2.6 KiB
QML
// Copyright (C) 2024 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.TableViewDelegate {
|
|
id: control
|
|
|
|
// same as AbstractButton.qml
|
|
implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
|
|
implicitContentWidth + leftPadding + rightPadding)
|
|
implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
|
|
implicitContentHeight + topPadding + bottomPadding)
|
|
|
|
highlighted: control.selected
|
|
|
|
required property int column
|
|
required property int row
|
|
required property var model
|
|
|
|
background: Rectangle {
|
|
border.width: control.current ? 2 : Qt.styleHints.accessibility.contrastPreference === Qt.HighContrast ? 1 : 0
|
|
border.color: control.current ? control.palette.highlight : control.palette.windowText
|
|
color: control.highlighted
|
|
? control.palette.highlight
|
|
: (control.tableView.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 QuickControlsSanity.controls-sanity
|
|
TableView.editDelegate: FocusScope {
|
|
width: parent.width
|
|
height: parent.height
|
|
|
|
TableView.onCommit: {
|
|
let model = control.tableView.model
|
|
if (!model)
|
|
return
|
|
const index = model.index(control.row, control.column)
|
|
if (!model.setData(index, textField.text, Qt.EditRole))
|
|
console.warn("The model does not allow setting the EditRole data.")
|
|
}
|
|
|
|
Component.onCompleted: textField.selectAll()
|
|
|
|
TextField {
|
|
id: textField
|
|
anchors.fill: parent
|
|
text: control.model.edit ?? control.model.display ?? ""
|
|
focus: true
|
|
}
|
|
}
|
|
// qmllint enable attached-property-reuse
|
|
// qmllint enable controls-attached-property-reuse
|
|
// qmllint enable QuickControlsSanity.controls-sanity
|
|
}
|