diff options
| author | Nippy <nippy@rp1.hu> | 2026-05-08 19:50:49 +0200 |
|---|---|---|
| committer | Nippy <nippy@rp1.hu> | 2026-05-08 19:50:49 +0200 |
| commit | 3462bcc46ecf74f576ea4397f16492c16bd75b10 (patch) | |
| tree | c5ab7aef4498647e057bda8d49c11e5f9dda74c9 /raveos-hyprland-theme/theme-data/dms/Modules/ControlCenter/Widgets/SmallDiskUsageButton.qml | |
| parent | 56616f693b4f263cbf0d47da43b67424efa6022d (diff) | |
| download | RaveOS-PKGBUILD-3462bcc46ecf74f576ea4397f16492c16bd75b10.tar.gz RaveOS-PKGBUILD-3462bcc46ecf74f576ea4397f16492c16bd75b10.zip | |
raveos update
Diffstat (limited to 'raveos-hyprland-theme/theme-data/dms/Modules/ControlCenter/Widgets/SmallDiskUsageButton.qml')
| -rw-r--r-- | raveos-hyprland-theme/theme-data/dms/Modules/ControlCenter/Widgets/SmallDiskUsageButton.qml | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/dms/Modules/ControlCenter/Widgets/SmallDiskUsageButton.qml b/raveos-hyprland-theme/theme-data/dms/Modules/ControlCenter/Widgets/SmallDiskUsageButton.qml new file mode 100644 index 0000000..30c4e36 --- /dev/null +++ b/raveos-hyprland-theme/theme-data/dms/Modules/ControlCenter/Widgets/SmallDiskUsageButton.qml @@ -0,0 +1,129 @@ +import QtQuick +import qs.Common +import qs.Services +import qs.Widgets + +Rectangle { + id: root + + LayoutMirroring.enabled: I18n.isRtl + LayoutMirroring.childrenInherit: true + + property string mountPath: "/" + property string instanceId: "" + + property var selectedMount: { + if (!DgopService.diskMounts || DgopService.diskMounts.length === 0) + return null; + const targetMount = DgopService.diskMounts.find(mount => mount.mount === mountPath); + return targetMount || DgopService.diskMounts.find(mount => mount.mount === "/") || DgopService.diskMounts[0]; + } + + property real usagePercent: { + if (!selectedMount?.percent) + return 0; + return parseFloat(selectedMount.percent.replace("%", "")) || 0; + } + + property bool enabled: DgopService.dgopAvailable + + signal clicked + + width: parent ? ((parent.width - parent.spacing * 3) / 4) : 48 + height: 48 + radius: Theme.cornerRadius + 4 + + function hoverTint(base) { + const factor = 1.2; + return Theme.isLightMode ? Qt.darker(base, factor) : Qt.lighter(base, factor); + } + + readonly property color _tileBg: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) + + color: mouseArea.containsMouse ? Theme.primaryPressed : _tileBg + border.color: "transparent" + border.width: 0 + antialiasing: true + opacity: enabled ? 1.0 : 0.6 + + Rectangle { + anchors.fill: parent + radius: parent.radius + color: hoverTint(root.color) + opacity: mouseArea.pressed ? 0.3 : (mouseArea.containsMouse ? 0.2 : 0.0) + visible: opacity > 0 + antialiasing: true + Behavior on opacity { + NumberAnimation { + duration: Theme.shortDuration + } + } + } + + Row { + anchors.centerIn: parent + spacing: Theme.spacingXS + + DankIcon { + anchors.verticalCenter: parent.verticalCenter + name: "storage" + size: Theme.iconSizeSmall + color: { + if (root.usagePercent > 90) + return Theme.error; + if (root.usagePercent > 75) + return Theme.warning; + return Theme.ccTileInactiveIcon; + } + } + + Column { + anchors.verticalCenter: parent.verticalCenter + spacing: 0 + + StyledText { + text: root.selectedMount?.mount || root.mountPath + font.pixelSize: Theme.fontSizeSmall + color: Theme.surfaceVariantText + elide: Text.ElideMiddle + width: Math.min(implicitWidth, root.width - Theme.iconSizeSmall - Theme.spacingM) + horizontalAlignment: Text.AlignLeft + } + + StyledText { + text: `${root.usagePercent.toFixed(0)}%` + font.pixelSize: Theme.fontSizeSmall + font.weight: Font.Bold + color: { + if (root.usagePercent > 90) + return Theme.error; + if (root.usagePercent > 75) + return Theme.warning; + return Theme.ccTileInactiveIcon; + } + } + } + } + + DankRipple { + id: ripple + cornerRadius: root.radius + } + + MouseArea { + id: mouseArea + anchors.fill: parent + hoverEnabled: true + cursorShape: Qt.PointingHandCursor + enabled: root.enabled + onPressed: mouse => ripple.trigger(mouse.x, mouse.y) + onClicked: root.clicked() + } + + Component.onCompleted: { + DgopService.addRef(["diskmounts"]); + } + Component.onDestruction: { + DgopService.removeRef(["diskmounts"]); + } +} |