83 lines
3.2 KiB
QML
83 lines
3.2 KiB
QML
import QtQuick
|
|
|
|
import Quickshell
|
|
import Quickshell.Io
|
|
|
|
QtObject {
|
|
id: root
|
|
|
|
property alias temperatureInterval: values.temperatureInterval
|
|
property alias temperatureWarning: values.temperatureWarning
|
|
property alias temperatureCritical: values.temperatureCritical
|
|
property alias panelStyle: values.panelStyle
|
|
property alias panelWidth: values.panelWidth
|
|
property alias panelRadius: values.panelRadius
|
|
property alias panelOpacity: values.panelOpacity
|
|
property alias panelOpenOnCorner: values.panelOpenOnCorner
|
|
property alias notificationBadge: values.notificationBadge
|
|
property alias notificationPosition: values.notificationPosition
|
|
property alias notificationPopupDuration: values.notificationPopupDuration
|
|
property alias barModules: values.barModules
|
|
property alias hiddenBarModules: values.hiddenBarModules
|
|
|
|
readonly property var defaultBarModules: [
|
|
"weather", "mail", "media", "notifications", "gpu", "cpu", "memory",
|
|
"disk", "keyboard", "audio", "calendar", "settings", "tray"
|
|
]
|
|
|
|
function visibleBarModules() {
|
|
const configured = Array.isArray(root.barModules) ? root.barModules : root.defaultBarModules;
|
|
const hidden = Array.isArray(root.hiddenBarModules) ? root.hiddenBarModules : [];
|
|
return configured.filter(module => root.defaultBarModules.indexOf(module) >= 0 && hidden.indexOf(module) < 0);
|
|
}
|
|
|
|
function setBarModules(modules) {
|
|
root.barModules = modules.filter(module => root.defaultBarModules.indexOf(module) >= 0);
|
|
}
|
|
|
|
function setModuleVisible(module, visible) {
|
|
let hidden = Array.isArray(root.hiddenBarModules) ? root.hiddenBarModules.slice() : [];
|
|
const index = hidden.indexOf(module);
|
|
if (visible && index >= 0) hidden.splice(index, 1);
|
|
if (!visible && index < 0) hidden.push(module);
|
|
root.hiddenBarModules = hidden;
|
|
}
|
|
|
|
function setTemperatureWarning(value) {
|
|
root.temperatureWarning = Math.min(value, root.temperatureCritical - 1);
|
|
}
|
|
|
|
function setTemperatureCritical(value) {
|
|
root.temperatureCritical = Math.max(value, root.temperatureWarning + 1);
|
|
}
|
|
|
|
property FileView settingsFile: FileView {
|
|
path: Quickshell.statePath("control-center.json")
|
|
printErrors: false
|
|
watchChanges: true
|
|
onFileChanged: reload()
|
|
onAdapterUpdated: writeAdapter()
|
|
|
|
JsonAdapter {
|
|
id: values
|
|
|
|
property int temperatureInterval: 2000
|
|
property int temperatureWarning: 75
|
|
property int temperatureCritical: 90
|
|
property string panelStyle: "cards"
|
|
property int panelWidth: 470
|
|
property int panelRadius: 24
|
|
property real panelOpacity: 1.0
|
|
property bool panelOpenOnCorner: false
|
|
property bool notificationBadge: true
|
|
property string notificationPosition: "top-right"
|
|
property int notificationPopupDuration: 5000
|
|
property var barModules: [
|
|
"weather", "mail", "media", "notifications", "gpu", "cpu", "memory",
|
|
"disk", "keyboard", "audio", "calendar", "settings", "tray"
|
|
]
|
|
property var hiddenBarModules: []
|
|
}
|
|
}
|
|
}
|