2021-06-14 19:09:53 +02:00
|
|
|
// 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 {
|
2021-06-14 19:09:53 +02:00
|
|
|
id: control
|
|
|
|
|
2021-09-01 17:13:51 +02:00
|
|
|
property var model
|
2021-09-05 16:23:41 +02:00
|
|
|
readonly property string value:
|
|
|
|
choices.checkedButton && choices.checkState !== Qt.Unchecked ?
|
|
|
|
choices.checkedButton.name : ''
|
2021-06-14 19:09:53 +02:00
|
|
|
|
|
|
|
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
|
2021-06-14 19:09:53 +02:00
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
2021-09-05 16:23:41 +02:00
|
|
|
return value === val
|
2021-06-14 19:09:53 +02:00
|
|
|
}
|
|
|
|
|
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-06-14 19:09:53 +02:00
|
|
|
|
2021-09-05 16:23:41 +02:00
|
|
|
text: Util.addShortcut(name, modelData.key)
|
2021-06-14 19:09:53 +02:00
|
|
|
|
2021-09-05 16:23:41 +02:00
|
|
|
ButtonGroup.group: choices
|
|
|
|
checkable: true
|
|
|
|
focusPolicy: Qt.NoFocus
|
2021-06-14 19:09:53 +02:00
|
|
|
|
2021-09-05 16:23:41 +02:00
|
|
|
implicitWidth: implicitContentWidth + leftPadding + rightPadding
|
|
|
|
padding: 0
|
|
|
|
leftPadding: 5
|
|
|
|
rightPadding: leftPadding
|
2021-06-14 19:09:53 +02:00
|
|
|
|
2021-09-05 16:23:41 +02:00
|
|
|
Keys.onPressed: {
|
|
|
|
if (modelData.key === event.text) {
|
|
|
|
checked = !checked
|
|
|
|
event.accepted = true
|
|
|
|
}
|
2021-06-14 19:09:53 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|