50 lines
1.4 KiB
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 = NS.ModulesService.statsDaemonInterval;
|
|
return ms > 0 ? ms : 4000;
|
|
}
|
|
running: true
|
|
repeat: true
|
|
triggeredOnStart: true
|
|
onTriggered: NS.CpuService.poll()
|
|
}
|
|
}
|