Skip to content
Snippets Groups Projects
UserProfile.qml 7.31 KiB
Newer Older
  • Learn to ignore specific revisions
  • import QtQuick 2.9
    import QtQuick.Controls 2.3
    import QtQuick.Layouts 1.2
    import QtQuick.Window 2.3
    
    
    import im.nheko 1.0
    
    
    import "./device-verification"
    
    
    ApplicationWindow{
        property var user_data
        property var colors: currentActivePalette
    
        id:userProfileDialog
    
        height: 650
    
    CH Chethan Reddy's avatar
    CH Chethan Reddy committed
        width: 420
    
        modality:Qt.WindowModal
        Layout.alignment: Qt.AlignHCenter
        palette: colors
    
    
        UserProfileList{
            id: userProfileList
            userId: user_data.userId
            onUserIdChanged : {
                userProfileList.updateDeviceList()
            }
            onDeviceListUpdated : {
                modelDeviceList.deviceList = userProfileList
            }
    
        Component {
    		id: deviceVerificationDialog
    		DeviceVerification {}
    	}
    
            id: deviceVerificationFlow
    
        background: Item{
            id: userProfileItem
            width: userProfileDialog.width
            height: userProfileDialog.height
    
    CH Chethan Reddy's avatar
    CH Chethan Reddy committed
    
    
            // Layout.fillHeight : true
    
    
            ColumnLayout{
                anchors.fill: userProfileItem
                width: userProfileDialog.width
                spacing: 10
    
                Avatar{
                    id: userProfileAvatar
    
                    url:chat.model.avatarUrl(user_data.userId).replace("mxc://", "image://MxcImage/")
    
                    height: 130
                    width: 130
                    displayName: modelData.userName
    
    CH Chethan Reddy's avatar
    CH Chethan Reddy committed
    		        userid: modelData.userId
    
                    Layout.alignment: Qt.AlignHCenter
    
    CH Chethan Reddy's avatar
    CH Chethan Reddy committed
                    Layout.margins : {
                        top: 10
                    }
    
                }
    
                Label{
                    id: userProfileName
    
                    text: user_data.userName
    
                    fontSizeMode: Text.HorizontalFit
    
    CH Chethan Reddy's avatar
    CH Chethan Reddy committed
                    font.pixelSize: 20
    
    Nicolas Werner's avatar
    Nicolas Werner committed
                    color:TimelineManager.userColor(modelData.userId, colors.window)
    
    CH Chethan Reddy's avatar
    CH Chethan Reddy committed
                    font.bold: true
    
                    Layout.alignment: Qt.AlignHCenter
                }
    
                Label{
                    id: matrixUserID
    
                    text: user_data.userId
    
                    fontSizeMode: Text.HorizontalFit
    
    CH Chethan Reddy's avatar
    CH Chethan Reddy committed
                    font.pixelSize: 15
    
    CH Chethan Reddy's avatar
    CH Chethan Reddy committed
                    color:colors.text
    
                    Layout.alignment: Qt.AlignHCenter
                }
    
    
                RowLayout{
                    Layout.alignment: Qt.AlignHCenter
                    ImageButton{
                        image:":/icons/icons/ui/do-not-disturb-rounded-sign.png"
                        Layout.margins: {
                            left: 5
                            right: 5
                        }
                        ToolTip.visible: hovered
    			        ToolTip.text: qsTr("Ban the user")
                        onClicked : {
                            userProfileList.banUser()
                        }
                    }
                    // ImageButton{
                    //     image:":/icons/icons/ui/volume-off-indicator.png"
                    //     Layout.margins: {
                    //         left: 5
                    //         right: 5
                    //     }
                    //     ToolTip.visible: hovered
    			    //     ToolTip.text: qsTr("Ignore messages from this user")
                    //     onClicked : {
                    //         userProfileList.ignoreUser()
                    //     }
                    // }
                    ImageButton{
    
                        image:":/icons/icons/ui/black-bubble-speech.png"
    
                        Layout.margins: {
                            left: 5
                            right: 5
                        }
                        ToolTip.visible: hovered
    
    			        ToolTip.text: qsTr("Start a private chat")
    
                        onClicked : {
    
                            userProfileList.startChat()
    
                        image:":/icons/icons/ui/round-remove-button.png"
    
                        Layout.margins: {
                            left: 5
                            right: 5
                        }
                        ToolTip.visible: hovered
    
    			        ToolTip.text: qsTr("Kick the user")
    
                        onClicked : {
    
                            userProfileList.kickUser()
    
                ScrollView {
    
                    implicitHeight: userProfileDialog.height/2 + 20
    
                    implicitWidth: userProfileDialog.width-20
                    clip: true
                    Layout.alignment: Qt.AlignHCenter
    
    
                    ListView{
                        id: deviceList
                        anchors.fill: parent
                        clip: true
    
    CH Chethan Reddy's avatar
    CH Chethan Reddy committed
                        spacing: 4
    
    
                        model: UserProfileModel{
                            id: modelDeviceList
                        } 
    
                        delegate: RowLayout{
                            width: parent.width
    
    CH Chethan Reddy's avatar
    CH Chethan Reddy committed
                            Layout.margins : {
                                top : 50
                            }
    
                            ColumnLayout{
                                Text{
                                    Layout.fillWidth: true
                                    color: colors.text
    
    CH Chethan Reddy's avatar
    CH Chethan Reddy committed
                                    font.bold: true
    
                                    Layout.alignment: Qt.AlignRight
                                    text: deviceID
                                }
                                Text{
                                    Layout.fillWidth: true
                                    color:colors.text
                                    Layout.alignment: Qt.AlignRight
                                    text: displayName
                                }
    
                                text:"Verify"
                                onClicked: {
    
                                    var newFlow = deviceVerificationFlow.createObject(userProfileDialog,
                                    {userId : user_data.userId,sender: true,deviceId : model.deviceID});
                                    deviceVerificationList.add(newFlow.tranId);
    
    								var dialog = deviceVerificationDialog.createObject(userProfileDialog, 
    
    CH Chethan Reddy's avatar
    CH Chethan Reddy committed
                                        {flow: newFlow});
    
    CH Chethan Reddy's avatar
    CH Chethan Reddy committed
                                Layout.margins:{
                                    right: 10
                                }
    
    CH Chethan Reddy's avatar
    CH Chethan Reddy committed
                                palette {
                                    button: "white"
                                }
    
                                contentItem: Text {
                                    text: verifyButton.text
    
    CH Chethan Reddy's avatar
    CH Chethan Reddy committed
                                    color: "black"
    
                                    horizontalAlignment: Text.AlignHCenter
                                    verticalAlignment: Text.AlignVCenter
                                }
    
                    text:"OK"
                    onClicked: userProfileDialog.close()
    
                    Layout.alignment: Qt.AlignRight | Qt.AlignBottom
    
    CH Chethan Reddy's avatar
    CH Chethan Reddy committed
                    Layout.margins : {
    
    CH Chethan Reddy's avatar
    CH Chethan Reddy committed
                        right : 10
                        bottom : 10
                    }
    
                    palette {
                        button: "white"
    
                    contentItem: Text {
                        text: okbutton.text
    
    CH Chethan Reddy's avatar
    CH Chethan Reddy committed
                        color: "black"
    
                        horizontalAlignment: Text.AlignHCenter
                        verticalAlignment: Text.AlignVCenter
                    }
    
                }
            }
    
            Item { Layout.fillHeight: true }
        }
    }