9990fecc74
Use native ListModel which require a lot of changes, but should be much faster than the old way which exponentially slowed down to a crawl. Also fix some popup bugs (leave/forget). Not working yet: side pane keyboard controls, proper highlight, room & member filtering, local echo replacement
38 lines
885 B
QML
38 lines
885 B
QML
// SPDX-License-Identifier: LGPL-3.0-or-later
|
|
|
|
pragma Singleton
|
|
import QtQuick 2.12
|
|
import "PythonBridge"
|
|
|
|
QtObject {
|
|
property QtObject privates: QtObject {
|
|
readonly property var store: ({})
|
|
|
|
readonly property PythonBridge py: PythonBridge {}
|
|
|
|
readonly property Component model: Component {
|
|
ListModel {
|
|
property var modelId
|
|
|
|
function find(id) {
|
|
for (let i = 0; i < count; i++)
|
|
if (get(i).id === id) return get(i)
|
|
|
|
return null
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
function get(...modelId) {
|
|
if (modelId.length === 1) modelId = modelId[0]
|
|
|
|
if (! privates.store[modelId])
|
|
privates.store[modelId] =
|
|
privates.model.createObject(this, {modelId})
|
|
|
|
return privates.store[modelId]
|
|
}
|
|
}
|