fuzbal/Fields/Enum.qml
Timotej Lazar cb76fedcbc
Implement event model in C++
Filtering events in JS is too slow with >20,000 events. This moves the
event data model into C++.
2021-09-16 20:33:05 +02:00

59 lines
1.5 KiB
QML

// SPDX-License-Identifier: Unlicense
import QtQuick 2.12
import QtQuick.Controls 2.13
import '../util.js' as Util
Column {
id: control
property var model
property int index: -1
readonly property string value: index >= 0 ? model.values[index].name : ''
function set(val) {
for (var i = 0; i < model.values.length; i++) {
if (model.values[i].name === val) {
index = i
return true
}
}
index = -1
}
Keys.onPressed: {
for (var i = 0; i < model.values.length; i++) {
if (model.values[i].key === event.text) {
index = (index === i ? -1 : i)
event.accepted = true
break
}
}
}
Flow {
spacing: 5
width: parent.width
ButtonGroup { id: buttons }
Repeater {
model: control.model.values
delegate: Button {
ButtonGroup.group: buttons
checkable: true
checked: control.index === index
focusPolicy: Qt.NoFocus
implicitWidth: implicitContentWidth + leftPadding + rightPadding
padding: 0
leftPadding: 5
rightPadding: leftPadding
onClicked: control.index = (control.index === index ? -1 : index)
text: Util.addShortcut(modelData.name, modelData.key)
}
}
}
}