osd: animate scrolling (#316)

* refactor: make the animation smooth when scrolling the mouse wheel

* fix: can't drag

* format

* fix cursor

---------

Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
This commit is contained in:
PFiS 2025-08-02 14:19:59 +08:00 committed by GitHub
parent 32126e761f
commit a89a401087
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 44 additions and 21 deletions

View file

@ -15,29 +15,54 @@ Column {
spacing: Appearance.spacing.normal
VerticalSlider {
icon: {
if (Audio.muted)
return "no_sound";
if (value >= 0.5)
return "volume_up";
if (value > 0)
return "volume_down";
return "volume_mute";
}
value: Audio.volume
onMoved: Audio.setVolume(value)
CustomMouseArea {
implicitWidth: Config.osd.sizes.sliderWidth
implicitHeight: Config.osd.sizes.sliderHeight
onWheel: event => {
if (event.angleDelta.y > 0)
Audio.setVolume(Audio.volume + 0.1);
else if (event.angleDelta.y < 0)
Audio.setVolume(Audio.volume - 0.1);
}
VerticalSlider {
anchors.fill: parent
icon: {
if (Audio.muted)
return "no_sound";
if (value >= 0.5)
return "volume_up";
if (value > 0)
return "volume_down";
return "volume_mute";
}
value: Audio.volume
onMoved: Audio.setVolume(value)
}
}
VerticalSlider {
icon: `brightness_${(Math.round(value * 6) + 1)}`
value: root.monitor?.brightness ?? 0
onMoved: root.monitor?.setBrightness(value)
CustomMouseArea {
implicitWidth: Config.osd.sizes.sliderWidth
implicitHeight: Config.osd.sizes.sliderHeight
onWheel: event => {
const monitor = root.monitor;
if (!monitor)
return;
if (event.angleDelta.y > 0)
monitor.setBrightness(monitor.brightness + 0.1);
else if (event.angleDelta.y < 0)
monitor.setBrightness(monitor.brightness - 0.1);
}
VerticalSlider {
anchors.fill: parent
icon: `brightness_${(Math.round(value * 6) + 1)}`
value: root.monitor?.brightness ?? 0
onMoved: root.monitor?.setBrightness(value)
}
}
}

View file

@ -11,8 +11,6 @@ Slider {
required property string icon
property real oldValue
wheelEnabled: true
orientation: Qt.Vertical
background: StyledRect {
@ -59,7 +57,7 @@ Slider {
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onPressed: event => event.accepted = false
acceptedButtons: Qt.NoButton
}
MaterialIcon {