99 lines
2.9 KiB
QML
99 lines
2.9 KiB
QML
import QtQuick 2.13
|
|
import QtQuick.Controls 2.13
|
|
import "../../imports"
|
|
import "../../shared"
|
|
|
|
Item {
|
|
id: root
|
|
height: control.height
|
|
width: control.width + copyToClipBoardBtn.width + Style.current.smallPadding
|
|
property bool hovered: false
|
|
property string address: ""
|
|
property bool expanded: false
|
|
property int addressWidth
|
|
property int originalButtonWidth
|
|
|
|
Button {
|
|
id: control
|
|
width: root.addressWidth
|
|
leftPadding: 8
|
|
rightPadding: 8
|
|
contentItem: StyledText {
|
|
id: addressText
|
|
text: root.address
|
|
font.pixelSize: 13
|
|
font.family: Style.current.fontHexRegular.name
|
|
color: Style.current.secondaryText
|
|
elide: Text.ElideMiddle
|
|
horizontalAlignment: Text.AlignHCenter
|
|
}
|
|
|
|
background: Rectangle {
|
|
color: root.hovered ? Style.current.backgroundHover : "transparent"
|
|
radius: Style.current.radius
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
cursorShape: Qt.PointingHandCursor
|
|
onClicked: {
|
|
if (root.expanded) {
|
|
control.width = root.originalButtonWidth
|
|
this.width = control.width
|
|
} else {
|
|
root.originalButtonWidth = root.addressWidth
|
|
control.width = control.maxWidth > 0 ?
|
|
Math.min(addressText.implicitWidth, control.maxWidth) :
|
|
addressText.implicitWidth + control.leftPadding + control.rightPadding
|
|
}
|
|
this.width = control.width
|
|
root.expanded = !root.expanded
|
|
}
|
|
}
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
cursorShape: Qt.PointingHandCursor
|
|
hoverEnabled: true
|
|
propagateComposedEvents: true
|
|
onPressed: mouse.accepted = false
|
|
onEntered: {
|
|
if (!root.hovered) {
|
|
root.hovered = true
|
|
}
|
|
}
|
|
onExited: {
|
|
if (root.hovered) {
|
|
root.hovered = false
|
|
}
|
|
}
|
|
}
|
|
|
|
CopyToClipBoardButton {
|
|
id: copyToClipBoardBtn
|
|
visible: root.hovered
|
|
anchors.left: control.right
|
|
anchors.leftMargin: Style.current.smallPadding
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
textToCopy: root.address
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
propagateComposedEvents: true
|
|
onPressed: mouse.accepted = false
|
|
cursorShape: Qt.PointingHandCursor
|
|
hoverEnabled: true
|
|
onEntered: {
|
|
if (!root.hovered) {
|
|
root.hovered = true
|
|
}
|
|
}
|
|
onExited: {
|
|
if (root.hovered) {
|
|
root.hovered = false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|