status-desktop/ui/app/AppLayouts/Onboarding/controls/AccountViewDelegate.qml

106 lines
2.8 KiB
QML

import QtQuick 2.15
import QtQuick.Controls 2.15
import utils 1.0
import shared 1.0
import shared.panels 1.0
import shared.status 1.0
import shared.controls.chat 1.0
import StatusQ.Controls 0.1 as StatusQControls
import StatusQ.Components 0.1
import StatusQ.Core.Theme 0.1
Rectangle {
id: root
property string username: "Jotaro Kujo"
property string keyUid: "0x123345677890987654321123456"
property string address: ""
property var colorHash
property int colorId
property url image: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAg0lEQVR4nOzXwQmAMBAFURV7sQybsgybsgyr0QYUlE1g+Mw7ioQMe9lMQwhDaAyhMYTGEJqYkPnrj/t5XE/ft2UdW1yken7MRAyhMYTGEBpDaAyhKe9JbzvSX9WdLWYihtAYQuMLkcYQGkPUScxEDKExhMYQGkNoDKExhMYQmjsAAP//ZfIUZgXTZXQAAAAASUVORK5CYII="
property var onAccountSelect: function() {}
property var isSelected: function() {}
property bool selected: {
return isSelected(index, keyUid)
}
property bool isHovered: false
height: 64
anchors.right: parent.right
anchors.left: parent.left
border.width: 0
color: getBgColor()
radius: Theme.radius
function getBgColor() {
if (selected) return Theme.palette.secondaryBackground
if (isHovered) return Theme.palette.backgroundHover
return Theme.palette.transparent
}
UserImage {
id: accountImage
anchors.left: parent.left
anchors.leftMargin: Theme.padding
anchors.verticalCenter: parent.verticalCenter
name: root.username
image: root.image
colorId: root.colorId
colorHash: root.colorHash
}
StyledText {
id: usernameText
text: username
elide: Text.ElideRight
anchors.right: parent.right
anchors.rightMargin: Theme.padding + radio.width
font.pixelSize: 17
anchors.top: accountImage.top
anchors.left: accountImage.right
anchors.leftMargin: Theme.padding
}
StyledText {
id: addressText
width: 108
text: address
font.family: Theme.monoFont.name
elide: Text.ElideMiddle
anchors.bottom: accountImage.bottom
anchors.bottomMargin: 0
anchors.left: usernameText.left
anchors.leftMargin: 0
font.pixelSize: 15
color: Theme.palette.secondaryText
}
StatusQControls.StatusRadioButton {
id: radio
anchors.right: parent.right
anchors.rightMargin: Theme.padding
anchors.verticalCenter: parent.verticalCenter
checked: root.selected
}
MouseArea {
hoverEnabled: true
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onClicked: {
onAccountSelect(index)
}
onEntered: {
root.isHovered = true
}
onExited: {
root.isHovered = false
}
}
}