diff --git a/resources/qml/TimelineView.qml b/resources/qml/TimelineView.qml
index 3618140a..ec634878 100644
--- a/resources/qml/TimelineView.qml
+++ b/resources/qml/TimelineView.qml
@@ -106,17 +106,23 @@ Page {
}
Connections {
target: TimelineManager
- onNewDeviceVerificationRequest: {
+ function onNewDeviceVerificationRequest(flow) {
flow.userId = userId;
flow.sender = false;
flow.deviceId = deviceId;
flow.tranId = transactionId;
deviceVerificationList.add(flow.tranId);
- var dialog = deviceVerificationDialog.createObject(timelineRoot,
- {flow: flow});
+ var dialog = deviceVerificationDialog.createObject(timelineRoot, {flow: flow});
dialog.show();
}
}
+ Connections {
+ target: TimelineManager.timeline
+ function onOpenProfile(profile) {
+ var userProfile = userProfileComponent.createObject(timelineRoot,{profile: profile});
+ userProfile.show();
+ }
+ }
Label {
visible: !TimelineManager.timeline && !TimelineManager.isInitialSync
@@ -293,10 +299,7 @@ Page {
MouseArea {
anchors.fill: parent
- onClicked: {
- userProfile = userProfileComponent.createObject(timelineRoot,{user_data: modelData,avatarUrl:chat.model.avatarUrl(modelData.userId)});
- userProfile.show();
- }
+ onClicked: chat.model.openUserProfile(modelData.userId)
cursorShape: Qt.PointingHandCursor
propagateComposedEvents: true
}
@@ -311,10 +314,7 @@ Page {
MouseArea {
anchors.fill: parent
Layout.alignment: Qt.AlignHCenter
- onClicked: {
- userProfile = userProfileComponent.createObject(timelineRoot,{user_data: modelData,avatarUrl:chat.model.avatarUrl(modelData.userId)});
- userProfile.show();
- }
+ onClicked: chat.model.openUserProfile(modelData.userId)
cursorShape: Qt.PointingHandCursor
propagateComposedEvents: true
}
diff --git a/resources/qml/UserProfile.qml b/resources/qml/UserProfile.qml
index db44ec15..df54367b 100644
--- a/resources/qml/UserProfile.qml
+++ b/resources/qml/UserProfile.qml
@@ -8,220 +8,211 @@ import im.nheko 1.0
import "./device-verification"
ApplicationWindow{
- property var user_data
- property var avatarUrl
- property var colors: currentActivePalette
-
- id:userProfileDialog
- height: 650
- width: 420
- modality:Qt.WindowModal
- Layout.alignment: Qt.AlignHCenter
- palette: colors
-
- Component {
+ property var profile
+
+ id: userProfileDialog
+ height: 650
+ width: 420
+ modality: Qt.WindowModal
+ Layout.alignment: Qt.AlignHCenter
+ palette: colors
+
+ Component {
id: deviceVerificationDialog
DeviceVerification {}
}
- Component{
- id: deviceVerificationFlow
- DeviceVerificationFlow {}
- }
-
- background: Item{
- id: userProfileItem
- width: userProfileDialog.width
- height: userProfileDialog.height
-
- // Layout.fillHeight : true
-
- ColumnLayout{
- anchors.fill: userProfileItem
- width: userProfileDialog.width
- spacing: 10
-
- Avatar{
- id: userProfileAvatar
- url: avatarUrl.replace("mxc://", "image://MxcImage/")
- height: 130
- width: 130
- displayName: user_data.userName
- userid: user_data.userId
- Layout.alignment: Qt.AlignHCenter
- Layout.margins : {
- top: 10
- }
- }
-
- Label{
- id: userProfileName
- text: user_data.userName
- fontSizeMode: Text.HorizontalFit
- font.pixelSize: 20
- color:TimelineManager.userColor(user_data.userId, colors.window)
- font.bold: true
- Layout.alignment: Qt.AlignHCenter
- }
-
- Label{
- id: matrixUserID
- text: user_data.userId
- fontSizeMode: Text.HorizontalFit
- font.pixelSize: 15
- 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 : {
- modelDeviceList.deviceList.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 : {
- // modelDeviceList.deviceList.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 : {
- modelDeviceList.deviceList.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 : {
- modelDeviceList.deviceList.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
- spacing: 4
-
- model: UserProfileModel{
- id: modelDeviceList
- deviceList.userId : user_data.userId
- }
-
- delegate: RowLayout{
- width: parent.width
- Layout.margins : {
- top : 50
- }
- ColumnLayout{
- RowLayout{
- Text{
- Layout.fillWidth: true
- color: colors.text
- font.bold: true
- Layout.alignment: Qt.AlignLeft
- text: deviceID
- }
- Text{
- Layout.fillWidth: true
- color:colors.text
- Layout.alignment: Qt.AlignLeft
- text: (verified_status == UserProfileList.VERIFIED?"V":(verified_status == UserProfileList.UNVERIFIED?"NV":"B"))
- }
- }
- Text{
- Layout.fillWidth: true
- color:colors.text
- Layout.alignment: Qt.AlignRight
- text: displayName
- }
- }
- Button{
- id: verifyButton
- 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,
- {flow: newFlow});
- 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
- }
- }
- }
-
- Item { Layout.fillHeight: true }
- }
+ Component{
+ id: deviceVerificationFlow
+ DeviceVerificationFlow {}
+ }
+
+ background: Item{
+ id: userProfileItem
+ width: userProfileDialog.width
+ height: userProfileDialog.height
+
+ // Layout.fillHeight : true
+
+ ColumnLayout{
+ anchors.fill: userProfileItem
+ width: userProfileDialog.width
+ 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
+ }
+ }
+
+ 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.userid
+ fontSizeMode: Text.HorizontalFit
+ font.pixelSize: 15
+ 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 : {
+ 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 + 20
+ 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{
+ RowLayout{
+ 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.AlignLeft
+ text: (model.verificationStatus == VerificationStatus.VERIFIED?"V":(model.verificationStatus == VerificationStatus.UNVERIFIED?"NV":"B"))
+ }
+ }
+ Text{
+ Layout.fillWidth: true
+ color:colors.text
+ Layout.alignment: Qt.AlignRight
+ text: model.deviceName
+ }
+ }
+ Button{
+ id: verifyButton
+ text:"Verify"
+ onClicked: {
+ var newFlow = deviceVerificationFlow.createObject(userProfileDialog,
+ {userId : profile.userid, sender: true, deviceId : model.deviceID});
+ deviceVerificationList.add(newFlow.tranId);
+ var dialog = deviceVerificationDialog.createObject(userProfileDialog, {flow: newFlow});
+ 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
+ }
+ }
+ }
+
+ Item { Layout.fillHeight: true }
+ }
}
|