1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2025-12-06 05:25:41 -05:00
Files
DankMaterialShell/Modules/DankDash/Overview/SystemMonitorCard.qml

178 lines
6.2 KiB
QML

import QtQuick
import QtQuick.Effects
import qs.Common
import qs.Services
import qs.Widgets
Card {
id: root
Component.onCompleted: {
DgopService.addRef(["cpu", "memory", "system"])
}
Component.onDestruction: {
DgopService.removeRef(["cpu", "memory", "system"])
}
Row {
anchors.fill: parent
anchors.margins: Theme.spacingS
spacing: Theme.spacingM
// CPU Bar
Column {
width: (parent.width - 2 * Theme.spacingM) / 3
height: parent.height
spacing: Theme.spacingS
Rectangle {
width: 8
height: parent.height - Theme.iconSizeSmall - Theme.spacingS
radius: 4
anchors.horizontalCenter: parent.horizontalCenter
color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
Rectangle {
width: parent.width
height: parent.height * Math.min((DgopService.cpuUsage || 6) / 100, 1)
radius: parent.radius
anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
color: {
if (DgopService.cpuUsage > 80) return Theme.error
if (DgopService.cpuUsage > 60) return Theme.warning
return Theme.primary
}
Behavior on height {
NumberAnimation {
duration: Theme.shortDuration
easing.type: Theme.standardEasing
}
}
}
}
Item {
width: parent.width
height: Theme.iconSizeSmall
DankIcon {
name: "memory"
size: Theme.iconSizeSmall
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
color: {
if (DgopService.cpuUsage > 80) return Theme.error
if (DgopService.cpuUsage > 60) return Theme.warning
return Theme.primary
}
}
}
}
// Temperature Bar
Column {
width: (parent.width - 2 * Theme.spacingM) / 3
height: parent.height
spacing: Theme.spacingS
Rectangle {
width: 8
height: parent.height - Theme.iconSizeSmall - Theme.spacingS
radius: 4
anchors.horizontalCenter: parent.horizontalCenter
color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
Rectangle {
width: parent.width
height: parent.height * Math.min(Math.max((DgopService.cpuTemperature || 40) / 100, 0), 1)
radius: parent.radius
anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
color: {
if (DgopService.cpuTemperature > 85) return Theme.error
if (DgopService.cpuTemperature > 69) return Theme.warning
return Theme.primary
}
Behavior on height {
NumberAnimation {
duration: Theme.shortDuration
easing.type: Theme.standardEasing
}
}
}
}
Item {
width: parent.width
height: Theme.iconSizeSmall
DankIcon {
name: "device_thermostat"
size: Theme.iconSizeSmall
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
color: {
if (DgopService.cpuTemperature > 85) return Theme.error
if (DgopService.cpuTemperature > 69) return Theme.warning
return Theme.primary
}
}
}
}
// RAM Bar
Column {
width: (parent.width - 2 * Theme.spacingM) / 3
height: parent.height
spacing: Theme.spacingS
Rectangle {
width: 8
height: parent.height - Theme.iconSizeSmall - Theme.spacingS
radius: 4
anchors.horizontalCenter: parent.horizontalCenter
color: Qt.rgba(Theme.outline.r, Theme.outline.g, Theme.outline.b, 0.2)
Rectangle {
width: parent.width
height: parent.height * Math.min((DgopService.memoryUsage || 42) / 100, 1)
radius: parent.radius
anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
color: {
if (DgopService.memoryUsage > 90) return Theme.error
if (DgopService.memoryUsage > 75) return Theme.warning
return Theme.primary
}
Behavior on height {
NumberAnimation {
duration: Theme.shortDuration
easing.type: Theme.standardEasing
}
}
}
}
Item {
width: parent.width
height: Theme.iconSizeSmall
DankIcon {
name: "developer_board"
size: Theme.iconSizeSmall
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
color: {
if (DgopService.memoryUsage > 90) return Theme.error
if (DgopService.memoryUsage > 75) return Theme.warning
return Theme.primary
}
}
}
}
}
}