220 lines
7.9 KiB
QML
220 lines
7.9 KiB
QML
import QtQuick 2.15
|
|
import QtQuick.Controls 2.15
|
|
|
|
import StatusQ.Core.Utils 0.1 as StatusQUtils
|
|
import StatusQ.Popups 0.1
|
|
|
|
import shared 1.0
|
|
import shared.controls.chat 1.0
|
|
import shared.controls.chat.menuItems 1.0
|
|
import shared.status 1.0
|
|
import utils 1.0
|
|
|
|
StatusMenu {
|
|
id: root
|
|
|
|
property string compressedPubKey: ""
|
|
property string displayName: ""
|
|
property string userIcon: ""
|
|
property int trustStatus: Constants.trustStatus.unknown
|
|
property int contactType: Constants.contactType.nonContact
|
|
property int onlineStatus: Constants.onlineStatus.unknown
|
|
property int profileType: Constants.profileType.regular
|
|
property bool ensVerified: false
|
|
property bool hasLocalNickname: false
|
|
property int chatType: Constants.chatType.unknown
|
|
property bool isAdmin: false
|
|
property var emojiHash: []
|
|
property var colorHash: []
|
|
property int colorId
|
|
|
|
signal openProfileClicked
|
|
signal createOneToOneChat
|
|
signal reviewContactRequest
|
|
signal sendContactRequest
|
|
signal editNickname
|
|
signal removeNickname
|
|
signal unblockContact
|
|
signal markAsTrusted
|
|
signal removeTrustedMark
|
|
signal markAsUntrusted
|
|
signal removeTrustStatus
|
|
signal removeContact
|
|
signal blockContact
|
|
signal removeFromGroup
|
|
|
|
ProfileHeader {
|
|
displayNameVisible: false
|
|
displayNamePlusIconsVisible: true
|
|
editButtonVisible: false
|
|
displayName: StatusQUtils.Emoji.parse(root.displayName, StatusQUtils.Emoji.size.verySmall)
|
|
compressedPubKey: root.compressedPubKey
|
|
emojiHash: root.emojiHash
|
|
colorHash: root.colorHash
|
|
colorId: root.colorId
|
|
icon: root.userIcon
|
|
trustStatus: root.profileType === Constants.profileType.regular ? root.trustStatus : Constants.trustStatus.unknown
|
|
isContact: root.profileType === Constants.profileType.regular ? root.contactType === Constants.contactType.contact : false
|
|
isBlocked: root.profileType === Constants.profileType.blocked
|
|
isCurrentUser: root.profileType === Constants.profileType.self
|
|
userIsEnsVerified: root.ensVerified
|
|
isBridgedAccount: root.profileType === Constants.profileType.bridged
|
|
Binding on onlineStatus {
|
|
value: root.onlineStatus
|
|
when: root.profileType !== Constants.profileType.bridged
|
|
}
|
|
}
|
|
|
|
StatusMenuSeparator {
|
|
visible: root.profileType !== Constants.profileType.bridged
|
|
topPadding: root.topPadding
|
|
}
|
|
|
|
ViewProfileMenuItem {
|
|
id: viewProfileAction
|
|
objectName: "viewProfile_StatusItem"
|
|
enabled: root.profileType !== Constants.profileType.bridged
|
|
onTriggered: {
|
|
root.openProfileClicked()
|
|
root.close()
|
|
}
|
|
}
|
|
|
|
// Send Message
|
|
SendMessageMenuItem {
|
|
id: sendMessageMenuItem
|
|
objectName: "sendMessage_StatusItem"
|
|
enabled: root.profileType === Constants.profileType.regular && root.contactType === Constants.contactType.contact
|
|
onTriggered: {
|
|
root.createOneToOneChat()
|
|
root.close()
|
|
}
|
|
}
|
|
|
|
// Mark as trusted
|
|
StatusAction {
|
|
objectName: "markAsTrusted_StatusItem"
|
|
enabled: root.profileType === Constants.profileType.regular && root.contactType === Constants.contactType.contact && root.trustStatus !== Constants.trustStatus.trusted
|
|
text: qsTr("Mark as trusted")
|
|
icon.name: "checkmark-circle"
|
|
onTriggered: root.markAsTrusted()
|
|
}
|
|
|
|
// Review Contact Request
|
|
StatusAction {
|
|
text: qsTr("Review contact request")
|
|
objectName: "reviewContactRequest_StatusItem"
|
|
icon.name: "add-contact"
|
|
enabled: root.profileType === Constants.profileType.regular && root.contactType === Constants.contactType.contactRequestReceived
|
|
onTriggered: root.reviewContactRequest()
|
|
}
|
|
|
|
// Send Contact Request
|
|
SendContactRequestMenuItem {
|
|
id: sendContactRequestMenuItem
|
|
objectName: "sendContactRequest_StatusItem"
|
|
enabled: root.profileType === Constants.profileType.regular && root.contactType === Constants.contactType.nonContact
|
|
onTriggered: root.sendContactRequest()
|
|
}
|
|
|
|
// Edit Nickname
|
|
StatusAction {
|
|
id: renameAction
|
|
objectName: "rename_StatusItem"
|
|
enabled: root.profileType === Constants.profileType.blocked || root.profileType === Constants.profileType.regular
|
|
text: root.hasLocalNickname ? qsTr("Edit nickname") : qsTr("Add nickname")
|
|
icon.name: "edit_pencil"
|
|
onTriggered: root.editNickname()
|
|
}
|
|
|
|
StatusMenuSeparator {
|
|
topPadding: root.topPadding
|
|
visible: root.profileType !== Constants.profileType.bridged &&
|
|
(removeNicknameAction.enabled || unblockAction.enabled || markUntrustworthyMenuItem.enabled || removeUntrustworthyMarkMenuItem.enabled || removeContactAction.enabled || blockMenuItem.enabled)
|
|
}
|
|
|
|
// Remove Nickname
|
|
StatusAction {
|
|
id: removeNicknameAction
|
|
text: qsTr("Remove nickname")
|
|
icon.name: "delete"
|
|
type: StatusAction.Type.Danger
|
|
enabled: (root.profileType === Constants.profileType.blocked || root.profileType === Constants.profileType.regular) && root.hasLocalNickname
|
|
onTriggered: root.removeNickname()
|
|
}
|
|
|
|
// Remove trusted mark
|
|
StatusAction {
|
|
objectName: "removeTrustedMark_StatusItem"
|
|
enabled: root.profileType === Constants.profileType.regular && root.contactType === Constants.contactType.contact && root.trustStatus === Constants.trustStatus.trusted
|
|
text: qsTr("Remove trusted mark")
|
|
icon.name: "checkmark-circle"
|
|
type: StatusAction.Type.Danger
|
|
onTriggered: root.removeTrustedMark()
|
|
}
|
|
|
|
// Unblock User
|
|
StatusAction {
|
|
id: unblockAction
|
|
objectName: "unblock_StatusItem"
|
|
enabled: root.profileType === Constants.profileType.blocked
|
|
text: qsTr("Unblock user")
|
|
icon.name: "cancel"
|
|
type: StatusAction.Type.Danger
|
|
onTriggered: root.unblockContact()
|
|
}
|
|
|
|
StatusAction {
|
|
text: qsTr("Remove from group")
|
|
objectName: "removeFromGroup_StatusItem"
|
|
icon.name: "remove-contact"
|
|
type: StatusAction.Type.Danger
|
|
enabled: root.isAdmin && root.profileType !== Constants.profileType.self && root.profileType !== Constants.profileType.bridged && root.chatType === Constants.chatType.privateGroupChat
|
|
onTriggered: root.removeFromGroup()
|
|
}
|
|
|
|
// Mark as Untrusted
|
|
StatusAction {
|
|
id: markUntrustworthyMenuItem
|
|
objectName: "markUntrustworthy_StatusItem"
|
|
text: qsTr("Mark as untrusted")
|
|
icon.name: "warning"
|
|
type: StatusAction.Type.Danger
|
|
enabled: root.profileType === Constants.profileType.regular && root.trustStatus !== Constants.trustStatus.untrustworthy
|
|
onTriggered: root.markAsUntrusted()
|
|
}
|
|
|
|
// Remove Untrustworthy Mark
|
|
StatusAction {
|
|
id: removeUntrustworthyMarkMenuItem
|
|
objectName: "removeUntrustworthy_StatusItem"
|
|
text: qsTr("Remove untrusted mark")
|
|
icon.name: "warning"
|
|
type: StatusAction.Type.Danger
|
|
enabled: root.profileType === Constants.profileType.regular && root.trustStatus === Constants.trustStatus.untrustworthy
|
|
onTriggered: root.removeTrustStatus()
|
|
}
|
|
|
|
// Remove Contact
|
|
StatusAction {
|
|
id: removeContactAction
|
|
text: qsTr("Remove contact")
|
|
objectName: "removeContact_StatusItem"
|
|
icon.name: "remove-contact"
|
|
type: StatusAction.Type.Danger
|
|
enabled: root.profileType === Constants.profileType.regular && root.contactType === Constants.contactType.contact
|
|
onTriggered: root.removeContact()
|
|
}
|
|
|
|
// Block User
|
|
StatusAction {
|
|
id: blockMenuItem
|
|
objectName: "blockUser_StatusItem"
|
|
text: qsTr("Block user")
|
|
icon.name: "cancel"
|
|
type: StatusAction.Type.Danger
|
|
enabled: root.profileType === Constants.profileType.regular
|
|
onTriggered: root.blockContact()
|
|
}
|
|
}
|