forked from Shinonome/dots-hyprland
hefty: bar: resources popup: show mem & cpu
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
pragma ComponentBehavior: Bound
|
||||
import QtQuick
|
||||
import qs.modules.common
|
||||
|
||||
AbstractCombinedProgressBar {
|
||||
id: root
|
||||
|
||||
property real valueBarWidth: 120
|
||||
property real valueBarHeight: 4
|
||||
property real valueBarGap: 4
|
||||
property real valueBarInnerRadius: Appearance.rounding.unsharpen
|
||||
valueHighlights: [Appearance.colors.colPrimary, Appearance.colors.colTertiary]
|
||||
valueTroughs: [Appearance.colors.colSecondaryContainer, Appearance.colors.colTertiaryContainer]
|
||||
|
||||
background: Item {
|
||||
implicitWidth: root.valueBarWidth
|
||||
implicitHeight: root.valueBarHeight
|
||||
}
|
||||
|
||||
// "negligible" = too small that it'd look weird when shown
|
||||
function isNegligibleSegment(seg: var): bool {
|
||||
const wdth = seg[1] - seg[0];
|
||||
const visualWidth = availableWidth * wdth;
|
||||
return (visualWidth <= valueBarGap + valueBarHeight)
|
||||
}
|
||||
|
||||
contentItem: Item {
|
||||
Repeater {
|
||||
model: root.visualSegments
|
||||
|
||||
delegate: Rectangle {
|
||||
required property int index
|
||||
required property var modelData
|
||||
|
||||
visible: !root.isNegligibleSegment(modelData)
|
||||
anchors {
|
||||
top: parent.top
|
||||
bottom: parent.bottom
|
||||
}
|
||||
property bool atStart: index == 0
|
||||
property bool atEnd: index == root.visualSegments.length - 1
|
||||
property real displaySegStart: { // swallow previous segments if they're "negligible"
|
||||
var i = index;
|
||||
while ((i > 0 && root.isNegligibleSegment(root.visualSegments[i-1])))
|
||||
i--;
|
||||
return root.visualSegments[i][0]
|
||||
}
|
||||
|
||||
x: {
|
||||
var result = root.availableWidth * displaySegStart;
|
||||
if (!atStart) result += root.valueBarGap / 2;
|
||||
return result;
|
||||
}
|
||||
width: {
|
||||
var result = root.availableWidth * (modelData[1] - displaySegStart)
|
||||
if (atStart || atEnd) result -= root.valueBarGap / 2;
|
||||
else result -= root.valueBarGap;
|
||||
return result;
|
||||
}
|
||||
color: root.segmentColors[index % root.segmentColors.length]
|
||||
|
||||
property real startRadius: atStart ? height / 2 : root.valueBarInnerRadius
|
||||
property real endRadius: atEnd ? height / 2 : root.valueBarInnerRadius
|
||||
|
||||
topLeftRadius: startRadius
|
||||
bottomLeftRadius: startRadius
|
||||
topRightRadius: endRadius
|
||||
bottomRightRadius: endRadius
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user