diff options
| author | AlexanderCurl <alexc@alexc.hu> | 2026-04-18 17:46:06 +0100 |
|---|---|---|
| committer | AlexanderCurl <alexc@alexc.hu> | 2026-04-18 17:46:06 +0100 |
| commit | 70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 (patch) | |
| tree | ab1123d4067c1b086dd6faa7ee4ea643236b565a /raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins | |
| parent | 5d94c0a7d44a2255b81815a52a7056a94a39842d (diff) | |
| download | RaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.tar.gz RaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.zip | |
Replaced file structures for themes in the correct format
Diffstat (limited to 'raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins')
15 files changed, 0 insertions, 2714 deletions
diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/BasePill.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/BasePill.qml deleted file mode 100644 index 7dea95a..0000000 --- a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/BasePill.qml +++ /dev/null @@ -1,195 +0,0 @@ -import QtQuick -import qs.Common -import qs.Services -import qs.Widgets - -Item { - id: root - - property var axis: null - property string section: "center" - property var popoutTarget: null - property var parentScreen: null - property real widgetThickness: 30 - property real barThickness: 48 - property real barSpacing: 4 - property var barConfig: null - property var blurBarWindow: null - property alias content: contentLoader.sourceComponent - property bool isVerticalOrientation: axis?.isVertical ?? false - property bool isFirst: false - property bool isLast: false - property real sectionSpacing: 0 - property bool enableBackgroundHover: true - property bool enableCursor: true - readonly property bool isMouseHovered: mouseArea.containsMouse - property bool isLeftBarEdge: false - property bool isRightBarEdge: false - property bool isTopBarEdge: false - property bool isBottomBarEdge: false - readonly property real dpr: parentScreen ? CompositorService.getScreenScale(parentScreen) : 1 - readonly property real horizontalPadding: (barConfig?.removeWidgetPadding ?? false) ? 0 : Theme.snap((barConfig?.widgetPadding ?? 12) * (widgetThickness / 30), dpr) - readonly property real visualWidth: Theme.snap(isVerticalOrientation ? widgetThickness : (contentLoader.item ? (contentLoader.item.implicitWidth + horizontalPadding * 2) : 0), dpr) - readonly property real visualHeight: Theme.snap(isVerticalOrientation ? (contentLoader.item ? (contentLoader.item.implicitHeight + horizontalPadding * 2) : 0) : widgetThickness, dpr) - readonly property alias visualContent: visualContent - readonly property real barEdgeExtension: 1000 - readonly property real gapExtension: sectionSpacing - readonly property real leftMargin: !isVerticalOrientation ? (isLeftBarEdge && isFirst ? barEdgeExtension : (isFirst ? gapExtension : gapExtension / 2)) : 0 - readonly property real rightMargin: !isVerticalOrientation ? (isRightBarEdge && isLast ? barEdgeExtension : (isLast ? gapExtension : gapExtension / 2)) : 0 - readonly property real topMargin: isVerticalOrientation ? (isTopBarEdge && isFirst ? barEdgeExtension : (isFirst ? gapExtension : gapExtension / 2)) : 0 - readonly property real bottomMargin: isVerticalOrientation ? (isBottomBarEdge && isLast ? barEdgeExtension : (isLast ? gapExtension : gapExtension / 2)) : 0 - - signal clicked - signal rightClicked(real rootX, real rootY) - signal wheel(var wheelEvent) - - function triggerRipple(sourceItem, mouseX, mouseY) { - const pos = sourceItem.mapToItem(visualContent, mouseX, mouseY); - rippleLayer.trigger(pos.x, pos.y); - } - - width: isVerticalOrientation ? barThickness : visualWidth - height: isVerticalOrientation ? visualHeight : barThickness - - Item { - id: visualContent - width: root.visualWidth - height: root.visualHeight - anchors.centerIn: parent - - Rectangle { - id: outline - anchors.centerIn: parent - width: { - const borderWidth = (barConfig?.widgetOutlineEnabled ?? false) ? (barConfig?.widgetOutlineThickness ?? 1) : 0; - return parent.width + borderWidth * 2; - } - height: { - const borderWidth = (barConfig?.widgetOutlineEnabled ?? false) ? (barConfig?.widgetOutlineThickness ?? 1) : 0; - return parent.height + borderWidth * 2; - } - radius: (barConfig?.noBackground ?? false) ? 0 : Theme.cornerRadius - color: "transparent" - border.width: { - if (barConfig?.widgetOutlineEnabled ?? false) { - return barConfig?.widgetOutlineThickness ?? 1; - } - return 0; - } - border.color: { - if (!(barConfig?.widgetOutlineEnabled ?? false)) { - return "transparent"; - } - const colorOption = barConfig?.widgetOutlineColor || "primary"; - const opacity = barConfig?.widgetOutlineOpacity ?? 1.0; - switch (colorOption) { - case "surfaceText": - return Theme.withAlpha(Theme.surfaceText, opacity); - case "secondary": - return Theme.withAlpha(Theme.secondary, opacity); - case "primary": - return Theme.withAlpha(Theme.primary, opacity); - default: - return Theme.withAlpha(Theme.primary, opacity); - } - } - } - - Rectangle { - id: background - anchors.fill: parent - radius: (barConfig?.noBackground ?? false) ? 0 : Theme.cornerRadius - color: { - if (barConfig?.noBackground ?? false) { - return "transparent"; - } - - const rawTransparency = (root.barConfig && root.barConfig.widgetTransparency !== undefined) ? root.barConfig.widgetTransparency : 1.0; - const isHovered = root.enableBackgroundHover && (mouseArea.containsMouse || (root.isHovered || false)); - const transparency = isHovered ? Math.max(0.3, rawTransparency) : rawTransparency; - const baseColor = isHovered ? BlurService.hoverColor(Theme.widgetBaseHoverColor) : Theme.widgetBaseBackgroundColor; - - if (Theme.widgetBackgroundHasAlpha) { - return Qt.rgba(baseColor.r, baseColor.g, baseColor.b, baseColor.a * transparency); - } - return Theme.withAlpha(baseColor, transparency); - } - } - - DankRipple { - id: rippleLayer - rippleColor: Theme.surfaceText - cornerRadius: background.radius - } - - Loader { - id: contentLoader - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter - } - } - - MouseArea { - id: mouseArea - z: -1 - x: -root.leftMargin - y: -root.topMargin - width: root.width + root.leftMargin + root.rightMargin - height: root.height + root.topMargin + root.bottomMargin - hoverEnabled: true - cursorShape: root.enableCursor ? Qt.PointingHandCursor : Qt.ArrowCursor - acceptedButtons: Qt.LeftButton | Qt.RightButton - onPressed: function (mouse) { - if (mouse.button === Qt.RightButton) { - const rPos = mouseArea.mapToItem(root, mouse.x, mouse.y); - root.rightClicked(rPos.x, rPos.y); - return; - } - const ripplePos = mouseArea.mapToItem(visualContent, mouse.x, mouse.y); - rippleLayer.trigger(ripplePos.x, ripplePos.y); - if (popoutTarget) { - // Ensure bar context is set first if supported - if (popoutTarget.setBarContext) { - const pos = root.axis?.edge === "left" ? 2 : (root.axis?.edge === "right" ? 3 : (root.axis?.edge === "top" ? 0 : 1)); - const bottomGap = root.barConfig ? (root.barConfig.bottomGap !== undefined ? root.barConfig.bottomGap : 0) : 0; - popoutTarget.setBarContext(pos, bottomGap); - } - - if (popoutTarget.setTriggerPosition) { - const globalPos = root.visualContent.mapToItem(null, 0, 0); - const currentScreen = parentScreen || Screen; - const barPosition = root.axis?.edge === "left" ? 2 : (root.axis?.edge === "right" ? 3 : (root.axis?.edge === "top" ? 0 : 1)); - const pos = SettingsData.getPopupTriggerPosition(globalPos, currentScreen, barThickness, root.visualWidth, root.barSpacing, barPosition, root.barConfig); - popoutTarget.setTriggerPosition(pos.x, pos.y, pos.width, section, currentScreen, barPosition, barThickness, root.barSpacing, root.barConfig); - } - } - root.clicked(); - } - onWheel: function (wheelEvent) { - wheelEvent.accepted = false; - root.wheel(wheelEvent); - } - } - - property bool _blurRegistered: false - readonly property bool _shouldBlur: BlurService.enabled && blurBarWindow && blurBarWindow.registerBlurWidget && !(barConfig?.noBackground ?? false) && root.visible && root.width > 0 - - on_ShouldBlurChanged: _updateBlurRegistration() - - function _updateBlurRegistration() { - if (_shouldBlur && !_blurRegistered) { - blurBarWindow.registerBlurWidget(visualContent); - _blurRegistered = true; - } else if (!_shouldBlur && _blurRegistered) { - if (blurBarWindow && blurBarWindow.unregisterBlurWidget) - blurBarWindow.unregisterBlurWidget(visualContent); - _blurRegistered = false; - } - } - - Component.onCompleted: _updateBlurRegistration() - Component.onDestruction: { - if (_blurRegistered && blurBarWindow && blurBarWindow.unregisterBlurWidget) - blurBarWindow.unregisterBlurWidget(visualContent); - } -} diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/ColorSetting.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/ColorSetting.qml deleted file mode 100644 index 5ef3190..0000000 --- a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/ColorSetting.qml +++ /dev/null @@ -1,104 +0,0 @@ -import QtQuick -import qs.Common -import qs.Services -import qs.Widgets - -Column { - id: root - - required property string settingKey - required property string label - property string description: "" - property color defaultValue: Theme.primary - property color value: defaultValue - - width: parent.width - spacing: Theme.spacingS - - property bool isInitialized: false - - function loadValue() { - const settings = findSettings(); - if (settings && settings.pluginService) { - const loadedValue = settings.loadValue(settingKey, defaultValue); - value = loadedValue; - isInitialized = true; - } - } - - Component.onCompleted: { - Qt.callLater(loadValue); - } - - onValueChanged: { - if (!isInitialized) - return; - const settings = findSettings(); - if (settings) { - settings.saveValue(settingKey, value); - } - } - - function findSettings() { - let item = parent; - while (item) { - if (item.saveValue !== undefined && item.loadValue !== undefined) { - return item; - } - item = item.parent; - } - return null; - } - - StyledText { - text: root.label - font.pixelSize: Theme.fontSizeMedium - font.weight: Font.Medium - color: Theme.surfaceText - } - - StyledText { - text: root.description - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - width: parent.width - wrapMode: Text.WordWrap - visible: root.description !== "" - } - - Row { - width: parent.width - spacing: Theme.spacingS - - Rectangle { - width: 100 - height: 36 - radius: Theme.cornerRadius - color: root.value - border.color: Theme.outlineStrong - border.width: 2 - - MouseArea { - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - onClicked: { - if (PopoutService && PopoutService.colorPickerModal) { - PopoutService.colorPickerModal.selectedColor = root.value; - PopoutService.colorPickerModal.pickerTitle = root.label; - PopoutService.colorPickerModal.onColorSelectedCallback = function (selectedColor) { - root.value = selectedColor; - }; - PopoutService.colorPickerModal.show(); - } - } - } - } - - StyledText { - text: root.value.toString() - font.pixelSize: Theme.fontSizeMedium - color: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - } - } -} diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/DesktopPluginComponent.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/DesktopPluginComponent.qml deleted file mode 100644 index 1fd7ab8..0000000 --- a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/DesktopPluginComponent.qml +++ /dev/null @@ -1,67 +0,0 @@ -import QtQuick -import qs.Common - -Item { - id: root - - property var pluginService: null - property string pluginId: "" - property string instanceId: "" - property var instanceData: null - - property real widgetWidth: 200 - property real widgetHeight: 200 - property real minWidth: 100 - property real minHeight: 100 - - readonly property bool isInstance: instanceId !== "" && instanceData !== null - readonly property var instanceConfig: instanceData?.config ?? {} - - property var pluginData: isInstance ? instanceConfig : _globalPluginData - property var _globalPluginData: ({}) - - Component.onCompleted: loadPluginData() - onPluginServiceChanged: loadPluginData() - onPluginIdChanged: loadPluginData() - onInstanceDataChanged: { - if (isInstance) - Qt.callLater(() => { - pluginData = instanceConfig; - }); - } - - Connections { - target: pluginService - enabled: pluginService !== null - - function onPluginDataChanged(changedPluginId) { - if (changedPluginId !== pluginId) - return; - loadPluginData(); - } - } - - function loadPluginData() { - if (!pluginService || !pluginId) { - _globalPluginData = {}; - return; - } - if (isInstance) { - pluginData = instanceConfig; - return; - } - _globalPluginData = SettingsData.getPluginSettingsForPlugin(pluginId); - } - - function getData(key, defaultValue) { - if (!pluginService || !pluginId) - return defaultValue; - return pluginService.loadPluginData(pluginId, key, defaultValue); - } - - function setData(key, value) { - if (!pluginService || !pluginId) - return; - pluginService.savePluginData(pluginId, key, value); - } -} diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/DesktopPluginWrapper.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/DesktopPluginWrapper.qml deleted file mode 100644 index c7a5c76..0000000 --- a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/DesktopPluginWrapper.qml +++ /dev/null @@ -1,758 +0,0 @@ -import QtQuick -import QtQuick.Controls -import Quickshell -import Quickshell.Wayland -import Quickshell.Hyprland -import qs.Common -import qs.Services -import qs.Widgets - -Item { - id: root - - required property string pluginId - required property var screen - - property var builtinComponent: null - property var pluginService: null - property string instanceId: "" - property var instanceData: null - property bool widgetEnabled: true - - readonly property bool isBuiltin: pluginId === "desktopClock" || pluginId === "systemMonitor" - readonly property var activeComponent: isBuiltin ? builtinComponent : PluginService.pluginDesktopComponents[pluginId] ?? null - - readonly property bool showOnOverlay: instanceData?.config?.showOnOverlay ?? false - readonly property bool showOnOverview: instanceData?.config?.showOnOverview ?? false - readonly property bool showOnOverviewOnly: instanceData?.config?.showOnOverviewOnly ?? false - readonly property bool overviewActive: CompositorService.isNiri && NiriService.inOverview - readonly property bool clickThrough: instanceData?.config?.clickThrough ?? false - readonly property bool syncPositionAcrossScreens: instanceData?.config?.syncPositionAcrossScreens ?? false - - Connections { - target: PluginService - enabled: !root.isBuiltin - - function onPluginLoaded(loadedPluginId) { - if (loadedPluginId === root.pluginId) - contentLoader.reloadComponent(); - } - - function onPluginUnloaded(unloadedPluginId) { - if (unloadedPluginId === root.pluginId) - contentLoader.reloadComponent(); - } - } - - readonly property string settingsKey: instanceId ? instanceId : pluginId - readonly property bool isInstance: instanceId !== "" && instanceData !== null - readonly property bool usePluginService: pluginService !== null && !isInstance - - QtObject { - id: instanceScopedPluginService - - readonly property var availablePlugins: PluginService.availablePlugins - readonly property var loadedPlugins: PluginService.loadedPlugins - readonly property var pluginDesktopComponents: PluginService.pluginDesktopComponents - - signal pluginDataChanged(string pluginId) - signal pluginLoaded(string pluginId) - signal pluginUnloaded(string pluginId) - - function loadPluginData(pluginId, key, defaultValue) { - const cfg = root.instanceData?.config; - if (cfg && key in cfg) - return cfg[key]; - return SettingsData.getPluginSetting(pluginId, key, defaultValue); - } - - function savePluginData(pluginId, key, value) { - if (!root.instanceId) - return false; - var updates = {}; - updates[key] = value; - SettingsData.updateDesktopWidgetInstanceConfig(root.instanceId, updates); - Qt.callLater(() => pluginDataChanged(pluginId)); - return true; - } - - function getPluginVariants(pluginId) { - return PluginService.getPluginVariants(pluginId); - } - - function isPluginLoaded(pluginId) { - return PluginService.isPluginLoaded(pluginId); - } - } - readonly property string screenKey: SettingsData.getScreenDisplayName(screen) - readonly property string positionKey: syncPositionAcrossScreens ? "_synced" : screenKey - - readonly property int screenWidth: screen?.width ?? 1920 - readonly property int screenHeight: screen?.height ?? 1080 - - readonly property bool useGhostPreview: !CompositorService.isNiri - - property real previewX: widgetX - property real previewY: widgetY - property real previewWidth: widgetWidth - property real previewHeight: widgetHeight - - readonly property bool hasSavedPosition: { - if (isInstance) - return instanceData?.positions?.[positionKey]?.x !== undefined; - if (usePluginService) - return pluginService.loadPluginData(pluginId, "desktopX_" + positionKey, null) !== null; - return SettingsData.getDesktopWidgetPosition(pluginId, positionKey, "x", null) !== null; - } - - readonly property bool hasSavedSize: { - if (isInstance) - return instanceData?.positions?.[positionKey]?.width !== undefined; - if (usePluginService) - return pluginService.loadPluginData(pluginId, "desktopWidth_" + positionKey, null) !== null; - return SettingsData.getDesktopWidgetPosition(pluginId, positionKey, "width", null) !== null; - } - - property real savedX: { - if (isInstance) { - const val = instanceData?.positions?.[positionKey]?.x; - if (val === undefined) - return screenWidth / 2 - savedWidth / 2; - return syncPositionAcrossScreens ? val * screenWidth : val; - } - if (usePluginService) { - const val = pluginService.loadPluginData(pluginId, "desktopX_" + positionKey, null); - if (val === null) - return screenWidth / 2 - savedWidth / 2; - return syncPositionAcrossScreens ? val * screenWidth : val; - } - const val = SettingsData.getDesktopWidgetPosition(pluginId, positionKey, "x", null); - if (val === null) - return screenWidth / 2 - savedWidth / 2; - return syncPositionAcrossScreens ? val * screenWidth : val; - } - property real savedY: { - if (isInstance) { - const val = instanceData?.positions?.[positionKey]?.y; - if (val === undefined) - return screenHeight / 2 - savedHeight / 2; - return syncPositionAcrossScreens ? val * screenHeight : val; - } - if (usePluginService) { - const val = pluginService.loadPluginData(pluginId, "desktopY_" + positionKey, null); - if (val === null) - return screenHeight / 2 - savedHeight / 2; - return syncPositionAcrossScreens ? val * screenHeight : val; - } - const val = SettingsData.getDesktopWidgetPosition(pluginId, positionKey, "y", null); - if (val === null) - return screenHeight / 2 - savedHeight / 2; - return syncPositionAcrossScreens ? val * screenHeight : val; - } - property real savedWidth: { - if (isInstance) { - const val = instanceData?.positions?.[positionKey]?.width; - if (val === undefined) - return 280; - return val; - } - if (usePluginService) { - const val = pluginService.loadPluginData(pluginId, "desktopWidth_" + positionKey, null); - if (val === null) - return 200; - return val; - } - const val = SettingsData.getDesktopWidgetPosition(pluginId, positionKey, "width", null); - if (val === null) - return 280; - return val; - } - property real savedHeight: { - if (isInstance) { - const val = instanceData?.positions?.[positionKey]?.height; - if (val === undefined) - return forceSquare ? savedWidth : 180; - return forceSquare ? savedWidth : val; - } - if (usePluginService) { - const val = pluginService.loadPluginData(pluginId, "desktopHeight_" + positionKey, null); - if (val === null) - return forceSquare ? savedWidth : 200; - return forceSquare ? savedWidth : val; - } - const val = SettingsData.getDesktopWidgetPosition(pluginId, positionKey, "height", null); - if (val === null) - return forceSquare ? savedWidth : 180; - return forceSquare ? savedWidth : val; - } - - property real dragOverrideX: -1 - property real dragOverrideY: -1 - property real dragOverrideW: -1 - property real dragOverrideH: -1 - - readonly property real effectiveX: dragOverrideX >= 0 ? dragOverrideX : savedX - readonly property real effectiveY: dragOverrideY >= 0 ? dragOverrideY : savedY - readonly property real effectiveW: dragOverrideW >= 0 ? dragOverrideW : savedWidth - readonly property real effectiveH: dragOverrideH >= 0 ? dragOverrideH : savedHeight - - readonly property real widgetX: Math.max(0, Math.min(effectiveX, screenWidth - widgetWidth)) - readonly property real widgetY: Math.max(0, Math.min(effectiveY, screenHeight - widgetHeight)) - readonly property real widgetWidth: Math.max(minWidth, Math.min(effectiveW, screenWidth)) - readonly property real widgetHeight: Math.max(minHeight, Math.min(effectiveH, screenHeight)) - - function clearDragOverrides() { - dragOverrideX = -1; - dragOverrideY = -1; - dragOverrideW = -1; - dragOverrideH = -1; - } - - property real minWidth: contentLoader.item?.minWidth ?? 100 - property real minHeight: contentLoader.item?.minHeight ?? 100 - property bool forceSquare: contentLoader.item?.forceSquare ?? false - property bool isInteracting: dragArea.pressed || resizeArea.pressed - - property var _gridSettingsTrigger: SettingsData.desktopWidgetGridSettings - readonly property int gridSize: { - void _gridSettingsTrigger; - return SettingsData.getDesktopWidgetGridSetting(screenKey, "size", 40); - } - readonly property bool gridEnabled: { - void _gridSettingsTrigger; - return SettingsData.getDesktopWidgetGridSetting(screenKey, "enabled", false); - } - - function snapToGrid(value) { - return Math.round(value / gridSize) * gridSize; - } - - function savePosition(finalX, finalY) { - const xVal = syncPositionAcrossScreens ? finalX / screenWidth : finalX; - const yVal = syncPositionAcrossScreens ? finalY / screenHeight : finalY; - if (isInstance && instanceData) { - SettingsData.updateDesktopWidgetInstancePosition(instanceId, positionKey, { - x: xVal, - y: yVal - }); - return; - } - if (usePluginService) { - pluginService.savePluginData(pluginId, "desktopX_" + positionKey, xVal); - pluginService.savePluginData(pluginId, "desktopY_" + positionKey, yVal); - return; - } - SettingsData.updateDesktopWidgetPosition(pluginId, positionKey, { - x: xVal, - y: yVal - }); - } - - function saveSize(finalW, finalH) { - const sizeVal = forceSquare ? Math.max(finalW, finalH) : finalW; - const heightVal = forceSquare ? sizeVal : finalH; - if (isInstance && instanceData) { - SettingsData.updateDesktopWidgetInstancePosition(instanceId, positionKey, { - width: sizeVal, - height: heightVal - }); - return; - } - if (usePluginService) { - pluginService.savePluginData(pluginId, "desktopWidth_" + positionKey, sizeVal); - pluginService.savePluginData(pluginId, "desktopHeight_" + positionKey, heightVal); - return; - } - SettingsData.updateDesktopWidgetPosition(pluginId, positionKey, { - width: sizeVal, - height: heightVal - }); - } - - PanelWindow { - id: widgetWindow - screen: root.screen - visible: { - if (!root.widgetEnabled || root.activeComponent === null) - return false; - if (root.showOnOverviewOnly) - return root.overviewActive; - return true; - } - color: "transparent" - - Region { - id: emptyMask - } - - mask: root.clickThrough ? emptyMask : null - - WlrLayershell.namespace: "dms:desktop-widget:" + root.pluginId + (root.instanceId ? ":" + root.instanceId : "") - WlrLayershell.layer: { - if (root.isInteracting && !CompositorService.useHyprlandFocusGrab) - return WlrLayer.Overlay; - if (root.showOnOverlay) - return WlrLayer.Overlay; - if (root.overviewActive && (root.showOnOverview || root.showOnOverviewOnly)) - return WlrLayer.Overlay; - return WlrLayer.Bottom; - } - WlrLayershell.exclusionMode: ExclusionMode.Ignore - WlrLayershell.keyboardFocus: { - if (!root.isInteracting) - return WlrKeyboardFocus.None; - if (CompositorService.useHyprlandFocusGrab) - return WlrKeyboardFocus.OnDemand; - return WlrKeyboardFocus.Exclusive; - } - - HyprlandFocusGrab { - active: CompositorService.isHyprland && root.isInteracting - windows: [widgetWindow] - } - - Item { - anchors.fill: parent - focus: root.isInteracting - - Keys.onPressed: event => { - if (!root.isInteracting) - return; - switch (event.key) { - case Qt.Key_G: - SettingsData.setDesktopWidgetGridSetting(root.screenKey, "enabled", !root.gridEnabled); - event.accepted = true; - break; - case Qt.Key_Z: - SettingsData.setDesktopWidgetGridSetting(root.screenKey, "size", Math.max(10, root.gridSize - 10)); - event.accepted = true; - break; - case Qt.Key_X: - SettingsData.setDesktopWidgetGridSetting(root.screenKey, "size", Math.min(200, root.gridSize + 10)); - event.accepted = true; - break; - } - } - } - - anchors { - left: true - top: true - } - - WlrLayershell.margins { - left: root.widgetX - top: root.widgetY - } - - implicitWidth: root.widgetWidth - implicitHeight: root.widgetHeight - - Loader { - id: contentLoader - anchors.fill: parent - active: root.widgetEnabled && root.activeComponent !== null - sourceComponent: root.activeComponent - - function reloadComponent() { - active = false; - active = true; - } - - function updateInstanceData() { - if (!item || item.instanceData === undefined) - return; - item.instanceData = root.instanceData; - } - - Connections { - target: root - enabled: contentLoader.item !== null - - function onInstanceDataChanged() { - contentLoader.updateInstanceData(); - } - } - - onLoaded: { - if (!item) - return; - - if (item.pluginService !== undefined) { - item.pluginService = root.isInstance ? instanceScopedPluginService : root.pluginService; - } - if (item.pluginId !== undefined) - item.pluginId = root.pluginId; - if (item.instanceId !== undefined) - item.instanceId = root.instanceId; - if (item.instanceData !== undefined) - item.instanceData = root.instanceData; - if (!root.hasSavedSize) { - const defW = item.defaultWidth ?? item.widgetWidth ?? 280; - const defH = item.defaultHeight ?? item.widgetHeight ?? 180; - const finalW = Math.max(root.minWidth, Math.min(defW, root.screenWidth)); - const finalH = Math.max(root.minHeight, Math.min(defH, root.screenHeight)); - root.saveSize(finalW, finalH); - } - if (!root.hasSavedPosition) { - const finalX = Math.max(0, Math.min(root.screenWidth / 2 - root.widgetWidth / 2, root.screenWidth - root.widgetWidth)); - const finalY = Math.max(0, Math.min(root.screenHeight / 2 - root.widgetHeight / 2, root.screenHeight - root.widgetHeight)); - root.savePosition(finalX, finalY); - } - if (item.widgetWidth !== undefined) - item.widgetWidth = Qt.binding(() => contentLoader.width); - if (item.widgetHeight !== undefined) - item.widgetHeight = Qt.binding(() => contentLoader.height); - } - } - - Rectangle { - id: interactionBorder - anchors.fill: parent - color: "transparent" - border.color: Theme.primary - border.width: 2 - radius: Theme.cornerRadius - visible: root.isInteracting && !root.useGhostPreview - opacity: 0.8 - - Rectangle { - anchors.right: parent.right - anchors.bottom: parent.bottom - width: 48 - height: 48 - topLeftRadius: Theme.cornerRadius - bottomRightRadius: Theme.cornerRadius - color: Theme.primary - opacity: resizeArea.pressed ? 1 : 0.6 - } - } - - MouseArea { - id: dragArea - anchors.fill: parent - acceptedButtons: Qt.RightButton - enabled: !root.clickThrough - cursorShape: pressed ? Qt.ClosedHandCursor : Qt.ArrowCursor - - property point startPos - property real startX - property real startY - - onPressed: mouse => { - startPos = root.useGhostPreview ? Qt.point(mouse.x, mouse.y) : mapToGlobal(mouse.x, mouse.y); - startX = root.widgetX; - startY = root.widgetY; - root.previewX = root.widgetX; - root.previewY = root.widgetY; - root.dragOverrideX = root.widgetX; - root.dragOverrideY = root.widgetY; - } - - onPositionChanged: mouse => { - if (!pressed) - return; - const currentPos = root.useGhostPreview ? Qt.point(mouse.x, mouse.y) : mapToGlobal(mouse.x, mouse.y); - let newX = Math.max(0, Math.min(startX + currentPos.x - startPos.x, root.screenWidth - root.widgetWidth)); - let newY = Math.max(0, Math.min(startY + currentPos.y - startPos.y, root.screenHeight - root.widgetHeight)); - if (root.gridEnabled) { - newX = Math.max(0, Math.min(root.snapToGrid(newX), root.screenWidth - root.widgetWidth)); - newY = Math.max(0, Math.min(root.snapToGrid(newY), root.screenHeight - root.widgetHeight)); - } - if (root.useGhostPreview) { - root.previewX = newX; - root.previewY = newY; - return; - } - root.dragOverrideX = newX; - root.dragOverrideY = newY; - } - - onReleased: { - const finalX = root.useGhostPreview ? root.previewX : root.dragOverrideX; - const finalY = root.useGhostPreview ? root.previewY : root.dragOverrideY; - root.savePosition(finalX, finalY); - root.clearDragOverrides(); - } - } - - MouseArea { - id: resizeArea - width: 48 - height: 48 - anchors.right: parent.right - anchors.bottom: parent.bottom - acceptedButtons: Qt.RightButton - enabled: !root.clickThrough - cursorShape: pressed ? Qt.SizeFDiagCursor : Qt.ArrowCursor - - property point startPos - property real startWidth - property real startHeight - - onPressed: mouse => { - startPos = root.useGhostPreview ? Qt.point(mouse.x, mouse.y) : mapToGlobal(mouse.x, mouse.y); - startWidth = root.widgetWidth; - startHeight = root.widgetHeight; - root.previewWidth = root.widgetWidth; - root.previewHeight = root.widgetHeight; - root.dragOverrideW = root.widgetWidth; - root.dragOverrideH = root.widgetHeight; - } - - onPositionChanged: mouse => { - if (!pressed) - return; - const currentPos = root.useGhostPreview ? Qt.point(mouse.x, mouse.y) : mapToGlobal(mouse.x, mouse.y); - let newW = Math.max(root.minWidth, Math.min(startWidth + currentPos.x - startPos.x, root.screenWidth - root.widgetX)); - let newH = Math.max(root.minHeight, Math.min(startHeight + currentPos.y - startPos.y, root.screenHeight - root.widgetY)); - if (root.gridEnabled) { - newW = Math.max(root.minWidth, root.snapToGrid(newW)); - newH = Math.max(root.minHeight, root.snapToGrid(newH)); - } - if (root.forceSquare) { - const size = Math.max(newW, newH); - newW = Math.min(size, root.screenWidth - root.widgetX); - newH = Math.min(size, root.screenHeight - root.widgetY); - } - if (root.useGhostPreview) { - root.previewWidth = newW; - root.previewHeight = newH; - return; - } - root.dragOverrideW = newW; - root.dragOverrideH = newH; - } - - onReleased: { - const finalW = root.useGhostPreview ? root.previewWidth : root.dragOverrideW; - const finalH = root.useGhostPreview ? root.previewHeight : root.dragOverrideH; - root.saveSize(finalW, finalH); - root.clearDragOverrides(); - } - } - } - - Loader { - active: root.isInteracting && root.useGhostPreview - - sourceComponent: PanelWindow { - id: ghostPreviewWindow - screen: root.screen - color: "transparent" - - anchors { - left: true - right: true - top: true - bottom: true - } - - mask: Region {} - - WlrLayershell.namespace: "dms:desktop-widget-preview" - WlrLayershell.layer: WlrLayer.Bottom - WlrLayershell.exclusionMode: ExclusionMode.Ignore - WlrLayershell.keyboardFocus: WlrKeyboardFocus.None - - Item { - id: gridOverlay - anchors.fill: parent - visible: root.gridEnabled - opacity: 0.3 - - Repeater { - model: Math.ceil(root.screenWidth / root.gridSize) - - Rectangle { - required property int index - x: index * root.gridSize - y: 0 - width: 1 - height: root.screenHeight - color: Theme.primary - } - } - - Repeater { - model: Math.ceil(root.screenHeight / root.gridSize) - - Rectangle { - required property int index - x: 0 - y: index * root.gridSize - width: root.screenWidth - height: 1 - color: Theme.primary - } - } - } - - Rectangle { - x: root.previewX - y: root.previewY - width: root.previewWidth - height: root.previewHeight - color: "transparent" - border.color: Theme.primary - border.width: 2 - radius: Theme.cornerRadius - - Rectangle { - width: 48 - height: 48 - anchors { - right: parent.right - bottom: parent.bottom - } - topLeftRadius: Theme.cornerRadius - bottomRightRadius: Theme.cornerRadius - color: Theme.primary - opacity: resizeArea.pressed ? 1 : 0.6 - } - } - } - } - - Loader { - active: root.isInteracting && root.gridEnabled && !root.useGhostPreview - - sourceComponent: PanelWindow { - screen: root.screen - color: "transparent" - - anchors { - left: true - right: true - top: true - bottom: true - } - - mask: Region {} - - WlrLayershell.namespace: "dms:desktop-widget-grid" - WlrLayershell.layer: root.overviewActive && (root.showOnOverview || root.showOnOverviewOnly) ? WlrLayer.Overlay : WlrLayer.Background - WlrLayershell.exclusionMode: ExclusionMode.Ignore - WlrLayershell.keyboardFocus: WlrKeyboardFocus.None - - Item { - anchors.fill: parent - opacity: 0.3 - - Repeater { - model: Math.ceil(root.screenWidth / root.gridSize) - - Rectangle { - required property int index - x: index * root.gridSize - y: 0 - width: 1 - height: root.screenHeight - color: Theme.primary - } - } - - Repeater { - model: Math.ceil(root.screenHeight / root.gridSize) - - Rectangle { - required property int index - x: 0 - y: index * root.gridSize - width: root.screenWidth - height: 1 - color: Theme.primary - } - } - } - } - } - - Loader { - active: root.isInteracting - - sourceComponent: PanelWindow { - id: helperWindow - screen: root.screen - color: "transparent" - - WlrLayershell.namespace: "dms:desktop-widget-helper" - WlrLayershell.layer: WlrLayer.Overlay - WlrLayershell.exclusionMode: ExclusionMode.Ignore - WlrLayershell.keyboardFocus: WlrKeyboardFocus.None - - anchors { - bottom: true - left: true - right: true - } - - implicitHeight: 60 - - Rectangle { - id: helperContent - anchors.horizontalCenter: parent.horizontalCenter - anchors.bottom: parent.bottom - anchors.bottomMargin: Theme.spacingL - width: helperRow.implicitWidth + Theme.spacingM * 2 - height: 32 - radius: Theme.cornerRadius - color: Theme.surface - - Row { - id: helperRow - anchors.centerIn: parent - spacing: Theme.spacingM - height: parent.height - - DankIcon { - name: "grid_on" - size: 16 - color: root.gridEnabled ? Theme.primary : Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - } - - Text { - text: root.gridEnabled ? I18n.tr("Grid: ON", "Widget grid snap status") : I18n.tr("Grid: OFF", "Widget grid snap status") - font.pixelSize: Theme.fontSizeSmall - font.family: Theme.fontFamily - color: root.gridEnabled ? Theme.primary : Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - } - - Rectangle { - width: 1 - height: 16 - color: Theme.outline - anchors.verticalCenter: parent.verticalCenter - } - - Text { - text: root.gridSize + "px" - font.pixelSize: Theme.fontSizeSmall - font.family: Theme.fontFamily - color: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - } - - Rectangle { - width: 1 - height: 16 - color: Theme.outline - anchors.verticalCenter: parent.verticalCenter - } - - Text { - text: I18n.tr("G: grid • Z/X: size", "Widget grid keyboard hints") - font.pixelSize: Theme.fontSizeSmall - font.family: Theme.fontFamily - font.italic: true - color: Theme.surfaceText - opacity: 0.7 - anchors.verticalCenter: parent.verticalCenter - } - } - } - } - } -} diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/ListSetting.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/ListSetting.qml deleted file mode 100644 index 5f636f5..0000000 --- a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/ListSetting.qml +++ /dev/null @@ -1,132 +0,0 @@ -import QtQuick -import qs.Common -import qs.Widgets - -Column { - id: root - - required property string settingKey - required property string label - property string description: "" - property var defaultValue: [] - property var items: defaultValue - property Component delegate: null - - width: parent.width - spacing: Theme.spacingM - - Component.onCompleted: { - const settings = findSettings() - if (settings) { - items = settings.loadValue(settingKey, defaultValue) - } - } - - onItemsChanged: { - const settings = findSettings() - if (settings) { - settings.saveValue(settingKey, items) - } - } - - function findSettings() { - let item = parent - while (item) { - if (item.saveValue !== undefined && item.loadValue !== undefined) { - return item - } - item = item.parent - } - return null - } - - function addItem(item) { - items = items.concat([item]) - } - - function removeItem(index) { - const newItems = items.slice() - newItems.splice(index, 1) - items = newItems - } - - StyledText { - text: root.label - font.pixelSize: Theme.fontSizeMedium - font.weight: Font.Medium - color: Theme.surfaceText - } - - StyledText { - text: root.description - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - width: parent.width - wrapMode: Text.WordWrap - visible: root.description !== "" - } - - Column { - width: parent.width - spacing: Theme.spacingS - - Repeater { - model: root.items - delegate: root.delegate ? root.delegate : defaultDelegate - } - - StyledText { - text: I18n.tr("No items added yet") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - visible: root.items.length === 0 - } - } - - Component { - id: defaultDelegate - StyledRect { - width: parent.width - height: 40 - radius: Theme.cornerRadius - color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - border.width: 0 - - StyledText { - anchors.left: parent.left - anchors.leftMargin: Theme.spacingM - anchors.verticalCenter: parent.verticalCenter - text: modelData - color: Theme.surfaceText - } - - Rectangle { - anchors.right: parent.right - anchors.rightMargin: Theme.spacingM - anchors.verticalCenter: parent.verticalCenter - width: 60 - height: 28 - color: removeArea.containsMouse ? Theme.errorHover : Theme.error - radius: Theme.cornerRadius - - StyledText { - anchors.centerIn: parent - text: I18n.tr("Remove") - color: Theme.errorText - font.pixelSize: Theme.fontSizeSmall - font.weight: Font.Medium - } - - MouseArea { - id: removeArea - anchors.fill: parent - hoverEnabled: true - cursorShape: Qt.PointingHandCursor - onClicked: { - root.removeItem(index) - } - } - } - } - } -} diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/ListSettingWithInput.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/ListSettingWithInput.qml deleted file mode 100644 index 8da4fb6..0000000 --- a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/ListSettingWithInput.qml +++ /dev/null @@ -1,256 +0,0 @@ -import QtQuick -import qs.Common -import qs.Widgets - -Column { - id: root - - required property string settingKey - required property string label - property string description: "" - property var fields: [] - property var defaultValue: [] - property var items: defaultValue - - width: parent.width - spacing: Theme.spacingM - - property bool isLoading: false - - Component.onCompleted: { - loadValue() - } - - function loadValue() { - const settings = findSettings() - if (settings) { - isLoading = true - items = settings.loadValue(settingKey, defaultValue) - isLoading = false - } - } - - onItemsChanged: { - if (isLoading) { - return - } - const settings = findSettings() - if (settings) { - settings.saveValue(settingKey, items) - } - } - - function findSettings() { - let item = parent - while (item) { - if (item.saveValue !== undefined && item.loadValue !== undefined) { - return item - } - item = item.parent - } - return null - } - - function addItem(item) { - items = items.concat([item]) - } - - function removeItem(index) { - const newItems = items.slice() - newItems.splice(index, 1) - items = newItems - } - - StyledText { - text: root.label - font.pixelSize: Theme.fontSizeMedium - font.weight: Font.Medium - color: Theme.surfaceText - } - - StyledText { - text: root.description - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - width: parent.width - wrapMode: Text.WordWrap - visible: root.description !== "" - } - - Flow { - width: parent.width - spacing: Theme.spacingS - - Repeater { - model: root.fields - - StyledText { - text: modelData.label - font.pixelSize: Theme.fontSizeSmall - font.weight: Font.Medium - color: Theme.surfaceText - width: modelData.width || 200 - } - } - } - - Flow { - id: inputRow - width: parent.width - spacing: Theme.spacingS - - property var inputFields: [] - - Repeater { - id: inputRepeater - model: root.fields - - DankTextField { - width: modelData.width || 200 - placeholderText: modelData.placeholder || "" - - Component.onCompleted: { - inputRow.inputFields.push(this) - } - - Keys.onReturnPressed: { - addButton.clicked() - } - } - } - - DankButton { - id: addButton - width: 50 - height: 36 - text: I18n.tr("Add") - - onClicked: { - let newItem = {} - let hasValue = false - - for (let i = 0; i < root.fields.length; i++) { - const field = root.fields[i] - const input = inputRow.inputFields[i] - const value = input.text.trim() - - if (value !== "") { - hasValue = true - } - - if (field.required && value === "") { - return - } - - newItem[field.id] = value || (field.default || "") - } - - if (hasValue) { - root.addItem(newItem) - for (let i = 0; i < inputRow.inputFields.length; i++) { - inputRow.inputFields[i].text = "" - } - if (inputRow.inputFields.length > 0) { - inputRow.inputFields[0].forceActiveFocus() - } - } - } - } - } - - StyledText { - text: I18n.tr("Current Items") - font.pixelSize: Theme.fontSizeMedium - font.weight: Font.Medium - color: Theme.surfaceText - visible: root.items.length > 0 - } - - Column { - width: parent.width - spacing: Theme.spacingS - - Repeater { - model: root.items - - StyledRect { - width: parent.width - height: 40 - radius: Theme.cornerRadius - color: Theme.withAlpha(Theme.surfaceContainerHigh, Theme.popupTransparency) - border.width: 0 - - required property int index - required property var modelData - - Row { - id: itemRow - anchors.left: parent.left - anchors.leftMargin: Theme.spacingM - anchors.verticalCenter: parent.verticalCenter - spacing: Theme.spacingM - - property var itemData: parent.modelData - - Repeater { - model: root.fields - - StyledText { - required property int index - required property var modelData - - text: { - const field = modelData - const item = itemRow.itemData - if (!field || !field.id || !item) { - return "" - } - const value = item[field.id] - return value || "" - } - color: Theme.surfaceText - font.pixelSize: Theme.fontSizeMedium - width: modelData ? (modelData.width || 200) : 200 - elide: Text.ElideRight - } - } - } - - Rectangle { - anchors.right: parent.right - anchors.rightMargin: Theme.spacingM - anchors.verticalCenter: parent.verticalCenter - width: 60 - height: 28 - color: removeArea.containsMouse ? Theme.errorHover : Theme.error - radius: Theme.cornerRadius - - StyledText { - anchors.centerIn: parent - text: I18n.tr("Remove") - color: Theme.onError - font.pixelSize: Theme.fontSizeSmall - font.weight: Font.Medium - } - - MouseArea { - id: removeArea - anchors.fill: parent - hoverEnabled: true - cursorShape: Qt.PointingHandCursor - onClicked: { - root.removeItem(index) - } - } - } - } - } - - StyledText { - text: I18n.tr("No items added yet") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - visible: root.items.length === 0 - } - } -} diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PluginComponent.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PluginComponent.qml deleted file mode 100644 index 85dd32d..0000000 --- a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PluginComponent.qml +++ /dev/null @@ -1,333 +0,0 @@ -import QtQuick -import Quickshell.Io -import qs.Common - -Item { - id: root - - property string layerNamespacePlugin: "plugin" - - property var axis: null - property string section: "center" - property var parentScreen: null - property real widgetThickness: 30 - property real barThickness: 48 - property real barSpacing: 4 - property var barConfig: null - property var blurBarWindow: null - property string pluginId: "" - property var pluginService: null - - property string visibilityCommand: "" - property int visibilityInterval: 0 - property bool conditionVisible: true - property bool _visibilityOverride: false - property bool _visibilityOverrideValue: true - - readonly property bool effectiveVisible: { - if (_visibilityOverride) - return _visibilityOverrideValue; - if (!visibilityCommand) - return true; - return conditionVisible; - } - - property Component horizontalBarPill: null - property Component verticalBarPill: null - property Component popoutContent: null - property real popoutWidth: 400 - property real popoutHeight: 0 - property var pillClickAction: null - property var pillRightClickAction: null - - property Component controlCenterWidget: null - property string ccWidgetIcon: "" - property string ccWidgetPrimaryText: "" - property string ccWidgetSecondaryText: "" - property bool ccWidgetIsActive: false - property bool ccWidgetIsToggle: true - property Component ccDetailContent: null - property real ccDetailHeight: 250 - - signal ccWidgetToggled - signal ccWidgetExpanded - - property var pluginData: ({}) - property var variants: [] - - readonly property bool isVertical: axis?.isVertical ?? false - readonly property bool hasHorizontalPill: horizontalBarPill !== null - readonly property bool hasVerticalPill: verticalBarPill !== null - readonly property bool hasPopout: popoutContent !== null - - readonly property int iconSize: Theme.barIconSize(barThickness, -4, root.barConfig?.maximizeWidgetIcons, root.barConfig?.iconScale) - readonly property int iconSizeLarge: Theme.barIconSize(barThickness, undefined, root.barConfig?.maximizeWidgetIcons, root.barConfig?.iconScale) - - Component.onCompleted: { - loadPluginData(); - if (visibilityCommand) - Qt.callLater(checkVisibility); - } - - onPluginServiceChanged: { - loadPluginData(); - } - - onPluginIdChanged: { - loadPluginData(); - } - - Connections { - target: pluginService - function onPluginDataChanged(changedPluginId) { - if (changedPluginId === pluginId) { - loadPluginData(); - } - } - } - - function loadPluginData() { - if (!pluginService || !pluginId) { - pluginData = {}; - variants = []; - return; - } - pluginData = SettingsData.getPluginSettingsForPlugin(pluginId); - variants = pluginService.getPluginVariants(pluginId); - } - - function checkVisibility() { - if (!visibilityCommand) { - conditionVisible = true; - return; - } - visibilityProcess.running = true; - } - - function setVisibilityOverride(visible) { - _visibilityOverride = true; - _visibilityOverrideValue = visible; - } - - function clearVisibilityOverride() { - _visibilityOverride = false; - if (visibilityCommand) - checkVisibility(); - } - - onVisibilityCommandChanged: { - if (visibilityCommand) - Qt.callLater(checkVisibility); - else - conditionVisible = true; - } - - onVisibilityIntervalChanged: { - if (visibilityInterval > 0 && visibilityCommand) { - visibilityTimer.restart(); - } else { - visibilityTimer.stop(); - } - } - - Timer { - id: visibilityTimer - interval: root.visibilityInterval * 1000 - repeat: true - running: root.visibilityInterval > 0 && root.visibilityCommand !== "" - onTriggered: root.checkVisibility() - } - - Process { - id: visibilityProcess - command: ["sh", "-c", root.visibilityCommand] - running: false - onExited: (exitCode, exitStatus) => { - root.conditionVisible = (exitCode === 0); - } - } - - function createVariant(variantName, variantConfig) { - if (!pluginService || !pluginId) { - return null; - } - return pluginService.createPluginVariant(pluginId, variantName, variantConfig); - } - - function removeVariant(variantId) { - if (!pluginService || !pluginId) { - return; - } - pluginService.removePluginVariant(pluginId, variantId); - } - - function updateVariant(variantId, variantConfig) { - if (!pluginService || !pluginId) { - return; - } - pluginService.updatePluginVariant(pluginId, variantId, variantConfig); - } - - width: isVertical ? (hasVerticalPill ? verticalPill.width : 0) : (hasHorizontalPill ? horizontalPill.width : 0) - height: isVertical ? (hasVerticalPill ? verticalPill.height : 0) : (hasHorizontalPill ? horizontalPill.height : 0) - - BasePill { - id: horizontalPill - visible: !isVertical && hasHorizontalPill - opacity: root.effectiveVisible ? 1 : 0 - axis: root.axis - section: root.section - popoutTarget: hasPopout ? pluginPopout : null - parentScreen: root.parentScreen - widgetThickness: root.widgetThickness - barThickness: root.barThickness - barSpacing: root.barSpacing - barConfig: root.barConfig - blurBarWindow: root.blurBarWindow - content: root.horizontalBarPill - - states: State { - name: "hidden" - when: !root.effectiveVisible - PropertyChanges { - target: horizontalPill - width: 0 - } - } - - transitions: Transition { - NumberAnimation { - properties: "width,opacity" - duration: Theme.shortDuration - easing.type: Theme.standardEasing - } - } - - onClicked: { - if (pillClickAction) { - if (pillClickAction.length === 0) { - pillClickAction(); - } else { - const globalPos = mapToItem(null, 0, 0); - const currentScreen = parentScreen || Screen; - const pos = SettingsData.getPopupTriggerPosition(globalPos, currentScreen, barThickness, width); - pillClickAction(pos.x, pos.y, pos.width, section, currentScreen); - } - } else if (hasPopout) { - pluginPopout.toggle(); - } - } - onRightClicked: { - if (pillRightClickAction) { - if (pillRightClickAction.length === 0) { - pillRightClickAction(); - } else { - const globalPos = mapToItem(null, 0, 0); - const currentScreen = parentScreen || Screen; - const pos = SettingsData.getPopupTriggerPosition(globalPos, currentScreen, barThickness, width); - pillRightClickAction(pos.x, pos.y, pos.width, section, currentScreen); - } - } - } - } - - BasePill { - id: verticalPill - visible: isVertical && hasVerticalPill - opacity: root.effectiveVisible ? 1 : 0 - axis: root.axis - section: root.section - popoutTarget: hasPopout ? pluginPopout : null - parentScreen: root.parentScreen - widgetThickness: root.widgetThickness - barThickness: root.barThickness - barSpacing: root.barSpacing - barConfig: root.barConfig - blurBarWindow: root.blurBarWindow - content: root.verticalBarPill - isVerticalOrientation: true - - states: State { - name: "hidden" - when: !root.effectiveVisible - PropertyChanges { - target: verticalPill - height: 0 - } - } - - transitions: Transition { - NumberAnimation { - properties: "height,opacity" - duration: Theme.shortDuration - easing.type: Theme.standardEasing - } - } - - onClicked: { - if (pillClickAction) { - if (pillClickAction.length === 0) { - pillClickAction(); - } else { - const globalPos = mapToItem(null, 0, 0); - const currentScreen = parentScreen || Screen; - const pos = SettingsData.getPopupTriggerPosition(globalPos, currentScreen, barThickness, width); - pillClickAction(pos.x, pos.y, pos.width, section, currentScreen); - } - } else if (hasPopout) { - pluginPopout.toggle(); - } - } - onRightClicked: { - if (pillRightClickAction) { - if (pillRightClickAction.length === 0) { - pillRightClickAction(); - } else { - const globalPos = mapToItem(null, 0, 0); - const currentScreen = parentScreen || Screen; - const pos = SettingsData.getPopupTriggerPosition(globalPos, currentScreen, barThickness, width); - pillRightClickAction(pos.x, pos.y, pos.width, section, currentScreen); - } - } - } - } - - function closePopout() { - if (pluginPopout) { - pluginPopout.close(); - } - } - - function triggerPopout() { - if (pillClickAction) { - if (pillClickAction.length === 0) { - pillClickAction(); - return; - } - const pill = isVertical ? verticalPill : horizontalPill; - const globalPos = pill.mapToItem(null, 0, 0); - const currentScreen = parentScreen || Screen; - const pos = SettingsData.getPopupTriggerPosition(globalPos, currentScreen, barThickness, pill.width); - pillClickAction(pos.x, pos.y, pos.width, section, currentScreen); - return; - } - if (!hasPopout) - return; - - const pill = isVertical ? verticalPill : horizontalPill; - const globalPos = pill.visualContent.mapToItem(null, 0, 0); - const currentScreen = parentScreen || Screen; - const barPosition = axis?.edge === "left" ? 2 : (axis?.edge === "right" ? 3 : (axis?.edge === "top" ? 0 : 1)); - const pos = SettingsData.getPopupTriggerPosition(globalPos, currentScreen, barThickness, pill.visualWidth, barSpacing, barPosition, barConfig); - - pluginPopout.setTriggerPosition(pos.x, pos.y, pos.width, section, currentScreen, barPosition, barThickness, barSpacing, barConfig); - pluginPopout.toggle(); - } - - PluginPopout { - id: pluginPopout - contentWidth: root.popoutWidth - contentHeight: root.popoutHeight - pluginContent: root.popoutContent - } -} diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PluginControlCenterWrapper.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PluginControlCenterWrapper.qml deleted file mode 100644 index 5d40826..0000000 --- a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PluginControlCenterWrapper.qml +++ /dev/null @@ -1,51 +0,0 @@ -import QtQuick -import qs.Common -import qs.Services -import qs.Widgets - -Item { - id: root - - property string pluginId: "" - property var pluginInstance: null - property bool isCompoundPill: false - property bool isSmallToggle: false - - readonly property bool hasDetail: pluginInstance?.ccDetailContent !== null - readonly property string iconName: pluginInstance?.ccWidgetIcon || "extension" - readonly property string primaryText: pluginInstance?.ccWidgetPrimaryText || "Plugin" - readonly property string secondaryText: pluginInstance?.ccWidgetSecondaryText || "" - readonly property bool isActive: pluginInstance?.ccWidgetIsActive || false - readonly property Component detailContent: pluginInstance?.ccDetailContent || null - readonly property real detailHeight: pluginInstance?.ccDetailHeight || 250 - - signal toggled() - signal expanded() - - Component.onCompleted: { - if (pluginInstance) { - pluginInstance.ccWidgetToggled.connect(handleToggled) - pluginInstance.ccWidgetExpanded.connect(handleExpanded) - } - } - - function handleToggled() { - toggled() - } - - function handleExpanded() { - expanded() - } - - function invokeToggle() { - if (pluginInstance) { - pluginInstance.ccWidgetToggled() - } - } - - function invokeExpand() { - if (pluginInstance) { - pluginInstance.ccWidgetExpanded() - } - } -} diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PluginPopout.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PluginPopout.qml deleted file mode 100644 index acd24b9..0000000 --- a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PluginPopout.qml +++ /dev/null @@ -1,83 +0,0 @@ -import QtQuick -import qs.Common -import qs.Widgets - -DankPopout { - id: root - - layerNamespace: "dms:plugins:" + layerNamespacePlugin - - property var triggerScreen: null - property Component pluginContent: null - property real contentWidth: 400 - property real contentHeight: 0 - - popupWidth: contentWidth - popupHeight: contentHeight - screen: triggerScreen - shouldBeVisible: false - - onBackgroundClicked: close() - - content: Component { - Rectangle { - id: popoutContainer - - implicitHeight: popoutColumn.implicitHeight + Theme.spacingL * 2 - color: "transparent" - focus: true - - Component.onCompleted: { - if (root.shouldBeVisible) { - forceActiveFocus(); - } - } - - Keys.onPressed: event => { - if (event.key === Qt.Key_Escape) { - root.close(); - event.accepted = true; - } - } - - Connections { - target: root - function onShouldBeVisibleChanged() { - if (root.shouldBeVisible) { - Qt.callLater(() => { - popoutContainer.forceActiveFocus(); - }); - } - } - } - - Column { - id: popoutColumn - width: parent.width - Theme.spacingS * 2 - x: Theme.spacingS - y: Theme.spacingS - spacing: Theme.spacingS - - Loader { - id: popoutContentLoader - width: parent.width - sourceComponent: root.pluginContent - - onLoaded: { - if (item && "closePopout" in item) { - item.closePopout = function () { - root.close(); - }; - } - if (item && "parentPopout" in item) { - item.parentPopout = root; - } - if (item) { - root.contentHeight = Qt.binding(() => item.implicitHeight + Theme.spacingS * 2); - } - } - } - } - } - } -} diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PluginSettings.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PluginSettings.qml deleted file mode 100644 index 2ba5d05..0000000 --- a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PluginSettings.qml +++ /dev/null @@ -1,311 +0,0 @@ -import QtQuick -import Quickshell -import qs.Common -import qs.Widgets - -Item { - id: root - - required property string pluginId - property var pluginService: null - default property list<QtObject> content - - signal settingChanged - - property var variants: [] - property alias variantsModel: variantsListModel - - implicitHeight: hasPermission ? settingsColumn.implicitHeight : errorText.implicitHeight - height: implicitHeight - - readonly property bool isDesktopPlugin: { - if (!pluginService?.availablePlugins || !pluginId) - return false; - const plugin = pluginService.availablePlugins[pluginId]; - return plugin?.type === "desktop"; - } - - readonly property bool hasPermission: { - if (!pluginService?.availablePlugins || !pluginId) - return true; - const plugin = pluginService.availablePlugins[pluginId]; - if (!plugin) - return true; - const permissions = Array.isArray(plugin.permissions) ? plugin.permissions : []; - return permissions.indexOf("settings_write") !== -1; - } - - Component.onCompleted: { - loadVariants(); - } - - onPluginServiceChanged: { - if (pluginService) { - loadVariants(); - for (let i = 0; i < content.length; i++) { - const child = content[i]; - if (child.loadValue) { - child.loadValue(); - } - } - } - } - - onContentChanged: { - for (let i = 0; i < content.length; i++) { - const item = content[i]; - if (item instanceof Item) { - item.parent = settingsColumn; - } - } - } - - Connections { - target: pluginService - enabled: pluginService !== null - - function onPluginDataChanged(changedPluginId) { - if (changedPluginId === pluginId) { - loadVariants(); - reloadChildValues(); - } - } - } - - function reloadChildValues() { - for (let i = 0; i < content.length; i++) { - const child = content[i]; - if (child.loadValue) { - child.loadValue(); - } - } - } - - function loadVariants() { - if (!pluginService?.getPluginVariants || !pluginId) { - variants = []; - return; - } - variants = pluginService.getPluginVariants(pluginId); - syncVariantsToModel(); - } - - function syncVariantsToModel() { - variantsListModel.clear(); - for (let i = 0; i < variants.length; i++) { - variantsListModel.append(variants[i]); - } - } - - onVariantsChanged: { - syncVariantsToModel(); - } - - ListModel { - id: variantsListModel - } - - function createVariant(variantName, variantConfig) { - if (!pluginService?.createPluginVariant || !pluginId) { - return null; - } - return pluginService.createPluginVariant(pluginId, variantName, variantConfig); - } - - function removeVariant(variantId) { - if (!pluginService?.removePluginVariant || !pluginId) { - return; - } - pluginService.removePluginVariant(pluginId, variantId); - } - - function updateVariant(variantId, variantConfig) { - if (!pluginService?.updatePluginVariant || !pluginId) { - return; - } - pluginService.updatePluginVariant(pluginId, variantId, variantConfig); - } - - function saveValue(key, value) { - if (!pluginService) { - return; - } - if (!hasPermission) { - console.warn("PluginSettings: Plugin", pluginId, "does not have settings_write permission"); - return; - } - if (pluginService.savePluginData) { - pluginService.savePluginData(pluginId, key, value); - settingChanged(); - } - } - - function loadValue(key, defaultValue) { - if (pluginService && pluginService.loadPluginData) { - return pluginService.loadPluginData(pluginId, key, defaultValue); - } - return defaultValue; - } - - function saveState(key, value) { - if (!pluginService) - return; - if (pluginService.savePluginState) - pluginService.savePluginState(pluginId, key, value); - } - - function loadState(key, defaultValue) { - if (pluginService && pluginService.loadPluginState) - return pluginService.loadPluginState(pluginId, key, defaultValue); - return defaultValue; - } - - function clearState() { - if (pluginService && pluginService.clearPluginState) - pluginService.clearPluginState(pluginId); - } - - function findFlickable(item) { - var current = item?.parent; - while (current) { - if (current.contentY !== undefined && current.contentHeight !== undefined) { - return current; - } - current = current.parent; - } - return null; - } - - function ensureItemVisible(item) { - if (!item) - return; - var flickable = findFlickable(root); - if (!flickable) - return; - var itemGlobalY = item.mapToItem(null, 0, 0).y; - var itemHeight = item.height; - var flickableGlobalY = flickable.mapToItem(null, 0, 0).y; - var viewportHeight = flickable.height; - - var itemRelativeY = itemGlobalY - flickableGlobalY; - var viewportTop = 0; - var viewportBottom = viewportHeight; - - if (itemRelativeY < viewportTop) { - flickable.contentY = Math.max(0, flickable.contentY - (viewportTop - itemRelativeY) - Theme.spacingL); - } else if (itemRelativeY + itemHeight > viewportBottom) { - flickable.contentY = Math.min(flickable.contentHeight - viewportHeight, flickable.contentY + (itemRelativeY + itemHeight - viewportBottom) + Theme.spacingL); - } - } - - StyledText { - id: errorText - visible: pluginService && !root.hasPermission - anchors.fill: parent - text: I18n.tr("This plugin does not have 'settings_write' permission.\n\nAdd \"permissions\": [\"settings_read\", \"settings_write\"] to plugin.json") - color: Theme.error - font.pixelSize: Theme.fontSizeMedium - wrapMode: Text.WordWrap - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - } - - Column { - id: settingsColumn - visible: root.hasPermission - width: parent.width - spacing: Theme.spacingM - - Item { - id: desktopDisplaySettings - visible: root.isDesktopPlugin - width: parent.width - height: visible ? displaySettingsColumn.implicitHeight : 0 - - Column { - id: displaySettingsColumn - width: parent.width - spacing: Theme.spacingS - - Rectangle { - width: parent.width - height: 1 - color: Theme.outline - opacity: 0.3 - visible: root.content.length > 0 - } - - StyledText { - text: I18n.tr("Display Settings") - font.pixelSize: Theme.fontSizeMedium - font.weight: Font.Medium - color: Theme.surfaceText - } - - StyledText { - text: I18n.tr("Choose which displays show this widget") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - width: parent.width - wrapMode: Text.WordWrap - } - - DankToggle { - width: parent.width - text: I18n.tr("All displays") - checked: { - const prefs = root.loadValue("displayPreferences", ["all"]); - return Array.isArray(prefs) && (prefs.includes("all") || prefs.length === 0); - } - onToggled: isChecked => { - if (isChecked) { - root.saveValue("displayPreferences", ["all"]); - } else { - root.saveValue("displayPreferences", []); - } - } - } - - Column { - width: parent.width - spacing: Theme.spacingXS - visible: { - const prefs = root.loadValue("displayPreferences", ["all"]); - return !Array.isArray(prefs) || (!prefs.includes("all") && prefs.length >= 0); - } - - Repeater { - model: Quickshell.screens - - DankToggle { - required property var modelData - width: parent.width - text: SettingsData.getScreenDisplayName(modelData) - description: modelData.width + "×" + modelData.height - checked: { - const prefs = root.loadValue("displayPreferences", ["all"]); - if (!Array.isArray(prefs) || prefs.includes("all")) - return false; - return prefs.some(p => p.name === modelData.name); - } - onToggled: isChecked => { - var prefs = root.loadValue("displayPreferences", ["all"]); - if (!Array.isArray(prefs) || prefs.includes("all")) { - prefs = []; - } - prefs = prefs.filter(p => p.name !== modelData.name); - if (isChecked) { - prefs.push({ - name: modelData.name, - model: modelData.model || "" - }); - } - root.saveValue("displayPreferences", prefs); - } - } - } - } - } - } - } -} diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PopoutComponent.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PopoutComponent.qml deleted file mode 100644 index 7ccf637..0000000 --- a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/PopoutComponent.qml +++ /dev/null @@ -1,87 +0,0 @@ -import QtQuick -import qs.Common -import qs.Widgets - -Column { - id: root - - property string headerText: "" - property string detailsText: "" - property bool showCloseButton: false - property var closePopout: null - property var parentPopout: null - property alias headerActions: headerActionsLoader.sourceComponent - - readonly property int headerHeight: popoutHeader.visible ? popoutHeader.height : 0 - readonly property int detailsHeight: popoutDetails.visible ? popoutDetails.implicitHeight : 0 - - spacing: 0 - - Item { - id: popoutHeader - width: parent.width - height: 40 - visible: headerText.length > 0 - - StyledText { - anchors.left: parent.left - anchors.leftMargin: Theme.spacingS - anchors.verticalCenter: parent.verticalCenter - text: root.headerText - font.pixelSize: Theme.fontSizeLarge + 4 - font.weight: Font.Bold - color: Theme.surfaceText - } - - Row { - anchors.right: parent.right - anchors.verticalCenter: parent.verticalCenter - spacing: Theme.spacingXS - - Loader { - id: headerActionsLoader - anchors.verticalCenter: parent.verticalCenter - } - - Rectangle { - id: closeButton - width: 32 - height: 32 - radius: 16 - color: closeArea.containsMouse ? Theme.errorHover : "transparent" - visible: root.showCloseButton - - DankIcon { - anchors.centerIn: parent - name: "close" - size: Theme.iconSize - 4 - color: closeArea.containsMouse ? Theme.error : Theme.surfaceText - } - - MouseArea { - id: closeArea - anchors.fill: parent - hoverEnabled: true - cursorShape: Qt.PointingHandCursor - onPressed: { - if (root.closePopout) { - root.closePopout(); - } - } - } - } - } - } - - StyledText { - id: popoutDetails - width: parent.width - leftPadding: Theme.spacingS - bottomPadding: Theme.spacingS - text: root.detailsText - font.pixelSize: Theme.fontSizeMedium - color: Theme.surfaceVariantText - visible: detailsText.length > 0 - wrapMode: Text.WordWrap - } -} diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/SelectionSetting.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/SelectionSetting.qml deleted file mode 100644 index 0f8fac0..0000000 --- a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/SelectionSetting.qml +++ /dev/null @@ -1,91 +0,0 @@ -import QtQuick -import qs.Common -import qs.Widgets - -Column { - id: root - - required property string settingKey - required property string label - property string description: "" - required property var options - property string defaultValue: "" - property string value: defaultValue - - width: parent.width - spacing: Theme.spacingS - - function loadValue() { - const settings = findSettings() - if (settings && settings.pluginService) { - value = settings.loadValue(settingKey, defaultValue) - } - } - - Component.onCompleted: { - loadValue() - } - - readonly property var optionLabels: { - const labels = [] - for (let i = 0; i < options.length; i++) { - labels.push(options[i].label || options[i]) - } - return labels - } - - readonly property var valueToLabel: { - const map = {} - for (let i = 0; i < options.length; i++) { - const opt = options[i] - if (typeof opt === 'object') { - map[opt.value] = opt.label - } else { - map[opt] = opt - } - } - return map - } - - readonly property var labelToValue: { - const map = {} - for (let i = 0; i < options.length; i++) { - const opt = options[i] - if (typeof opt === 'object') { - map[opt.label] = opt.value - } else { - map[opt] = opt - } - } - return map - } - - onValueChanged: { - const settings = findSettings() - if (settings) { - settings.saveValue(settingKey, value) - } - } - - function findSettings() { - let item = parent - while (item) { - if (item.saveValue !== undefined && item.loadValue !== undefined) { - return item - } - item = item.parent - } - return null - } - - DankDropdown { - width: parent.width - text: root.label - description: root.description - currentValue: root.valueToLabel[root.value] || root.value - options: root.optionLabels - onValueChanged: newValue => { - root.value = root.labelToValue[newValue] || newValue - } - } -} diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/SliderSetting.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/SliderSetting.qml deleted file mode 100644 index f540fd4..0000000 --- a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/SliderSetting.qml +++ /dev/null @@ -1,81 +0,0 @@ -import QtQuick -import qs.Common -import qs.Widgets - -Column { - id: root - - required property string settingKey - required property string label - property string description: "" - property int defaultValue: 0 - property int value: defaultValue - property int minimum: 0 - property int maximum: 100 - property string leftIcon: "" - property string rightIcon: "" - property string unit: "" - - width: parent.width - spacing: Theme.spacingS - - function loadValue() { - const settings = findSettings() - if (settings && settings.pluginService) { - value = settings.loadValue(settingKey, defaultValue) - } - } - - Component.onCompleted: { - loadValue() - } - - onValueChanged: { - const settings = findSettings() - if (settings) { - settings.saveValue(settingKey, value) - } - } - - function findSettings() { - let item = parent - while (item) { - if (item.saveValue !== undefined && item.loadValue !== undefined) { - return item - } - item = item.parent - } - return null - } - - StyledText { - text: root.label - font.pixelSize: Theme.fontSizeMedium - font.weight: Font.Medium - color: Theme.surfaceText - } - - StyledText { - text: root.description - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - width: parent.width - wrapMode: Text.WordWrap - visible: root.description !== "" - } - - DankSlider { - width: parent.width - value: root.value - minimum: root.minimum - maximum: root.maximum - leftIcon: root.leftIcon - rightIcon: root.rightIcon - unit: root.unit - wheelEnabled: false - thumbOutlineColor: Theme.withAlpha(Theme.surfaceContainerHighest, Theme.popupTransparency) - onSliderValueChanged: newValue => { - root.value = newValue - } - } -} diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/StringSetting.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/StringSetting.qml deleted file mode 100644 index 849807b..0000000 --- a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/StringSetting.qml +++ /dev/null @@ -1,84 +0,0 @@ -import QtQuick -import qs.Common -import qs.Widgets - -Column { - id: root - - required property string settingKey - required property string label - property string description: "" - property string placeholder: "" - property string defaultValue: "" - property string value: defaultValue - - width: parent.width - spacing: Theme.spacingS - - property bool isInitialized: false - - function loadValue() { - const settings = findSettings(); - if (settings && settings.pluginService) { - const loadedValue = settings.loadValue(settingKey, defaultValue); - if (textField.activeFocus && isInitialized) - return; - value = loadedValue; - textField.text = loadedValue; - isInitialized = true; - } - } - - Component.onCompleted: { - Qt.callLater(loadValue); - } - - function commit() { - if (!isInitialized) - return; - if (textField.text === value) - return; - value = textField.text; - const settings = findSettings(); - if (settings) - settings.saveValue(settingKey, value); - } - - function findSettings() { - let item = parent; - while (item) { - if (item.saveValue !== undefined && item.loadValue !== undefined) { - return item; - } - item = item.parent; - } - return null; - } - - StyledText { - text: root.label - font.pixelSize: Theme.fontSizeMedium - font.weight: Font.Medium - color: Theme.surfaceText - } - - StyledText { - text: root.description - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - width: parent.width - wrapMode: Text.WordWrap - visible: root.description !== "" - } - - DankTextField { - id: textField - width: parent.width - placeholderText: root.placeholder - onEditingFinished: root.commit() - onActiveFocusChanged: { - if (!activeFocus) - root.commit(); - } - } -} diff --git a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/ToggleSetting.qml b/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/ToggleSetting.qml deleted file mode 100644 index 3a6eae5..0000000 --- a/raveos-theme/hyprland/theme-data/DankMaterialShell/quickshell/Modules/Plugins/ToggleSetting.qml +++ /dev/null @@ -1,81 +0,0 @@ -import QtQuick -import qs.Common -import qs.Widgets - -Row { - id: root - - required property string settingKey - required property string label - property string description: "" - property bool defaultValue: false - property bool value: defaultValue - - width: parent.width - spacing: Theme.spacingM - - property bool isInitialized: false - - function loadValue() { - const settings = findSettings() - if (settings && settings.pluginService) { - const loadedValue = settings.loadValue(settingKey, defaultValue) - value = loadedValue - isInitialized = true - } - } - - Component.onCompleted: { - Qt.callLater(loadValue) - } - - onValueChanged: { - if (!isInitialized) return - const settings = findSettings() - if (settings) { - settings.saveValue(settingKey, value) - } - } - - function findSettings() { - let item = parent - while (item) { - if (item.saveValue !== undefined && item.loadValue !== undefined) { - return item - } - item = item.parent - } - return null - } - - Column { - width: parent.width - toggle.width - Theme.spacingM - spacing: Theme.spacingXS - anchors.verticalCenter: parent.verticalCenter - - StyledText { - text: root.label - font.pixelSize: Theme.fontSizeLarge - font.weight: Font.Medium - color: Theme.surfaceText - } - - StyledText { - text: root.description - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - width: parent.width - wrapMode: Text.WordWrap - visible: root.description !== "" - } - } - - DankToggle { - id: toggle - anchors.verticalCenter: parent.verticalCenter - checked: root.value - onToggled: isChecked => { - root.value = isChecked - } - } -} |