diff options
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Widgets/StateLayer.qml')
| -rw-r--r-- | raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Widgets/StateLayer.qml | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Widgets/StateLayer.qml b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Widgets/StateLayer.qml new file mode 100644 index 0000000..8969d93 --- /dev/null +++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Widgets/StateLayer.qml @@ -0,0 +1,74 @@ +import QtQuick +import qs.Common + +MouseArea { + id: root + + property bool disabled: false + property color stateColor: Theme.surfaceText + property real cornerRadius: parent && parent.radius !== undefined ? parent.radius : Theme.cornerRadius + property var tooltipText: null + property string tooltipSide: "bottom" + property bool enableRipple: typeof SettingsData !== "undefined" ? (SettingsData.enableRippleEffects ?? true) : true + + readonly property real stateOpacity: disabled ? 0 : pressed ? 0.12 : containsMouse ? 0.08 : 0 + + anchors.fill: parent + cursorShape: disabled ? undefined : Qt.PointingHandCursor + hoverEnabled: true + + onPressed: mouse => { + if (!disabled && enableRipple) { + rippleLayer.trigger(mouse.x, mouse.y); + } + } + + Rectangle { + id: stateRect + anchors.fill: parent + radius: root.cornerRadius + color: Qt.rgba(stateColor.r, stateColor.g, stateColor.b, stateOpacity) + + Behavior on color { + enabled: Theme.currentAnimationSpeed !== SettingsData.AnimationSpeed.None + DankColorAnim { + duration: Theme.shorterDuration + easing.bezierCurve: Theme.expressiveCurves.standardDecel + } + } + } + + DankRipple { + id: rippleLayer + anchors.fill: parent + rippleColor: root.stateColor + cornerRadius: root.cornerRadius + enableRipple: root.enableRipple + } + + Timer { + id: hoverDelay + interval: 400 + repeat: false + onTriggered: { + tooltip.show(root.tooltipText, root, 0, 0, root.tooltipSide); + } + } + + onEntered: { + if (!tooltipText) + return; + hoverDelay.restart(); + } + + onExited: { + if (!tooltipText) + return; + hoverDelay.stop(); + tooltip.hide(); + } + + DankTooltipV2 { + id: tooltip + } +} |