moment/src/gui/Pages/Chat/RoomPane/MemberDelegate.qml

118 lines
3.4 KiB
QML
Raw Normal View History

2019-12-19 07:46:16 -04:00
// SPDX-License-Identifier: LGPL-3.0-or-later
import QtQuick 2.12
2019-12-27 09:06:42 -04:00
import Clipboard 0.1
2019-12-18 04:53:08 -04:00
import "../../../Base"
import "../../../Base/HTile"
import "../../../Popups"
2019-05-12 13:17:42 -04:00
HTile {
id: member
2020-03-13 01:09:04 -04:00
backgroundColor: theme.chat.roomPane.listView.member.background
contentOpacity:
2020-03-13 01:09:04 -04:00
model.invited ? theme.chat.roomPane.listView.member.invitedOpacity : 1
2019-05-12 13:17:42 -04:00
contentItem: ContentRow {
tile: member
HUserAvatar {
id: avatar
userId: model.id
displayName: model.display_name
mxc: model.avatar_url
powerLevel: model.power_level
shiftMembershipIconPosition: ! roomPane.collapsed
invited: model.invited
compact: member.compact
}
HColumnLayout {
TitleLabel {
text: model.display_name || model.id
color:
member.hovered ?
utils.nameColor(
model.display_name || model.id.substring(1)
) :
theme.chat.roomPane.listView.member.name
Behavior on color { HColorAnimation {} }
}
SubtitleLabel {
tile: member
text: model.display_name ? model.id : ""
color: theme.chat.roomPane.listView.member.subtitle
}
}
}
2019-11-30 05:12:00 -04:00
2019-12-12 08:32:50 -04:00
contextMenu: HMenu {
HMenuItem {
icon.name: "copy-user-id"
text: qsTr("Copy user ID")
onTriggered: Clipboard.text = model.id
2019-12-12 08:32:50 -04:00
}
2020-04-19 11:12:35 -04:00
HMenuItemPopupSpawner {
icon.name: "room-kick"
icon.color: theme.colors.negativeBackground
text: model.invited ? qsTr("Disinvite") : qsTr("Kick")
enabled: false
2020-04-19 11:12:35 -04:00
popup: "Popups/RemoveMemberPopup.qml"
2020-04-19 11:12:35 -04:00
popupParent: chat
properties: ({
userId: chat.userId,
roomId: chat.roomId,
targetUserId: model.id,
targetDisplayName: model.display_name,
operation:
model.invited ?
RemoveMemberPopup.Operation.Disinvite :
RemoveMemberPopup.Operation.Kick,
2020-04-19 11:12:35 -04:00
})
Component.onCompleted: py.callClientCoro(
chat.userId,
"can_kick",
[chat.roomId, model.id],
can => { enabled = can },
)
2020-04-19 11:12:35 -04:00
}
HMenuItemPopupSpawner {
icon.name: "room-ban"
icon.color: theme.colors.negativeBackground
text: qsTr("Ban")
enabled: false
popup: "Popups/RemoveMemberPopup.qml"
popupParent: chat
properties: ({
userId: chat.userId,
roomId: chat.roomId,
targetUserId: model.id,
targetDisplayName: model.display_name,
operation: RemoveMemberPopup.Operation.Ban,
})
Component.onCompleted: py.callClientCoro(
chat.userId,
"can_ban",
[chat.roomId, model.id],
can => { enabled = can },
)
}
2019-12-12 08:32:50 -04:00
}
2019-11-30 05:12:00 -04:00
Behavior on contentOpacity { HNumberAnimation {} }
Behavior on spacing { HNumberAnimation {} }
Binding on spacing {
value: (roomPane.minimumSize - avatar.width) / 2
when: avatar && roomPane.width < avatar.width + theme.spacing * 2
}
2019-05-12 13:17:42 -04:00
}