diff options
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleWithVariants')
4 files changed, 0 insertions, 492 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleWithVariants/README.md b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleWithVariants/README.md deleted file mode 100644 index 833572e..0000000 --- a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleWithVariants/README.md +++ /dev/null @@ -1,116 +0,0 @@ -# Example with Variants Plugin - -This plugin demonstrates the dynamic variant system for DankMaterialShell plugins. - -## What are Variants? - -Variants allow a single plugin to create multiple widget instances with different configurations. Each variant appears as a separate widget option in the Bar Settings "Add Widget" menu. - -## How It Works - -### Plugin Architecture - -1. **Single Component**: The plugin defines one widget component (`VariantWidget.qml`) -2. **Variant Data**: Each variant stores its configuration in plugin settings -3. **Dynamic Creation**: Variants are created through the plugin's settings UI -4. **Widget ID Format**: Variants use the format `pluginId:variantId` (e.g., `exampleVariants:variant_1234567890`) - -### Widget Properties - -Each variant widget receives: -- `pluginService`: Reference to PluginService -- `pluginId`: The base plugin ID (e.g., "exampleVariants") -- `variantId`: The specific variant ID (e.g., "variant_1234567890") -- `variantData`: The variant's configuration object - -### Variant Configuration - -This example stores: -```javascript -{ - id: "variant_1234567890", - name: "My Variant", - text: "Display Text", - icon: "star", - color: "#FF5722" -} -``` - -## Creating Your Own Variant Plugin - -### 1. Widget Component - -Create a widget that accepts variant data: - -```qml -Rectangle { - property var pluginService: null - property string pluginId: "" - property string variantId: "" - property var variantData: null - - // Use variantData for configuration - property string displayText: variantData?.text || "Default" -} -``` - -### 2. Settings Component - -Provide UI to manage variants: - -```qml -FocusScope { - property var pluginService: null - - // Create variant - pluginService.createPluginVariant(pluginId, variantName, variantConfig) - - // Remove variant - pluginService.removePluginVariant(pluginId, variantId) - - // Update variant - pluginService.updatePluginVariant(pluginId, variantId, variantConfig) - - // Get all variants - var variants = pluginService.getPluginVariants(pluginId) -} -``` - -### 3. Plugin Manifest - -Standard plugin manifest - no special configuration needed: - -```json -{ - "id": "yourPlugin", - "name": "Your Plugin", - "component": "./Widget.qml", - "settings": "./Settings.qml" -} -``` - -## Use Cases - -- **Script Runner**: Multiple variants running different scripts -- **System Monitors**: Different monitoring targets (CPU, GPU, Network) -- **Quick Launchers**: Different apps or commands per variant -- **Custom Indicators**: Different data sources or APIs -- **Time Zones**: Multiple clocks for different time zones - -## API Reference - -### PluginService Functions - -- `getPluginVariants(pluginId)`: Get all variants for a plugin -- `getAllPluginVariants()`: Get all variants across all plugins -- `createPluginVariant(pluginId, name, config)`: Create new variant -- `removePluginVariant(pluginId, variantId)`: Delete variant -- `updatePluginVariant(pluginId, variantId, config)`: Update variant -- `getPluginVariantData(pluginId, variantId)`: Get specific variant data - -### Widget Properties - -- `pluginId`: Base plugin identifier -- `variantId`: Variant identifier (null if no variant) -- `variantData`: Variant configuration object -- `pluginService`: PluginService reference diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleWithVariants/VariantSettings.qml b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleWithVariants/VariantSettings.qml deleted file mode 100644 index d5ea1d2..0000000 --- a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleWithVariants/VariantSettings.qml +++ /dev/null @@ -1,303 +0,0 @@ -import QtQuick -import QtQuick.Controls -import qs.Common -import qs.Services -import qs.Widgets -import qs.Modules.Plugins - -PluginSettings { - id: root - pluginId: "exampleVariants" - - onVariantsChanged: { - variantsModel.clear() - for (var i = 0; i < variants.length; i++) { - variantsModel.append(variants[i]) - } - } - - StyledText { - width: parent.width - text: "Variant Manager" - font.pixelSize: Theme.fontSizeLarge - font.weight: Font.Bold - color: Theme.surfaceText - } - - StyledText { - width: parent.width - text: "Create multiple widget variants with different text, icons, and colors" - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - wrapMode: Text.WordWrap - } - - StyledRect { - width: parent.width - height: addVariantColumn.implicitHeight + Theme.spacingL * 2 - radius: Theme.cornerRadius - color: Theme.surfaceContainerHigh - - Column { - id: addVariantColumn - anchors.fill: parent - anchors.margins: Theme.spacingL - spacing: Theme.spacingM - - StyledText { - text: "Add New Variant" - font.pixelSize: Theme.fontSizeMedium - font.weight: Font.Medium - color: Theme.surfaceText - } - - Row { - width: parent.width - spacing: Theme.spacingM - - Column { - width: (parent.width - Theme.spacingM * 2) / 3 - spacing: Theme.spacingXS - - StyledText { - text: "Name" - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - } - - DankTextField { - id: nameField - width: parent.width - placeholderText: "Variant Name" - } - } - - Column { - width: (parent.width - Theme.spacingM * 2) / 3 - spacing: Theme.spacingXS - - StyledText { - text: "Icon" - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - } - - DankTextField { - id: iconField - width: parent.width - placeholderText: "star" - } - } - - Column { - width: (parent.width - Theme.spacingM * 2) / 3 - spacing: Theme.spacingXS - - StyledText { - text: "Text" - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - } - - DankTextField { - id: textField - width: parent.width - placeholderText: "Display Text" - } - } - } - - DankButton { - text: "Create Variant" - iconName: "add" - onClicked: { - if (!nameField.text) { - ToastService.showError("Please enter a variant name") - return - } - - var variantConfig = { - text: textField.text || nameField.text, - icon: iconField.text || "widgets" - } - - createVariant(nameField.text, variantConfig) - ToastService.showInfo("Variant created: " + nameField.text) - - nameField.text = "" - iconField.text = "" - textField.text = "" - } - } - } - } - - StyledRect { - width: parent.width - height: Math.max(200, variantsColumn.implicitHeight + Theme.spacingL * 2) - radius: Theme.cornerRadius - color: Theme.surfaceContainerHigh - - Column { - id: variantsColumn - anchors.fill: parent - anchors.margins: Theme.spacingL - spacing: Theme.spacingM - - StyledText { - text: "Existing Variants" - font.pixelSize: Theme.fontSizeMedium - font.weight: Font.Medium - color: Theme.surfaceText - } - - ListView { - width: parent.width - height: Math.max(100, contentHeight) - clip: true - spacing: Theme.spacingXS - - model: ListModel { - id: variantsModel - } - - delegate: StyledRect { - required property var model - width: ListView.view.width - height: variantRow.implicitHeight + Theme.spacingM * 2 - radius: Theme.cornerRadius - color: variantMouseArea.containsMouse ? Theme.surfaceContainerHighest : Theme.surfaceContainer - - Row { - id: variantRow - anchors.fill: parent - anchors.margins: Theme.spacingM - spacing: Theme.spacingM - - Item { - width: Theme.iconSize - height: Theme.iconSize - anchors.verticalCenter: parent.verticalCenter - - DankIcon { - anchors.centerIn: parent - name: model.icon || "widgets" - size: Theme.iconSize - color: Theme.surfaceText - width: Theme.iconSize - height: Theme.iconSize - clip: true - } - } - - Column { - anchors.verticalCenter: parent.verticalCenter - spacing: Theme.spacingXS - width: parent.width - Theme.iconSize - deleteButton.width - Theme.spacingM * 4 - - StyledText { - text: model.name || "Unnamed" - font.pixelSize: Theme.fontSizeMedium - color: Theme.surfaceText - width: parent.width - elide: Text.ElideRight - } - - StyledText { - text: "Text: " + (model.text || "") + " | Icon: " + (model.icon || "") - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - width: parent.width - elide: Text.ElideRight - } - } - - Rectangle { - id: deleteButton - width: 32 - height: 32 - radius: 16 - color: deleteArea.containsMouse ? Theme.error : "transparent" - anchors.verticalCenter: parent.verticalCenter - - DankIcon { - anchors.centerIn: parent - name: "delete" - size: 16 - color: deleteArea.containsMouse ? Theme.onError : Theme.surfaceVariantText - } - - MouseArea { - id: deleteArea - anchors.fill: parent - hoverEnabled: true - cursorShape: Qt.PointingHandCursor - onClicked: { - removeVariant(model.id) - ToastService.showInfo("Variant removed: " + model.name) - } - } - } - } - - MouseArea { - id: variantMouseArea - anchors.fill: parent - hoverEnabled: true - propagateComposedEvents: true - } - } - - StyledText { - anchors.centerIn: parent - text: "No variants created yet" - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - visible: variantsModel.count === 0 - } - } - } - } - - StyledRect { - width: parent.width - height: instructionsColumn.implicitHeight + Theme.spacingL * 2 - radius: Theme.cornerRadius - color: Theme.surface - - Column { - id: instructionsColumn - anchors.fill: parent - anchors.margins: Theme.spacingL - spacing: Theme.spacingM - - Row { - spacing: Theme.spacingM - - DankIcon { - name: "info" - size: Theme.iconSize - color: Theme.primary - anchors.verticalCenter: parent.verticalCenter - } - - StyledText { - text: "How to Use Variants" - font.pixelSize: Theme.fontSizeMedium - font.weight: Font.Medium - color: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - } - } - - StyledText { - text: "1. Create variants with different names, icons, and text\n2. Go to Bar Settings and click 'Add Widget'\n3. Each variant will appear as a separate widget option\n4. Add variants to your bar just like any other widget" - font.pixelSize: Theme.fontSizeSmall - color: Theme.surfaceVariantText - wrapMode: Text.WordWrap - width: parent.width - lineHeight: 1.4 - } - } - } -} diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleWithVariants/VariantWidget.qml b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleWithVariants/VariantWidget.qml deleted file mode 100644 index e5b077f..0000000 --- a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleWithVariants/VariantWidget.qml +++ /dev/null @@ -1,57 +0,0 @@ -import QtQuick -import qs.Common -import qs.Services -import qs.Widgets -import qs.Modules.Plugins - -PluginComponent { - id: root - - property string variantId: "" - property var variantData: null - - property string displayText: variantData?.text || "Default Text" - property string displayIcon: variantData?.icon || "widgets" - - horizontalBarPill: Component { - Row { - spacing: 3 - - DankIcon { - name: root.displayIcon - size: Theme.iconSize - 8 - color: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - } - - StyledText { - text: root.displayText - font.pixelSize: Theme.fontSizeSmall - font.weight: Font.Medium - color: Theme.surfaceText - anchors.verticalCenter: parent.verticalCenter - } - } - } - - verticalBarPill: Component { - Column { - spacing: 1 - - DankIcon { - name: root.displayIcon - size: Theme.iconSize - 8 - color: Theme.surfaceText - anchors.horizontalCenter: parent.horizontalCenter - } - - StyledText { - text: root.displayText - font.pixelSize: Theme.fontSizeSmall - font.weight: Font.Medium - color: Theme.surfaceText - anchors.horizontalCenter: parent.horizontalCenter - } - } - } -} diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleWithVariants/plugin.json b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleWithVariants/plugin.json deleted file mode 100644 index 9e3cad4..0000000 --- a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/PLUGINS/ExampleWithVariants/plugin.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "id": "exampleVariants", - "name": "Example with Variants", - "description": "Demonstrates dynamic variant creation for plugins", - "version": "1.0.0", - "author": "DMS", - "type": "widget", - "capabilities": ["multiple-usecases", "variants"], - "component": "./VariantWidget.qml", - "icon": "widgets", - "settings": "./VariantSettings.qml", - "permissions": [ - "settings_read", - "settings_write" - ] -} |