status-desktop/ui/imports/shared/controls/chat/StateBubble.qml

92 lines
3.0 KiB
QML

import QtQuick 2.3
import QtGraphicalEffects 1.13
import shared 1.0
import shared.panels 1.0
import utils 1.0
Rectangle {
property int state: Constants.pending
property bool outgoing: true
id: root
width: childrenRect.width + 24
height: 28
border.width: 1
border.color: Style.current.border
radius: 24
color: Style.current.background
SVGImage {
id: stateImage
source: {
switch (root.state) {
case Constants.pending:
case Constants.addressReceived:
case Constants.transactionRequested:
case Constants.addressRequested: return Style.svg("dotsLoadings")
case Constants.confirmed: return Style.svg("check")
case Constants.transactionDeclined:
case Constants.declined: return Style.svg("exclamation")
default: return ""
}
}
width: 16
height: 16
anchors.left: parent.left
anchors.leftMargin: Style.current.halfPadding
anchors.verticalCenter: stateText.verticalCenter
}
ColorOverlay {
anchors.fill: stateImage
source: stateImage
color: state === Constants.confirmed ? Style.current.transparent : Style.current.textColor
}
StyledText {
id: stateText
color: {
if (root.state === Constants.unknown || root.state === Constants.failure) {
return Style.current.danger
}
if (root.state === Constants.confirmed || root.state === Constants.declined) {
return Style.current.textColor
}
return Style.current.secondaryText
}
text: {
switch (root.state) {
//% "Pending"
case Constants.pending: return qsTrId("invite-chat-pending")
//% "Confirmed"
case Constants.confirmed: return qsTrId("status-confirmed")
//% "Unknown token"
case Constants.unknown: return qsTrId("unknown-token")
//% "Address requested"
case Constants.addressRequested: return qsTrId("address-requested")
//% "Waiting to accept"
case Constants.transactionRequested: return qsTrId("waiting-to-accept")
case Constants.addressReceived: return (!root.outgoing ?
//% "Address shared"
qsTrId("address-shared") :
//% "Address received"
qsTrId("address-received"))
case Constants.transactionDeclined:
//% "Transaction declined"
case Constants.declined: return qsTrId("transaction-declined")
//% "failure"
case Constants.failure: return qsTrId("failure")
//% "Unknown state"
default: return qsTrId("unknown-state")
}
}
font.weight: Font.Medium
anchors.left: stateImage.right
anchors.leftMargin: 4
anchors.verticalCenter: parent.verticalCenter
font.pixelSize: 13
}
}