Implement event model in C++
Filtering events in JS is too slow with >20,000 events. This moves the event data model into C++.
This commit is contained in:
parent
e9b70c585c
commit
cb76fedcbc
14 changed files with 375 additions and 342 deletions
|
@ -8,13 +8,13 @@ import '../util.js' as Util
|
|||
Column {
|
||||
id: control
|
||||
|
||||
property var definition
|
||||
property var model
|
||||
property int index: -1
|
||||
readonly property string value: index >= 0 ? definition.values.get(index).name : ''
|
||||
readonly property string value: index >= 0 ? model.values[index].name : ''
|
||||
|
||||
function set(val) {
|
||||
for (var i = 0; i < definition.values.count; i++) {
|
||||
if (definition.values.get(i).name === val) {
|
||||
for (var i = 0; i < model.values.length; i++) {
|
||||
if (model.values[i].name === val) {
|
||||
index = i
|
||||
return true
|
||||
}
|
||||
|
@ -23,8 +23,8 @@ Column {
|
|||
}
|
||||
|
||||
Keys.onPressed: {
|
||||
for (var i = 0; i < definition.values.count; i++) {
|
||||
if (definition.values.get(i).key === event.text) {
|
||||
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
|
||||
|
@ -39,7 +39,7 @@ Column {
|
|||
ButtonGroup { id: buttons }
|
||||
|
||||
Repeater {
|
||||
model: definition.values
|
||||
model: control.model.values
|
||||
delegate: Button {
|
||||
ButtonGroup.group: buttons
|
||||
checkable: true
|
||||
|
@ -52,7 +52,7 @@ Column {
|
|||
rightPadding: leftPadding
|
||||
|
||||
onClicked: control.index = (control.index === index ? -1 : index)
|
||||
text: Util.addShortcut(name, key)
|
||||
text: Util.addShortcut(modelData.name, modelData.key)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue