Files
Dotfiles/noctalia/plugins/catwalk/Settings.qml
T
2026-04-19 17:07:18 +02:00

75 lines
2.4 KiB
QML

import QtQuick
import QtQuick.Layouts
import qs.Widgets
import qs.Commons
ColumnLayout {
id: root
// Plugin API (injected by the settings dialog system)
property var pluginApi: null
// Local state - track changes before saving
property real valueMinimumThreshold: pluginApi?.mainInstance?.minimumThreshold ?? (pluginApi?.pluginSettings?.minimumThreshold || 10)
property bool valueHideBackground: pluginApi?.mainInstance?.hideBackground ?? (pluginApi?.pluginSettings?.hideBackground ?? false)
spacing: Style.marginM
Component.onCompleted: {
Logger.i("Catwalk", "Settings UI loaded");
}
ColumnLayout {
Layout.fillWidth: true
spacing: Style.marginS
NLabel {
label: pluginApi?.tr("settings.minimumThreshold.label") || "Minimum CPU Threshold"
description: pluginApi?.tr("settings.minimumThreshold.description") || "CPU usage must be above this percentage for the cat to start running"
}
NSlider {
id: thresholdSlider
from: 5
to: 25
value: root.valueMinimumThreshold
stepSize: 1
onValueChanged: {
root.valueMinimumThreshold = value
}
}
Text {
text: (pluginApi?.tr("settings.currentThreshold") || "Current threshold: {value}%").replace("{value}", thresholdSlider.value)
color: Color.mOnSurfaceVariant
font.pointSize: Style.fontSizeS
}
}
NToggle {
label: pluginApi?.tr("settings.hideBackground.label") || "Hide Background"
description: pluginApi?.tr("settings.hideBackground.description") || "Hide the background of the desktop widget"
checked: root.valueHideBackground
onToggled: function(checked) {
root.valueHideBackground = checked
}
}
// This function is called by the dialog to save settings
function saveSettings() {
if (!pluginApi) {
Logger.e("Catwalk", "Cannot save settings: pluginApi is null");
return;
}
// Update the plugin settings object
pluginApi.pluginSettings.minimumThreshold = root.valueMinimumThreshold;
pluginApi.pluginSettings.hideBackground = root.valueHideBackground;
// Save to disk
pluginApi.saveSettings();
Logger.i("Catwalk", "Settings saved successfully");
}
}