plasma-cpu-control-widget/contents/ui/main.qml

61 lines
1.5 KiB
QML

import QtQuick 2.15
import org.kde.plasma.plasmoid 2.0
import org.kde.plasma.core 2.0 as PlasmaCore
import "logic/CpuReader.js" as Reader
import "logic/CpuWriter.js" as Writer
Item {
id: root
property int temperature: 0
property int currentPerf: 100
Plasmoid.preferredRepresentation: Plasmoid.compactRepresentation
Timer {
interval: 3000
running: true
repeat: true
triggeredOnStart: true
onTriggered: statusSource.connectSource(Reader.buildReadCommand())
}
PlasmaCore.DataSource {
id: statusSource
engine: "executable"
onNewData: {
var result = Reader.parseOutput(data["stdout"])
if (result.valid) {
root.temperature = result.tempC
root.currentPerf = result.perf
}
disconnectSource(sourceName)
}
}
PlasmaCore.DataSource {
id: writeSource
engine: "executable"
onNewData: {
disconnectSource(sourceName)
statusSource.connectSource(Reader.buildReadCommand())
}
}
function setPerf(value) {
var cmd = Writer.buildSetCommand(value)
if (cmd) writeSource.connectSource(cmd)
}
Plasmoid.compactRepresentation: CompactView {
temperature: root.temperature
onClicked: plasmoid.expanded = !plasmoid.expanded
}
Plasmoid.fullRepresentation: FullView {
temperature: root.temperature
currentPerf: root.currentPerf
onPerfChangeRequested: root.setPerf(newValue)
}
}