From b934cf329c61c8790e295a16553a231ba8eeb209 Mon Sep 17 00:00:00 2001
From: Nicolas Werner <nicolas.werner@hotmail.de>
Date: Sun, 13 Sep 2020 18:13:08 +0200
Subject: [PATCH] Clean up UserProfile a bit

---
 resources/qml/UserProfile.qml | 340 ++++++++++++++--------------------
 1 file changed, 143 insertions(+), 197 deletions(-)

diff --git a/resources/qml/UserProfile.qml b/resources/qml/UserProfile.qml
index 374d9bf88..b5a5916ad 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
-			}
+		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
-			}
+		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
-				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();
-				}
+		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
-				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()
-					}
+		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()
 				}
-				// 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/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()
 				}
-				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()
-					}
+			}
+			ImageButton{
+				image:":/icons/icons/ui/round-remove-button.png"
+				hoverEnabled: true
+				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
 
-				ListView{
-					id: devicelist
-					anchors.fill: parent
-					clip: true
-					spacing: 4
+			Layout.fillHeight: true
+			Layout.minimumHeight: 200
+			Layout.fillWidth: true
 
-					model: profile.deviceList
+			clip: true
+			spacing: 8
+			boundsBehavior: Flickable.StopAtBounds
 
-					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
-								}
-							}
-						}
-					}
-				}
-			}
+			model: profile.deviceList
 
-			Button{
-				id: okbutton
-				text:"OK"
-				onClicked: userProfileDialog.close()
+			delegate: RowLayout{
+				width: parent.width
+				spacing: 4
 
-				Layout.alignment: Qt.AlignRight | Qt.AlignBottom
+				ColumnLayout{
+					spacing: 0
+					Text{
+						Layout.fillWidth: true
+						Layout.alignment: Qt.AlignLeft
 
-				Layout.margins : {
-					right : 10
-					bottom: 5
-				}
+						elide: Text.ElideRight
+						color: colors.text
+						font.bold: true
+						text: model.deviceId
+					}
+					Text{
+						Layout.fillWidth: true
+						Layout.alignment: Qt.AlignRight
 
-				palette {
-					button: "white"
+						elide: Text.ElideRight
+						color:colors.text
+						text: model.deviceName
+					}
 				}
 
-				contentItem: Text {
-					text: okbutton.text
-					color: "black"
-					horizontalAlignment: Text.AlignHCenter
-					verticalAlignment: Text.AlignVCenter
+				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
 
-		Item { Layout.fillHeight: true }
+		onAccepted: userProfileDialog.close()
 	}
 }
-- 
GitLab