Files
noctalia-shell/Services/ControlCenterWidgetRegistry.qml

91 lines
2.8 KiB
QML

pragma Singleton
import QtQuick
import Quickshell
import qs.Commons
import qs.Modules.ControlCenter.Widgets
Singleton {
id: root
// Widget registry object mapping widget names to components
property var widgets: ({
"Bluetooth": bluetoothComponent,
"Notifications": notificationsComponent,
"KeepAwake": keepAwakeComponent,
"NightLight": nightLightComponent,
"PowerProfile": powerProfileComponent,
"ScreenRecorder": screenRecorderComponent,
"WiFi": wiFiComponent,
"WallpaperSelector": wallpaperSelectorComponent,
"CustomButton": customButtonComponent
})
property var widgetMetadata: ({
"CustomButton": {
"allowUserSettings": true,
"icon": "heart",
"onClicked": "",
"onRightClicked": "",
"onMiddleClicked": "",
"stateChecks": [],
"generalTooltipText": "Custom Button",
"enableOnStateLogic": false
}
})
// Component definitions - these are loaded once at startup
property Component bluetoothComponent: Component {
Bluetooth {}
}
property Component notificationsComponent: Component {
Notifications {}
}
property Component keepAwakeComponent: Component {
KeepAwake {}
}
property Component nightLightComponent: Component {
NightLight {}
}
property Component powerProfileComponent: Component {
PowerProfile {}
}
property Component screenRecorderComponent: Component {
ScreenRecorder {}
}
property Component wiFiComponent: Component {
WiFi {}
}
property Component wallpaperSelectorComponent: Component {
WallpaperSelector {}
}
property Component customButtonComponent: Component {
CustomButton {}
}
function init() {
Logger.i("ControlCenterWidgetRegistry", "Service started")
}
// ------------------------------
// Helper function to get widget component by name
function getWidget(id) {
return widgets[id] || null
}
// Helper function to check if widget exists
function hasWidget(id) {
return id in widgets
}
// Get list of available widget id
function getAvailableWidgets() {
return Object.keys(widgets)
}
// Helper function to check if widget has user settings
function widgetHasUserSettings(id) {
return (widgetMetadata[id] !== undefined) && (widgetMetadata[id].allowUserSettings === true)
}
}