Files
pallectrum/electrum/gui/qml/components/controls/ChannelBar.qml
2023-11-07 10:17:08 +01:00

106 lines
2.6 KiB
QML

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtQuick.Controls.Material
import org.electrum 1.0
Item {
property Amount capacity
property Amount localCapacity
property Amount remoteCapacity
property Amount canSend
property Amount canReceive
property bool frozenForSending: false
property bool frozenForReceiving: false
height: 10
implicitWidth: 100
function update() {
Qt.callLater(do_update)
}
function do_update() {
var cap = capacity.satsInt * 1000
var twocap = cap * 2
l1.width = width * (cap - localCapacity.msatsInt) / twocap
if (frozenForSending) {
l2.width = width * localCapacity.msatsInt / twocap
l3.width = 0
} else {
l2.width = width * (localCapacity.msatsInt - canSend.msatsInt) / twocap
l3.width = width * canSend.msatsInt / twocap
}
if (frozenForReceiving) {
r3.width = 0
r2.width = width * remoteCapacity.msatsInt / twocap
} else {
r3.width = width * canReceive.msatsInt / twocap
r2.width = width * (remoteCapacity.msatsInt - canReceive.msatsInt) / twocap
}
r1.width = width * (cap - remoteCapacity.msatsInt) / twocap
}
onWidthChanged: update()
onFrozenForSendingChanged: update()
onFrozenForReceivingChanged: update()
Connections {
target: localCapacity
function onMsatsIntChanged() { update() }
}
Connections {
target: remoteCapacity
function onMsatsIntChanged() { update() }
}
Connections {
target: canSend
function onMsatsIntChanged() { update() }
}
Connections {
target: canReceive
function onMsatsIntChanged() { update() }
}
Rectangle {
id: l1
x: 0
height: parent.height
color: 'gray'
}
Rectangle {
id: l2
anchors.left: l1.right
height: parent.height
color: constants.colorLightningLocalReserve
}
Rectangle {
id: l3
anchors.left: l2.right
height: parent.height
color: constants.colorLightningLocal
}
Rectangle {
id: r3
anchors.left: l3.right
height: parent.height
color: constants.colorLightningRemote
}
Rectangle {
id: r2
anchors.left: r3.right
height: parent.height
color: constants.colorLightningRemoteReserve
}
Rectangle {
id: r1
anchors.left: r2.right
height: parent.height
color: 'gray'
}
}