// SPDX-FileCopyrightText: 2020 George Florea Bănuș // SPDX-FileCopyrightText: 2026 Tri Vo Khac // SPDX-License-Identifier: GPL-3.0-or-later import QtQuick import QtQuick.Controls import org.kde.kirigami as Kirigami import org.kde.ki18n // Use the desktop style's handle and hover/focus feedback. Slider { id: root required property MpvItem mpv Accessible.name: KI18n.i18nc("@label:slider", "Volume") Accessible.description: root.mpv.mute ? KI18n.i18nc("@info volume muted", "Muted") : KI18n.i18nc("@info volume percentage", "%1%", Math.round(value)) from: 0 to: root.mpv.volumeMax implicitWidth: Kirigami.Units.gridUnit * 5 wheelEnabled: true stepSize: QtPotatoSettings.volumeStep focusPolicy: Qt.TabFocus // Let the Slider consume navigation keys before window playback shortcuts. Keys.onShortcutOverride: event => { if (event.modifiers === Qt.NoModifier && [Qt.Key_Left, Qt.Key_Right, Qt.Key_Up, Qt.Key_Down, Qt.Key_Home, Qt.Key_End].includes(event.key)) { event.accepted = true } } Keys.onPressed: event => { if (event.modifiers === Qt.NoModifier && (event.key === Qt.Key_Home || event.key === Qt.Key_End)) { value = event.key === Qt.Key_Home ? from : to moved() event.accepted = true } } onMoved: root.mpv.volume = Math.round(value) // Follow mpv, but not while the user drags. Binding on value { value: root.mpv.volume when: !root.pressed restoreMode: Binding.RestoreNone } }