summary refs log tree commit diff
path: root/resources/qml
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2020-07-04 04:24:28 +0200
committerCH Chethan Reddy <40890937+Chethan2k1@users.noreply.github.com>2020-07-30 22:10:27 +0530
commit08028d5c57d134fb3d0ca9004730f0b2c99e5e67 (patch)
tree1268c0d9fdfd47966fb386028098ce6634195479 /resources/qml
parentSome issue with UserProfile (diff)
downloadnheko-08028d5c57d134fb3d0ca9004730f0b2c99e5e67.tar.xz
Refactor UserProfile
Diffstat (limited to 'resources/qml')
-rw-r--r--resources/qml/TimelineView.qml22
-rw-r--r--resources/qml/UserProfile.qml417
2 files changed, 215 insertions, 224 deletions
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 } + } }