mirror of
https://github.com/belsabbagh/dotfiles.git
synced 2026-04-11 09:36:46 +00:00
quickshell and hyprland additions
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
import qs.config
|
||||
pragma ComponentBehavior: Bound
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
|
||||
Slider {
|
||||
id: root
|
||||
|
||||
property real trackHeightDiff: 15
|
||||
property real handleGap: Metrics.spacing(4)
|
||||
property real trackDotSize: Metrics.iconSize(4)
|
||||
property real trackNearHandleRadius: Appearance.rounding.unsharpen
|
||||
property bool useAnim: true
|
||||
property int iconSize: Appearance.font.size.large
|
||||
property string icon: ""
|
||||
|
||||
Layout.fillWidth: true
|
||||
|
||||
implicitWidth: 200
|
||||
implicitHeight: 40
|
||||
from: 0
|
||||
to: 100
|
||||
value: 0
|
||||
stepSize: 0
|
||||
snapMode: stepSize > 0 ? Slider.SnapAlways : Slider.NoSnap
|
||||
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onPressed: (mouse) => mouse.accepted = false
|
||||
cursorShape: root.pressed ? Qt.ClosedHandCursor : Qt.PointingHandCursor
|
||||
}
|
||||
|
||||
MaterialSymbol {
|
||||
id: icon
|
||||
icon: root.icon
|
||||
iconSize: root.iconSize
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.rightMargin: Metrics.margin(16)
|
||||
}
|
||||
|
||||
background: Item {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
width: parent.width
|
||||
height: parent.height
|
||||
|
||||
// Filled Left Segment
|
||||
Rectangle {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
|
||||
width: root.handleGap + (root.visualPosition * (root.width - root.handleGap * 2))
|
||||
- ((root.pressed ? 1.5 : 3) / 2 + root.handleGap)
|
||||
|
||||
height: root.height - root.trackHeightDiff
|
||||
color: Appearance.colors.colPrimary
|
||||
radius: Metrics.radius("small")
|
||||
topRightRadius: root.trackNearHandleRadius
|
||||
bottomRightRadius: root.trackNearHandleRadius
|
||||
|
||||
Behavior on width {
|
||||
enabled: Config.runtime.appearance.animations.enabled
|
||||
NumberAnimation {
|
||||
duration: !root.useAnim ? 0 : Metrics.chronoDuration("small")
|
||||
easing.type: Easing.BezierSpline
|
||||
easing.bezierCurve: Appearance.animation.curves.expressiveEffects
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Remaining Right Segment
|
||||
Rectangle {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.right: parent.right
|
||||
|
||||
width: root.handleGap + ((1 - root.visualPosition) * (root.width - root.handleGap * 2))
|
||||
- ((root.pressed ? 1.5 : 3) / 2 + root.handleGap)
|
||||
|
||||
height: root.height - root.trackHeightDiff
|
||||
color: Appearance.colors.colSecondaryContainer
|
||||
radius: Metrics.radius("small")
|
||||
topLeftRadius: root.trackNearHandleRadius
|
||||
bottomLeftRadius: root.trackNearHandleRadius
|
||||
|
||||
Behavior on width {
|
||||
enabled: Config.runtime.appearance.animations.enabled
|
||||
NumberAnimation {
|
||||
duration: !root.useAnim ? 0 : Metrics.chronoDuration("small")
|
||||
easing.type: Easing.BezierSpline
|
||||
easing.bezierCurve: Appearance.animation.curves.expressiveEffects
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
handle: Rectangle {
|
||||
width: 5
|
||||
height: root.height
|
||||
radius: (width / 2) * Config.runtime.appearance.rounding.factor
|
||||
|
||||
x: root.handleGap + (root.visualPosition * (root.width - root.handleGap * 2)) - width / 2
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
color: Appearance.colors.colPrimary
|
||||
|
||||
Behavior on x {
|
||||
enabled: Config.runtime.appearance.animations.enabled
|
||||
NumberAnimation {
|
||||
duration: !root.useAnim ? 0 : Appearance.animation.elementMoveFast.duration
|
||||
easing.type: Appearance.animation.elementMoveFast.type
|
||||
easing.bezierCurve: Appearance.animation.elementMoveFast.bezierCurve
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user