summary refs log tree commit diff
diff options
context:
space:
mode:
authorLoren Burkholder <computersemiexpert@outlook.com>2021-11-13 13:46:29 -0500
committerLoren Burkholder <computersemiexpert@outlook.com>2021-11-16 18:40:48 -0500
commit8ca1b93abb881a133cd12364d4d9e2426e682990 (patch)
tree35828e768f8d35fc2f6b5a826a352b7224848de6
parentMerge pull request #807 from LorenDB/fluentIcons (diff)
downloadnheko-8ca1b93abb881a133cd12364d4d9e2426e682990.tar.xz
Switch member dialog to using ItemDelegate
-rw-r--r--resources/qml/dialogs/RoomMembers.qml109
1 files changed, 63 insertions, 46 deletions
diff --git a/resources/qml/dialogs/RoomMembers.qml b/resources/qml/dialogs/RoomMembers.qml
index 6c8d1383..dd0c1db6 100644
--- a/resources/qml/dialogs/RoomMembers.qml
+++ b/resources/qml/dialogs/RoomMembers.qml
@@ -85,67 +85,84 @@ ApplicationWindow {
                     enabled: !Settings.mobileMode
                 }
 
-                delegate: RowLayout {
+                delegate: ItemDelegate {
                     id: del
 
+                    onClicked: Rooms.currentRoom.openUserProfile(model.mxid)
+                    padding: Nheko.paddingMedium
                     width: ListView.view.width
-                    spacing: Nheko.paddingMedium
+                    height: memberLayout.implicitHeight
+                    background: Rectangle {
+                        color: roomMembersRoot.color
+                    }
 
-                    Avatar {
-                        id: avatar
+                    RowLayout {
+                        id: memberLayout
 
-                        width: Nheko.avatarSize
-                        height: Nheko.avatarSize
-                        userid: model.mxid
-                        url: model.avatarUrl.replace("mxc://", "image://MxcImage/")
-                        displayName: model.displayName
-                        onClicked: Rooms.currentRoom.openUserProfile(model.mxid)
-                    }
+                        spacing: Nheko.paddingMedium
 
-                    ColumnLayout {
-                        spacing: Nheko.paddingSmall
+                        Avatar {
+                            id: avatar
 
-                        ElidedLabel {
-                            fullText: model.displayName
-                            color: TimelineManager.userColor(model ? model.mxid : "", Nheko.colors.window)
-                            font.pixelSize: fontMetrics.font.pixelSize
-                            elideWidth: del.width - Nheko.paddingMedium * 2 - avatar.width - encryptInd.width
+                            width: Nheko.avatarSize
+                            height: Nheko.avatarSize
+                            userid: model.mxid
+                            url: model.avatarUrl.replace("mxc://", "image://MxcImage/")
+                            displayName: model.displayName
+                            enabled: false
                         }
 
-                        ElidedLabel {
-                            fullText: model.mxid
-                            color: Nheko.colors.buttonText
-                            font.pixelSize: Math.ceil(fontMetrics.font.pixelSize * 0.9)
-                            elideWidth: del.width - Nheko.paddingMedium * 2 - avatar.width - encryptInd.width
+                        ColumnLayout {
+                            spacing: Nheko.paddingSmall
+
+                            ElidedLabel {
+                                fullText: model.displayName
+                                color: TimelineManager.userColor(model ? model.mxid : "", Nheko.colors.window)
+                                font.pixelSize: fontMetrics.font.pixelSize
+                                elideWidth: del.width - Nheko.paddingMedium * 2 - avatar.width - encryptInd.width
+                            }
+
+                            ElidedLabel {
+                                fullText: model.mxid
+                                color: Nheko.colors.buttonText
+                                font.pixelSize: Math.ceil(fontMetrics.font.pixelSize * 0.9)
+                                elideWidth: del.width - Nheko.paddingMedium * 2 - avatar.width - encryptInd.width
+                            }
+
+                            Item {
+                                Layout.fillHeight: true
+                                Layout.fillWidth: true
+                            }
+
                         }
 
-                        Item {
-                            Layout.fillHeight: true
-                            Layout.fillWidth: true
+                        EncryptionIndicator {
+                            id: encryptInd
+
+                            Layout.alignment: Qt.AlignRight
+                            visible: room.isEncrypted
+                            encrypted: room.isEncrypted
+                            trust: encrypted ? model.trustlevel : Crypto.Unverified
+                            ToolTip.text: {
+                                if (!encrypted)
+                                    return qsTr("This room is not encrypted!");
+
+                                switch (trust) {
+                                case Crypto.Verified:
+                                    return qsTr("This user is verified.");
+                                case Crypto.TOFU:
+                                    return qsTr("This user isn't verified, but is still using the same master key from the first time you met.");
+                                default:
+                                    return qsTr("This user has unverified devices!");
+                                }
+                            }
                         }
 
                     }
 
-                    EncryptionIndicator {
-                        id: encryptInd
-
-                        Layout.alignment: Qt.AlignRight
-                        visible: room.isEncrypted
-                        encrypted: room.isEncrypted
-                        trust: encrypted ? model.trustlevel : Crypto.Unverified
-                        ToolTip.text: {
-                            if (!encrypted)
-                                return qsTr("This room is not encrypted!");
-
-                            switch (trust) {
-                            case Crypto.Verified:
-                                return qsTr("This user is verified.");
-                            case Crypto.TOFU:
-                                return qsTr("This user isn't verified, but is still using the same master key from the first time you met.");
-                            default:
-                                return qsTr("This user has unverified devices!");
-                            }
-                        }
+                    CursorShape {
+                        anchors.fill: parent
+                        cursorShape: Qt.PointingHandCursor
                     }
 
                 }