2020-06-17 19:18:31 +00:00
|
|
|
import QtQuick 2.13
|
|
|
|
import QtQuick.Controls 2.13
|
|
|
|
import QtQuick.Layouts 1.13
|
2020-06-13 13:49:20 +00:00
|
|
|
import "../../../../../imports"
|
|
|
|
import "../../../../../shared"
|
2020-09-17 15:55:09 +00:00
|
|
|
import "../../../../../shared/status"
|
2020-06-13 13:49:20 +00:00
|
|
|
|
|
|
|
Rectangle {
|
|
|
|
property string name: "Jotaro Kujo"
|
|
|
|
property string address: "0x04d8c07dd137bd1b73a6f51df148b4f77ddaa11209d36e43d8344c0a7d6db1cad6085f27cfb75dd3ae21d86ceffebe4cf8a35b9ce8d26baa19dc264efe6d8f221b"
|
|
|
|
property string identicon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII="
|
2020-09-16 19:52:48 +00:00
|
|
|
property string localNickname: "JoJo"
|
2020-06-16 18:04:56 +00:00
|
|
|
property bool selectable: false
|
2020-06-17 21:54:03 +00:00
|
|
|
property var profileClick: function() {}
|
2020-06-22 12:16:44 +00:00
|
|
|
property bool isContact: true
|
2020-07-24 11:27:26 +00:00
|
|
|
property bool isBlocked: false
|
|
|
|
property string searchStr: ""
|
2020-08-10 11:56:16 +00:00
|
|
|
signal blockContactActionTriggered(name: string, address: string)
|
2020-08-10 12:15:57 +00:00
|
|
|
signal removeContactActionTriggered(address: string)
|
2020-07-24 11:27:26 +00:00
|
|
|
id: container
|
2020-06-13 13:49:20 +00:00
|
|
|
|
2020-07-24 11:27:26 +00:00
|
|
|
visible: isContact && (searchStr == "" || name.includes(searchStr))
|
2020-06-22 12:16:44 +00:00
|
|
|
height: visible ? 64 : 0
|
2020-06-13 13:49:20 +00:00
|
|
|
anchors.right: parent.right
|
|
|
|
anchors.left: parent.left
|
|
|
|
border.width: 0
|
2020-07-02 15:14:31 +00:00
|
|
|
radius: Style.current.radius
|
2020-07-14 22:57:49 +00:00
|
|
|
color: Style.current.transparent
|
2020-06-13 13:49:20 +00:00
|
|
|
|
2020-09-22 14:45:09 +00:00
|
|
|
StatusImageIdenticon {
|
2020-06-13 13:49:20 +00:00
|
|
|
id: accountImage
|
|
|
|
anchors.left: parent.left
|
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
|
|
source: identicon
|
|
|
|
}
|
2020-07-24 11:27:26 +00:00
|
|
|
|
2020-06-19 18:06:58 +00:00
|
|
|
StyledText {
|
2020-06-13 13:49:20 +00:00
|
|
|
id: usernameText
|
|
|
|
text: name
|
|
|
|
elide: Text.ElideRight
|
|
|
|
anchors.right: parent.right
|
2020-07-02 15:14:31 +00:00
|
|
|
anchors.rightMargin: Style.current.padding
|
2020-06-13 13:49:20 +00:00
|
|
|
font.pixelSize: 17
|
|
|
|
anchors.top: accountImage.top
|
2020-07-24 11:27:26 +00:00
|
|
|
anchors.topMargin: Style.current.smallPadding
|
2020-06-13 13:49:20 +00:00
|
|
|
anchors.left: accountImage.right
|
2020-07-02 15:14:31 +00:00
|
|
|
anchors.leftMargin: Style.current.padding
|
2020-06-13 13:49:20 +00:00
|
|
|
}
|
2020-07-24 11:27:26 +00:00
|
|
|
|
|
|
|
Rectangle {
|
|
|
|
property int iconSize: 14
|
|
|
|
id: menuButton
|
|
|
|
height: 32
|
|
|
|
width: 32
|
|
|
|
anchors.top: usernameText.top
|
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
|
|
anchors.right: parent.right
|
|
|
|
radius: 8
|
|
|
|
|
|
|
|
SVGImage {
|
|
|
|
source: "../../../../img/dots-icon.svg"
|
|
|
|
width: 18
|
|
|
|
height: 4
|
|
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
|
|
}
|
|
|
|
|
|
|
|
MouseArea {
|
|
|
|
id: mouseArea
|
|
|
|
property bool menuOpened: false
|
|
|
|
cursorShape: Qt.PointingHandCursor
|
|
|
|
anchors.fill: parent
|
|
|
|
hoverEnabled: true
|
|
|
|
onExited: {
|
|
|
|
menuButton.color = Style.current.white
|
|
|
|
}
|
|
|
|
onEntered: {
|
|
|
|
menuButton.color = Style.current.grey
|
|
|
|
}
|
|
|
|
onClicked: {
|
|
|
|
menuOpened = true
|
|
|
|
contactContextMenu.popup()
|
|
|
|
}
|
|
|
|
|
|
|
|
PopupMenu {
|
|
|
|
id: contactContextMenu
|
|
|
|
hasArrow: false
|
|
|
|
onClosed: {
|
|
|
|
mouseArea.menuOpened = false
|
|
|
|
}
|
|
|
|
Action {
|
|
|
|
icon.source: "../../../../img/profileActive.svg"
|
|
|
|
icon.width: menuButton.iconSize
|
|
|
|
icon.height: menuButton.iconSize
|
|
|
|
text: qsTrId("view-profile")
|
2020-10-02 13:02:56 +00:00
|
|
|
onTriggered: profileClick(true, name, address, identicon, "", localNickname)
|
2020-07-24 11:27:26 +00:00
|
|
|
enabled: true
|
|
|
|
}
|
|
|
|
Action {
|
|
|
|
icon.source: "../../../../img/message.svg"
|
|
|
|
icon.width: menuButton.iconSize
|
|
|
|
icon.height: menuButton.iconSize
|
|
|
|
text: qsTrId("send-message")
|
|
|
|
onTriggered: {
|
|
|
|
tabBar.currentIndex = 0
|
|
|
|
chatsModel.joinChat(address, Constants.chatTypeOneToOne)
|
|
|
|
}
|
|
|
|
enabled: !container.isBlocked
|
|
|
|
}
|
|
|
|
Action {
|
|
|
|
icon.source: "../../../../img/block-icon.svg"
|
|
|
|
icon.width: menuButton.iconSize
|
|
|
|
icon.height: menuButton.iconSize
|
|
|
|
text: qsTrId("block-user")
|
|
|
|
enabled: !container.isBlocked
|
|
|
|
onTriggered: {
|
2020-08-10 11:56:16 +00:00
|
|
|
container.blockContactActionTriggered(name, address)
|
2020-07-24 11:27:26 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
Action {
|
|
|
|
icon.source: "../../../../img/remove-contact.svg"
|
|
|
|
icon.width: menuButton.iconSize
|
|
|
|
icon.height: menuButton.iconSize
|
|
|
|
icon.color: Style.current.red
|
|
|
|
text: qsTrId("remove-contact")
|
|
|
|
enabled: container.isContact
|
2020-08-10 12:15:57 +00:00
|
|
|
onTriggered: {
|
|
|
|
container.removeContactActionTriggered(address)
|
|
|
|
}
|
2020-07-24 11:27:26 +00:00
|
|
|
}
|
|
|
|
Action {
|
|
|
|
icon.source: "../../../../img/block-icon.svg"
|
|
|
|
icon.width: menuButton.iconSize
|
|
|
|
icon.height: menuButton.iconSize
|
|
|
|
icon.color: Style.current.red
|
2020-09-14 12:12:47 +00:00
|
|
|
//% "Unblock User"
|
|
|
|
text: qsTrId("unblock-user")
|
2020-07-24 11:27:26 +00:00
|
|
|
enabled: container.isBlocked
|
|
|
|
onTriggered: {
|
|
|
|
profileModel.unblockContact(address)
|
|
|
|
contactContextMenu.close()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2020-06-13 13:49:20 +00:00
|
|
|
}
|
2020-07-24 11:27:26 +00:00
|
|
|
|
2020-09-17 15:55:09 +00:00
|
|
|
StatusRadioButton {
|
2020-06-16 18:04:56 +00:00
|
|
|
visible: selectable
|
|
|
|
anchors.top: parent.top
|
2020-07-02 15:14:31 +00:00
|
|
|
anchors.topMargin: Style.current.smallPadding
|
2020-06-16 18:04:56 +00:00
|
|
|
anchors.right: parent.right
|
|
|
|
ButtonGroup.group: contactGroup
|
|
|
|
}
|
2020-06-13 13:49:20 +00:00
|
|
|
}
|