moment/src/qml/Chat/RoomPane/MemberView.qml
2019-12-13 09:53:11 -04:00

96 lines
2.4 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", chat.userId, chat.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
saveName: "memberFilterField"
saveId: chat.roomId
placeholderText: qsTr("Filter members")
backgroundColor: theme.chat.roomPane.filterMembers.background
bordered: false
opacity: width >= 16 ? 1 : 0
onTextChanged: filterLimiter.restart()
Layout.fillWidth: true
Layout.fillHeight: true
Behavior on opacity { HOpacityAnimator {} }
}
HButton {
id: inviteButton
icon.name: "room-send-invite"
backgroundColor: theme.chat.roomPane.inviteButton.background
enabled: chat.roomInfo.can_invite
toolTip.text:
enabled ?
qsTr("Invite members to this room") :
qsTr("No permission to invite members in this room")
topPadding: 0 // XXX
bottomPadding: 0
onClicked: Utils.makePopup(
"Popups/InviteToRoomPopup.qml",
chat,
{
userId: chat.userId,
roomId: chat.roomId,
invitingAllowed: Qt.binding(() => inviteButton.enabled),
},
)
// onEnabledChanged: if (openedPopup && ! enabled)
Layout.fillHeight: true
}
}
}