1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-04-12 08:42:13 -04:00

audio: New ability to hide input/output devices

- Updated slider presets
- Disabled mouse wheel scrolling on list scroll
This commit is contained in:
purian23
2026-02-17 00:54:32 -05:00
parent f280cd9d3b
commit ef19568dd7
5 changed files with 239 additions and 8 deletions

View File

@@ -16,6 +16,7 @@ Item {
property bool showValue: true
property bool isDragging: false
property bool wheelEnabled: true
property bool centerMinimum: false
property real valueOverride: -1
property bool alwaysShowValue: false
readonly property bool containsMouse: sliderMouseArea.containsMouse
@@ -30,6 +31,8 @@ Item {
function updateValueFromPosition(x) {
let ratio = Math.max(0, Math.min(1, (x - sliderHandle.width / 2) / (sliderTrack.width - sliderHandle.width)));
if (centerMinimum)
ratio = Math.max(0, (ratio - 0.5) * 2);
let rawValue = minimum + ratio * (maximum - minimum);
let newValue = step > 1 ? Math.round(rawValue / step) * step : Math.round(rawValue);
newValue = Math.max(minimum, Math.min(maximum, newValue));
@@ -70,7 +73,9 @@ Item {
height: parent.height
radius: Theme.cornerRadius
width: {
const ratio = (slider.value - slider.minimum) / (slider.maximum - slider.minimum);
const range = slider.maximum - slider.minimum;
const rawRatio = range === 0 ? 0 : (slider.value - slider.minimum) / range;
const ratio = slider.centerMinimum ? (0.5 + rawRatio * 0.5) : rawRatio;
const travel = sliderTrack.width - sliderHandle.width;
const center = (travel * ratio) + sliderHandle.width / 2;
return Math.max(0, Math.min(sliderTrack.width, center));
@@ -87,7 +92,9 @@ Item {
height: 24
radius: Theme.cornerRadius
x: {
const ratio = (slider.value - slider.minimum) / (slider.maximum - slider.minimum);
const range = slider.maximum - slider.minimum;
const rawRatio = range === 0 ? 0 : (slider.value - slider.minimum) / range;
const ratio = slider.centerMinimum ? (0.5 + rawRatio * 0.5) : rawRatio;
const travel = sliderTrack.width - width;
return Math.max(0, Math.min(travel, travel * ratio));
}