// SPDX-License-Identifier: LGPL-3.0-or-later import QtQuick 2.12 import QtQuick.Layouts 1.12 import SortFilterProxyModel 0.2 import "../../.." import "../../../Base" HColumnLayout { readonly property alias keybindFocusItem: filterField HListView { id: memberList clip: true model: HSortFilterProxyModel { sourceModel: ModelStore.get(chat.userId, chat.roomId, "members") filters: ExpressionFilter { expression: utils.filterMatches( filterField.text, model.display_name, ) } } delegate: MemberDelegate { width: memberList.width } Layout.fillWidth: true Layout.fillHeight: true Rectangle { anchors.fill: parent z: -100 color: theme.chat.roomPane.listView.background } } Rectangle { color: theme.chat.roomPane.bottomBar.background Layout.fillWidth: true Layout.minimumHeight: theme.baseElementsHeight Layout.maximumHeight: Layout.minimumHeight HRowLayout { anchors.fill: parent HTextField { id: filterField saveName: "memberFilterField" saveId: chat.roomId backgroundColor: theme.chat.roomPane.bottomBar.filterMembers.background bordered: false opacity: width >= 16 * theme.uiScale ? 1 : 0 Layout.fillWidth: true Layout.fillHeight: true // FIXME: fails to display sometimes for some reason if // declared normally Component.onCompleted: placeholderText = qsTr("Filter members") Behavior on opacity { HNumberAnimation {} } } HButton { id: inviteButton icon.name: "room-send-invite" backgroundColor: theme.chat.roomPane.bottomBar.inviteButton.background enabled: chat.roomInfo.can_invite toolTip.text: enabled ? qsTr("Invite members to this room") : qsTr("No permission to invite members to this room") onClicked: utils.makePopup( "Popups/InviteToRoomPopup.qml", chat, { userId: chat.userId, roomId: chat.roomId, roomName: chat.roomInfo.display_name, invitingAllowed: Qt.binding(() => inviteButton.enabled), }, ) Layout.fillHeight: true } } } }