fuzbal/Fields/Enum.qml

61 lines
1.5 KiB
QML
Raw Normal View History

// SPDX-License-Identifier: Unlicense
import QtQuick 2.12
import QtQuick.Controls 2.13
import '../util.js' as Util
2021-09-05 16:23:41 +02:00
Flow {
id: control
property var model
2021-09-05 16:23:41 +02:00
readonly property string value:
choices.checkedButton && choices.checkState !== Qt.Unchecked ?
choices.checkedButton.name : ''
function set(val) {
2021-09-05 16:23:41 +02:00
choices.checkState = Qt.Unchecked
for (var i = 0; i < buttons.count; i++) {
if (buttons.itemAt(i).name === val) {
buttons.itemAt(i).checked = true
break
}
}
2021-09-05 16:23:41 +02:00
return value === val
}
2021-09-05 16:23:41 +02:00
spacing: 5
Keys.forwardTo: Array.from({ length: buttons.count }, (_, i) => buttons.itemAt(i))
ButtonGroup { id: choices }
Repeater {
id: buttons
model: control.model.values
delegate: Button {
required property int index
required property var modelData
readonly property string name: modelData.name
2021-09-05 16:23:41 +02:00
text: Util.addShortcut(name, modelData.key)
2021-09-05 16:23:41 +02:00
ButtonGroup.group: choices
checkable: true
focusPolicy: Qt.NoFocus
2021-09-05 16:23:41 +02:00
implicitWidth: implicitContentWidth + leftPadding + rightPadding
padding: 0
leftPadding: 5
rightPadding: leftPadding
2021-09-05 16:23:41 +02:00
Keys.onPressed: {
if (modelData.key === event.text) {
checked = !checked
event.accepted = true
}
}
}
}
}