From b934cf329c61c8790e295a16553a231ba8eeb209 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Sun, 13 Sep 2020 18:13:08 +0200 Subject: [PATCH] Clean up UserProfile a bit --- resources/qml/UserProfile.qml | 370 +++++++++++++++------------------- 1 file changed, 158 insertions(+), 212 deletions(-) diff --git a/resources/qml/UserProfile.qml b/resources/qml/UserProfile.qml index 374d9bf8..b5a5916a 100644 --- a/resources/qml/UserProfile.qml +++ b/resources/qml/UserProfile.qml @@ -13,13 +13,14 @@ ApplicationWindow{ id: userProfileDialog height: 650 width: 420 + minimumHeight: 420 + modality: Qt.WindowModal - Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter palette: colors Connections{ target: deviceVerificationList - onUpdateProfile: { + function onUpdateProfile() { profile.fetchDeviceList(profile.userid) } } @@ -33,226 +34,171 @@ ApplicationWindow{ DeviceVerificationFlow {} } - Item{ - id: userProfileItem - width: userProfileDialog.width - height: userProfileDialog.height + ColumnLayout{ + id: contentL - // Layout.fillHeight : true + anchors.fill: parent + anchors.margins: 10 - ColumnLayout{ - anchors.fill: userProfileItem - width: userProfileDialog.width - spacing: 10 + spacing: 10 - Avatar { - url: profile.avatarUrl.replace("mxc://", "image://MxcImage/") - height: 130 - width: 130 - displayName: profile.displayName - userid: profile.userid - Layout.alignment: Qt.AlignHCenter - Layout.margins : { - top: 10 + Avatar { + url: profile.avatarUrl.replace("mxc://", "image://MxcImage/") + height: 130 + width: 130 + displayName: profile.displayName + userid: profile.userid + Layout.alignment: Qt.AlignHCenter + } + + Label { + text: profile.displayName + fontSizeMode: Text.HorizontalFit + font.pixelSize: 20 + color: TimelineManager.userColor(profile.userid, colors.window) + font.bold: true + Layout.alignment: Qt.AlignHCenter + } + + MatrixText { + text: profile.userid + font.pixelSize: 15 + Layout.alignment: Qt.AlignHCenter + } + + Button { + id: verifyUserButton + text: "Verify" + Layout.alignment: Qt.AlignHCenter + enabled: profile.isUserVerified?false:true + visible: profile.isUserVerified?false:true + + onClicked: { + var newFlow = profile.createFlow(true); + newFlow.userId = profile.userid; + newFlow.sender = true; + deviceVerificationList.add(newFlow.tranId); + var dialog = deviceVerificationDialog.createObject(userProfileDialog, {flow: newFlow,isRequest: true,tran_id: newFlow.tranId}); + dialog.show(); + } + } + + RowLayout { + Layout.alignment: Qt.AlignHCenter + spacing: 8 + + ImageButton { + image:":/icons/icons/ui/do-not-disturb-rounded-sign.png" + hoverEnabled: true + ToolTip.visible: hovered + ToolTip.text: qsTr("Ban the user") + onClicked : { + profile.banUser() } } - - Label { - text: profile.displayName - fontSizeMode: Text.HorizontalFit - font.pixelSize: 20 - color: TimelineManager.userColor(profile.userid, colors.window) - font.bold: true - Layout.alignment: Qt.AlignHCenter - } - - TextEdit { - text: profile.userid - selectByMouse: true - font.pixelSize: 15 - color: colors.text - Layout.alignment: Qt.AlignHCenter - } - - Button { - id: verifyUserButton - text: "Verify" - Layout.alignment: Qt.AlignHCenter - enabled: profile.isUserVerified?false:true - visible: profile.isUserVerified?false:true - palette { - button: "white" - } - contentItem: Text { - text: verifyUserButton.text - color: "black" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - } - onClicked: { - var newFlow = profile.createFlow(true); - newFlow.userId = profile.userid; - newFlow.sender = true; - deviceVerificationList.add(newFlow.tranId); - var dialog = deviceVerificationDialog.createObject(userProfileDialog, {flow: newFlow,isRequest: true,tran_id: newFlow.tranId}); - dialog.show(); + // 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 : { + // profile.ignoreUser() + // } + // } + ImageButton{ + image:":/icons/icons/ui/black-bubble-speech.png" + hoverEnabled: true + ToolTip.visible: hovered + ToolTip.text: qsTr("Start a private chat") + onClicked : { + profile.startChat() } } - - 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 : { - profile.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 : { - // profile.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 : { - profile.startChat() - } - } - ImageButton{ - image:":/icons/icons/ui/round-remove-button.png" - Layout.margins: { - left: 5 - right: 5 - } - ToolTip.visible: hovered - ToolTip.text: qsTr("Kick the user") - onClicked : { - profile.kickUser() - } - } - } - - ScrollView { - implicitHeight: userProfileDialog.height/2-13 - implicitWidth: userProfileDialog.width-20 - clip: true - Layout.alignment: Qt.AlignHCenter - - ListView{ - id: devicelist - anchors.fill: parent - clip: true - spacing: 4 - - model: profile.deviceList - - delegate: RowLayout{ - width: parent.width - Layout.margins : { - top : 50 - } - ColumnLayout{ - Text{ - Layout.fillWidth: true - color: colors.text - font.bold: true - Layout.alignment: Qt.AlignLeft - text: model.deviceId - } - Text{ - Layout.fillWidth: true - color:colors.text - Layout.alignment: Qt.AlignRight - text: model.deviceName - } - } - RowLayout{ - Image{ - Layout.preferredWidth: 20 - Layout.preferredHeight: 20 - source: ((model.verificationStatus == VerificationStatus.VERIFIED)?"image://colorimage/:/icons/icons/ui/lock.png?green": - ((model.verificationStatus == VerificationStatus.UNVERIFIED)?"image://colorimage/:/icons/icons/ui/unlock.png?yellow": - "image://colorimage/:/icons/icons/ui/unlock.png?red")) - } - Button{ - id: verifyButton - text:(model.verificationStatus != VerificationStatus.VERIFIED)?"Verify":"Unverify" - onClicked: { - var newFlow = profile.createFlow(false); - newFlow.userId = profile.userid; - newFlow.sender = true; - newFlow.deviceId = model.deviceId; - if(model.verificationStatus == VerificationStatus.VERIFIED){ - newFlow.unverify(); - deviceVerificationList.updateProfile(newFlow.userId); - }else{ - deviceVerificationList.add(newFlow.tranId); - var dialog = deviceVerificationDialog.createObject(userProfileDialog, {flow: newFlow,isRequest:false,tran_id: newFlow.tranId}); - dialog.show(); - } - } - Layout.margins:{ - right: 10 - } - palette { - button: "white" - } - contentItem: Text { - text: verifyButton.text - color: "black" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - } - } - } - } - } - } - - Button{ - id: okbutton - text:"OK" - onClicked: userProfileDialog.close() - - Layout.alignment: Qt.AlignRight | Qt.AlignBottom - - Layout.margins : { - right : 10 - bottom: 5 - } - - palette { - button: "white" - } - - contentItem: Text { - text: okbutton.text - color: "black" - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + ImageButton{ + image:":/icons/icons/ui/round-remove-button.png" + hoverEnabled: true + ToolTip.visible: hovered + ToolTip.text: qsTr("Kick the user") + onClicked : { + profile.kickUser() } } } - Item { Layout.fillHeight: true } + ListView{ + id: devicelist + + Layout.fillHeight: true + Layout.minimumHeight: 200 + Layout.fillWidth: true + + clip: true + spacing: 8 + boundsBehavior: Flickable.StopAtBounds + + model: profile.deviceList + + delegate: RowLayout{ + width: parent.width + spacing: 4 + + ColumnLayout{ + spacing: 0 + Text{ + Layout.fillWidth: true + Layout.alignment: Qt.AlignLeft + + elide: Text.ElideRight + color: colors.text + font.bold: true + text: model.deviceId + } + Text{ + Layout.fillWidth: true + Layout.alignment: Qt.AlignRight + + elide: Text.ElideRight + color:colors.text + text: model.deviceName + } + } + + Image{ + Layout.preferredHeight: 16 + Layout.preferredWidth: 16 + + source: ((model.verificationStatus == VerificationStatus.VERIFIED)?"image://colorimage/:/icons/icons/ui/lock.png?green": + ((model.verificationStatus == VerificationStatus.UNVERIFIED)?"image://colorimage/:/icons/icons/ui/unlock.png?yellow": + "image://colorimage/:/icons/icons/ui/unlock.png?red")) + } + Button{ + id: verifyButton + text: (model.verificationStatus != VerificationStatus.VERIFIED)?"Verify":"Unverify" + onClicked: { + var newFlow = profile.createFlow(false); + newFlow.userId = profile.userid; + newFlow.sender = true; + newFlow.deviceId = model.deviceId; + if(model.verificationStatus == VerificationStatus.VERIFIED){ + newFlow.unverify(); + deviceVerificationList.updateProfile(newFlow.userId); + }else{ + deviceVerificationList.add(newFlow.tranId); + var dialog = deviceVerificationDialog.createObject(userProfileDialog, {flow: newFlow,isRequest:false,tran_id: newFlow.tranId}); + dialog.show(); + } + } + } + } + } + } + + footer: DialogButtonBox { + standardButtons: DialogButtonBox.Ok + + onAccepted: userProfileDialog.close() } }