nova-shell/shell/services/CpuService.qml

50 lines
1.4 KiB
QML

pragma Singleton
import QtQuick
import NovaStats as NS
import "." as S
QtObject {
id: root
readonly property int usage: NS.CpuService.usage
readonly property real freqGhz: NS.CpuService.freqGhz
// cores arrives as QList<QString> JSON; parse into [{usage, freq_ghz, history:[]}]
readonly property var cores: {
let raw = NS.CpuService.cores;
let out = [];
for (let i = 0; i < raw.length; i++)
out.push(JSON.parse(raw[i]));
return out;
}
readonly property var coreMaxFreq: NS.CpuService.coreMaxFreq
readonly property var coreTypes: NS.CpuService.coreTypes
readonly property var history: NS.CpuService.history
// Gate per-core history: applets increment/decrement coreConsumers
property int coreConsumers: 0
onCoreConsumersChanged: {
NS.CpuService.enableCoreHistory = coreConsumers > 0;
if (coreConsumers <= 0)
_coreGraceTimer.start();
else
_coreGraceTimer.stop();
}
property Timer _coreGraceTimer: Timer {
interval: 30000
onTriggered: NS.CpuService.clearCoreHistory()
}
property Timer _pollTimer: Timer {
interval: {
const ms = S.Modules.statsDaemon.interval;
return ms > 0 ? ms : 4000;
}
running: true
repeat: true
triggeredOnStart: true
onTriggered: NS.CpuService.poll()
}
}