diff options
| author | Nippy <nippy@rp1.hu> | 2026-05-08 19:50:49 +0200 |
|---|---|---|
| committer | Nippy <nippy@rp1.hu> | 2026-05-08 19:50:49 +0200 |
| commit | 3462bcc46ecf74f576ea4397f16492c16bd75b10 (patch) | |
| tree | c5ab7aef4498647e057bda8d49c11e5f9dda74c9 /raveos-hyprland-theme/theme-data/dms/Modules/Settings/Widgets/SettingsToggleCard.qml | |
| parent | 56616f693b4f263cbf0d47da43b67424efa6022d (diff) | |
| download | RaveOS-PKGBUILD-3462bcc46ecf74f576ea4397f16492c16bd75b10.tar.gz RaveOS-PKGBUILD-3462bcc46ecf74f576ea4397f16492c16bd75b10.zip | |
raveos update
Diffstat (limited to 'raveos-hyprland-theme/theme-data/dms/Modules/Settings/Widgets/SettingsToggleCard.qml')
| -rw-r--r-- | raveos-hyprland-theme/theme-data/dms/Modules/Settings/Widgets/SettingsToggleCard.qml | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/dms/Modules/Settings/Widgets/SettingsToggleCard.qml b/raveos-hyprland-theme/theme-data/dms/Modules/Settings/Widgets/SettingsToggleCard.qml new file mode 100644 index 0000000..c36fb7c --- /dev/null +++ b/raveos-hyprland-theme/theme-data/dms/Modules/Settings/Widgets/SettingsToggleCard.qml @@ -0,0 +1,120 @@ +pragma ComponentBehavior: Bound + +import QtQuick +import qs.Common +import qs.Widgets + +StyledRect { + id: root + + LayoutMirroring.enabled: I18n.isRtl + LayoutMirroring.childrenInherit: true + + property string tab: "" + property var tags: [] + + property string title: "" + property string description: "" + property string iconName: "" + property bool checked: false + property bool enabled: true + + default property alias content: expandedContent.children + readonly property bool hasContent: expandedContent.children.length > 0 + + signal toggled(bool checked) + + width: parent?.width ?? 0 + height: Theme.spacingL * 2 + mainColumn.height + radius: Theme.cornerRadius + color: Theme.surfaceContainerHigh + + Column { + id: mainColumn + anchors.left: parent.left + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + anchors.leftMargin: Theme.spacingL + anchors.rightMargin: Theme.spacingL + spacing: Theme.spacingM + + Item { + width: parent.width + height: headerColumn.height + + Column { + id: headerColumn + anchors.left: parent.left + anchors.right: toggleSwitch.left + anchors.rightMargin: Theme.spacingM + spacing: Theme.spacingXS + + Row { + spacing: Theme.spacingM + width: parent.width + + DankIcon { + id: headerIcon + name: root.iconName + size: Theme.iconSize + color: Theme.primary + anchors.verticalCenter: parent.verticalCenter + visible: root.iconName !== "" + } + + StyledText { + id: headerText + text: root.title + font.pixelSize: Theme.fontSizeLarge + font.weight: Font.Medium + color: Theme.surfaceText + anchors.verticalCenter: parent.verticalCenter + visible: root.title !== "" + width: parent.width - (headerIcon.visible ? headerIcon.width + parent.spacing : 0) + horizontalAlignment: Text.AlignLeft + } + } + + StyledText { + id: descriptionText + text: root.description + font.pixelSize: Theme.fontSizeSmall + color: Theme.surfaceVariantText + wrapMode: Text.WordWrap + width: parent.width + horizontalAlignment: Text.AlignLeft + visible: root.description !== "" + } + } + + DankToggle { + id: toggleSwitch + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + hideText: true + checked: root.checked + enabled: root.enabled + onToggled: checked => root.toggled(checked) + } + + StateLayer { + anchors.fill: parent + disabled: !root.enabled + stateColor: Theme.primary + cornerRadius: root.radius + onClicked: { + if (!root.enabled) + return; + root.toggled(!root.checked); + } + } + } + + Column { + id: expandedContent + width: parent.width + spacing: Theme.spacingM + visible: root.checked && root.hasContent + } + } +} |