summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/ControlCenter/Models
diff options
context:
space:
mode:
authorAlexanderCurl <alexc@alexc.hu>2026-04-18 17:46:06 +0100
committerAlexanderCurl <alexc@alexc.hu>2026-04-18 17:46:06 +0100
commit70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 (patch)
treeab1123d4067c1b086dd6faa7ee4ea643236b565a /raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/ControlCenter/Models
parent5d94c0a7d44a2255b81815a52a7056a94a39842d (diff)
downloadRaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.tar.gz
RaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.zip
Replaced file structures for themes in the correct format
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/ControlCenter/Models')
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/ControlCenter/Models/WidgetModel.qml283
1 files changed, 283 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/ControlCenter/Models/WidgetModel.qml b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/ControlCenter/Models/WidgetModel.qml
new file mode 100644
index 0000000..ac616ae
--- /dev/null
+++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/ControlCenter/Models/WidgetModel.qml
@@ -0,0 +1,283 @@
+import QtQuick
+import qs.Common
+import qs.Services
+import qs.Modules.ControlCenter.BuiltinPlugins
+import "../utils/widgets.js" as WidgetUtils
+
+QtObject {
+ id: root
+
+ property var vpnBuiltinInstance: null
+ property var cupsBuiltinInstance: null
+
+ property var vpnLoader: Loader {
+ active: false
+ sourceComponent: Component {
+ VpnWidget {}
+ }
+
+ onItemChanged: {
+ root.vpnBuiltinInstance = item;
+ }
+
+ Connections {
+ target: SettingsData
+ function onControlCenterWidgetsChanged() {
+ const widgets = SettingsData.controlCenterWidgets || [];
+ const hasVpnWidget = widgets.some(w => w.id === "builtin_vpn");
+ if (!hasVpnWidget && vpnLoader.active) {
+ console.log("VpnWidget: No VPN widget in control center, deactivating loader");
+ vpnLoader.active = false;
+ }
+ }
+ }
+ }
+
+ property var cupsLoader: Loader {
+ active: false
+ sourceComponent: Component {
+ CupsWidget {}
+ }
+
+ onItemChanged: {
+ root.cupsBuiltinInstance = item;
+ }
+
+ onActiveChanged: {
+ if (!active) {
+ root.cupsBuiltinInstance = null;
+ }
+ }
+
+ Connections {
+ target: SettingsData
+ function onControlCenterWidgetsChanged() {
+ const widgets = SettingsData.controlCenterWidgets || [];
+ const hasCupsWidget = widgets.some(w => w.id === "builtin_cups");
+ if (!hasCupsWidget && cupsLoader.active) {
+ console.log("CupsWidget: No CUPS widget in control center, deactivating loader");
+ cupsLoader.active = false;
+ }
+ }
+ }
+ }
+
+ readonly property var coreWidgetDefinitions: [
+ {
+ "id": "nightMode",
+ "text": I18n.tr("Night Mode"),
+ "description": I18n.tr("Blue light filter"),
+ "icon": "nightlight",
+ "type": "toggle",
+ "enabled": DisplayService.automationAvailable,
+ "warning": !DisplayService.automationAvailable ? I18n.tr("Requires night mode support") : undefined
+ },
+ {
+ "id": "darkMode",
+ "text": I18n.tr("Dark Mode"),
+ "description": I18n.tr("System theme toggle"),
+ "icon": "contrast",
+ "type": "toggle",
+ "enabled": true
+ },
+ {
+ "id": "doNotDisturb",
+ "text": I18n.tr("Do Not Disturb"),
+ "description": I18n.tr("Block notifications"),
+ "icon": "do_not_disturb_on",
+ "type": "toggle",
+ "enabled": true
+ },
+ {
+ "id": "idleInhibitor",
+ "text": I18n.tr("Keep Awake"),
+ "description": I18n.tr("Prevent screen timeout"),
+ "icon": "motion_sensor_active",
+ "type": "toggle",
+ "enabled": true
+ },
+ {
+ "id": "wifi",
+ "text": I18n.tr("Network"),
+ "description": I18n.tr("Wi-Fi and Ethernet connection"),
+ "icon": "wifi",
+ "type": "connection",
+ "enabled": NetworkService.wifiAvailable,
+ "warning": !NetworkService.wifiAvailable ? I18n.tr("Wi-Fi not available") : undefined
+ },
+ {
+ "id": "bluetooth",
+ "text": I18n.tr("Bluetooth"),
+ "description": I18n.tr("Device connections"),
+ "icon": "bluetooth",
+ "type": "connection",
+ "enabled": BluetoothService.available,
+ "warning": !BluetoothService.available ? I18n.tr("Bluetooth not available") : undefined
+ },
+ {
+ "id": "audioOutput",
+ "text": I18n.tr("Audio Output"),
+ "description": I18n.tr("Speaker settings"),
+ "icon": "volume_up",
+ "type": "connection",
+ "enabled": true
+ },
+ {
+ "id": "audioInput",
+ "text": I18n.tr("Audio Input"),
+ "description": I18n.tr("Microphone settings"),
+ "icon": "mic",
+ "type": "connection",
+ "enabled": true
+ },
+ {
+ "id": "volumeSlider",
+ "text": I18n.tr("Volume Slider"),
+ "description": I18n.tr("Audio volume control"),
+ "icon": "volume_up",
+ "type": "slider",
+ "enabled": true
+ },
+ {
+ "id": "brightnessSlider",
+ "text": I18n.tr("Brightness Slider"),
+ "description": I18n.tr("Display brightness control"),
+ "icon": "brightness_6",
+ "type": "slider",
+ "enabled": DisplayService.brightnessAvailable,
+ "warning": !DisplayService.brightnessAvailable ? I18n.tr("Brightness control not available") : undefined,
+ "allowMultiple": true
+ },
+ {
+ "id": "inputVolumeSlider",
+ "text": I18n.tr("Input Volume Slider"),
+ "description": I18n.tr("Microphone volume control"),
+ "icon": "mic",
+ "type": "slider",
+ "enabled": true
+ },
+ {
+ "id": "battery",
+ "text": I18n.tr("Battery"),
+ "description": I18n.tr("Battery and power management"),
+ "icon": "battery_std",
+ "type": "action",
+ "enabled": true
+ },
+ {
+ "id": "diskUsage",
+ "text": I18n.tr("Disk Usage"),
+ "description": I18n.tr("Filesystem usage monitoring"),
+ "icon": "storage",
+ "type": "action",
+ "enabled": DgopService.dgopAvailable,
+ "warning": !DgopService.dgopAvailable ? I18n.tr("Requires 'dgop' tool") : undefined,
+ "allowMultiple": true
+ },
+ {
+ "id": "colorPicker",
+ "text": I18n.tr("Color Picker"),
+ "description": I18n.tr("Choose colors from palette"),
+ "icon": "palette",
+ "type": "action",
+ "enabled": true
+ },
+ {
+ "id": "builtin_vpn",
+ "text": I18n.tr("VPN"),
+ "description": I18n.tr("VPN connections"),
+ "icon": "vpn_key",
+ "type": "builtin_plugin",
+ "enabled": DMSNetworkService.available,
+ "warning": !DMSNetworkService.available ? I18n.tr("VPN not available") : undefined,
+ "isBuiltinPlugin": true
+ },
+ {
+ "id": "builtin_cups",
+ "text": I18n.tr("Printers"),
+ "description": I18n.tr("Print Server Management"),
+ "icon": "Print",
+ "type": "builtin_plugin",
+ "enabled": CupsService.available,
+ "warning": !CupsService.available ? I18n.tr("CUPS not available") : undefined,
+ "isBuiltinPlugin": true
+ }
+ ]
+
+ function getPluginWidgets() {
+ const plugins = [];
+ const loadedPlugins = PluginService.getLoadedPlugins();
+
+ for (var i = 0; i < loadedPlugins.length; i++) {
+ const plugin = loadedPlugins[i];
+
+ if (plugin.type === "daemon") {
+ continue;
+ }
+
+ const pluginComponent = PluginService.pluginWidgetComponents[plugin.id];
+ if (!pluginComponent)
+ continue;
+
+ let tempInstance;
+ try {
+ tempInstance = pluginComponent.createObject(null);
+ } catch (e) {
+ PluginService.reloadPlugin(plugin.id);
+ continue;
+ }
+ if (!tempInstance)
+ continue;
+
+ const hasCCWidget = tempInstance.ccWidgetIcon && tempInstance.ccWidgetIcon.length > 0;
+ tempInstance.destroy();
+
+ if (!hasCCWidget) {
+ continue;
+ }
+
+ plugins.push({
+ "id": "plugin_" + plugin.id,
+ "pluginId": plugin.id,
+ "text": plugin.name || I18n.tr("Plugin"),
+ "description": plugin.description || "",
+ "icon": plugin.icon || "extension",
+ "type": "plugin",
+ "enabled": true,
+ "isPlugin": true
+ });
+ }
+
+ return plugins;
+ }
+
+ readonly property var baseWidgetDefinitions: coreWidgetDefinitions
+
+ function getWidgetForId(widgetId) {
+ return WidgetUtils.getWidgetForId(baseWidgetDefinitions, widgetId);
+ }
+
+ function addWidget(widgetId) {
+ WidgetUtils.addWidget(widgetId);
+ }
+
+ function removeWidget(index) {
+ WidgetUtils.removeWidget(index);
+ }
+
+ function toggleWidgetSize(index) {
+ WidgetUtils.toggleWidgetSize(index);
+ }
+
+ function moveWidget(fromIndex, toIndex) {
+ WidgetUtils.moveWidget(fromIndex, toIndex);
+ }
+
+ function resetToDefault() {
+ WidgetUtils.resetToDefault();
+ }
+
+ function clearAll() {
+ WidgetUtils.clearAll();
+ }
+}