status-desktop/ui/app/AppLayouts/Chat/controls/Contact.qml

107 lines
3.0 KiB
QML

import QtQuick 2.3
import QtQuick.Controls 2.3
import QtQuick.Layouts 1.3
import Qt.labs.platform 1.1
import utils 1.0
import StatusQ.Controls 0.1 as StatusQControls
import StatusQ.Components 0.1
import shared.panels 1.0
import shared.status 1.0
import shared.controls.chat 1.0
Rectangle {
id: root
property string pubKey: "0x123456"
property string name: "Jotaro Kujo"
property string image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII="
property bool isContact: true
property bool isUser: false
property bool isVisible: true
property bool showCheckbox: true
property bool clickable: true
property bool isChecked: false
property bool isHovered: false
property var onItemChecked: (function(pubKey, itemChecked) { console.log(pubKey, itemChecked) })
property var onContactClicked
visible: isVisible && (isContact || isUser)
height: visible ? 64 : 0
anchors.right: parent.right
anchors.left: parent.left
border.width: 0
radius: Style.current.radius
color: isHovered ? Style.current.backgroundHover : Style.current.transparent
UserImage {
id: accountImage
anchors.left: parent.left
anchors.verticalCenter: parent.verticalCenter
anchors.leftMargin: Style.current.padding
pubkey: root.pubKey
name: root.name
image: root.image
}
StyledText {
id: usernameText
text: name
elide: Text.ElideRight
anchors.right: assetCheck.visible ? assetCheck.left : parent.right
anchors.rightMargin: Style.current.padding
font.pixelSize: 17
anchors.top: accountImage.top
anchors.topMargin: 10
anchors.left: accountImage.right
anchors.leftMargin: Style.current.padding
}
StatusQControls.StatusCheckBox {
id: assetCheck
visible: showCheckbox && !isUser
anchors.top: accountImage.top
anchors.topMargin: 6
anchors.right: parent.right
anchors.rightMargin: Style.current.padding
checked: isChecked
onClicked: {
isChecked = !isChecked
onItemChecked(pubKey, isChecked)
}
}
StyledText {
visible: isUser
//% "Admin"
text: qsTrId("group-chat-admin")
anchors.right: parent.right
anchors.rightMargin: Style.current.padding
font.pixelSize: 15
color: Style.current.darkGrey
anchors.top: accountImage.top
anchors.topMargin: 10
}
MouseArea {
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
enabled: root.clickable || root.showCheckbox
hoverEnabled: root.clickable || root.showCheckbox
onEntered: root.isHovered = true
onExited: root.isHovered = false
onClicked: {
if (typeof root.onContactClicked !== "function") {
return assetCheck.clicked()
}
root.onContactClicked()
}
}
}