import QtQuick import ZShell.Config import qs.Services import qs.Components import qs.Helpers Row { id: root property real batHeight: Tokens.padding.small * 2 property real batWidth: Tokens.padding.medium * 2 required property string devState property real nubHeight: Tokens.padding.extraSmall property real nubWidth: 2 required property real percentage property real radius: Tokens.rounding.small / 2 spacing: 1 CustomRect { id: track anchors.verticalCenter: parent.verticalCenter color: Battery.getColors(root.percentage, root.devState).bg height: root.batHeight radius: root.radius width: root.batWidth CustomText { color: Battery.getColors(root.percentage, root.devState).fg font.pointSize: Tokens.font.size.larger / 1.5 font.weight: 800 height: track.height horizontalAlignment: Text.AlignHCenter text: Math.round(root.percentage * 100) verticalAlignment: Text.AlignVCenter width: track.width } Item { clip: true width: parent.width * root.percentage anchors { bottom: parent.bottom left: parent.left top: parent.top } CustomRect { id: fill color: Battery.getColors(root.percentage, root.devState).fg height: track.height radius: track.radius width: track.width CustomText { id: batteryLabel clip: true color: Battery.getColors(root.percentage, root.devState).bg font.pointSize: Tokens.font.size.larger / 1.5 font.weight: 800 height: track.height horizontalAlignment: Text.AlignHCenter text: Math.round(root.percentage * 100) verticalAlignment: Text.AlignVCenter width: track.width } } } } CustomRect { id: nub anchors.verticalCenter: parent.verticalCenter bottomRightRadius: 20 color: root.percentage < 0.99 ? track.color : fill.color height: root.nubHeight topRightRadius: 20 width: root.nubWidth } }