73 lines
1.7 KiB
QML
73 lines
1.7 KiB
QML
import QtQuick 2.12
|
|
import QtQuick.Layouts 1.12
|
|
import "../../Base"
|
|
import "../../utils.js" as Utils
|
|
|
|
HColumnLayout {
|
|
HListView {
|
|
id: memberList
|
|
clip: true
|
|
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
|
|
|
|
readonly property var originSource:
|
|
modelSources[["Member", chatPage.roomId]] || []
|
|
|
|
|
|
onOriginSourceChanged: filterLimiter.restart()
|
|
|
|
|
|
function filterSource() {
|
|
model.source =
|
|
Utils.filterModelSource(originSource, filterField.text)
|
|
}
|
|
|
|
|
|
model: HListModel {
|
|
keyField: "user_id"
|
|
source: memberList.originSource
|
|
}
|
|
|
|
delegate: MemberDelegate {
|
|
width: memberList.width
|
|
}
|
|
|
|
Timer {
|
|
id: filterLimiter
|
|
interval: 16
|
|
onTriggered: memberList.filterSource()
|
|
}
|
|
}
|
|
|
|
HRowLayout {
|
|
Layout.minimumHeight: theme.baseElementsHeight
|
|
Layout.maximumHeight: Layout.minimumHeight
|
|
|
|
HTextField {
|
|
id: filterField
|
|
placeholderText: qsTr("Filter members")
|
|
backgroundColor: theme.chat.roomSidePane.filterMembers.background
|
|
bordered: false
|
|
|
|
onTextChanged: filterLimiter.restart()
|
|
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
}
|
|
|
|
HButton {
|
|
enabled: false // TODO
|
|
icon.name: "room-send-invite"
|
|
iconItem.dimension: parent.height - 10
|
|
topPadding: 0
|
|
bottomPadding: 0
|
|
toolTip.text: qsTr("Invite to this room")
|
|
backgroundColor: theme.chat.roomSidePane.inviteButton.background
|
|
|
|
Layout.fillHeight: true
|
|
}
|
|
}
|
|
}
|