mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-06 05:25:41 -05:00
304 lines
10 KiB
QML
304 lines
10 KiB
QML
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
|
|
}
|
|
}
|
|
}
|
|
}
|