Horizontal media widget #18

Merged
Zacharias-Brohn merged 2 commits from horizontal-media-widget into settingsWindow 2026-02-25 22:22:03 +01:00
2 changed files with 50 additions and 50 deletions
+48 -48
View File
@@ -37,54 +37,54 @@ Item {
onTriggered: Players.active?.positionChanged() onTriggered: Players.active?.positionChanged()
} }
Shape { // Shape {
id: visualizer // id: visualizer
//
readonly property real centerX: width / 2 // readonly property real centerX: width / 2
readonly property real centerY: height / 2 // readonly property real centerY: height / 2
property color colour: DynamicColors.palette.m3primary // property color colour: DynamicColors.palette.m3primary
readonly property real innerX: cover.implicitWidth / 2 + Appearance.spacing.small // readonly property real innerX: cover.implicitWidth / 2 + Appearance.spacing.small
readonly property real innerY: cover.implicitHeight / 2 + Appearance.spacing.small // readonly property real innerY: cover.implicitHeight / 2 + Appearance.spacing.small
//
anchors.fill: cover // anchors.fill: cover
anchors.margins: -Config.dashboard.sizes.mediaVisualiserSize // anchors.margins: -Config.dashboard.sizes.mediaVisualiserSize
asynchronous: true // asynchronous: true
data: visualizerBars.instances // data: visualizerBars.instances
preferredRendererType: Shape.CurveRenderer // preferredRendererType: Shape.CurveRenderer
} // }
//
Variants { // Variants {
id: visualizerBars // id: visualizerBars
//
model: Array.from({ // model: Array.from({
length: Config.services.visualizerBars // length: Config.services.visualizerBars
}, (_, i) => i) // }, (_, i) => i)
//
ShapePath { // ShapePath {
id: visualizerBar // id: visualizerBar
//
readonly property real angle: modelData * 2 * Math.PI / Config.services.visualizerBars // readonly property real angle: modelData * 2 * Math.PI / Config.services.visualizerBars
readonly property real cos: Math.cos(angle) // readonly property real cos: Math.cos(angle)
readonly property real magnitude: value * Config.dashboard.sizes.mediaVisualiserSize // readonly property real magnitude: value * Config.dashboard.sizes.mediaVisualiserSize
required property int modelData // required property int modelData
readonly property real sin: Math.sin(angle) // readonly property real sin: Math.sin(angle)
readonly property real value: Math.max(1e-3, Math.min(1, Audio.cava.values[modelData])) // readonly property real value: Math.max(1e-3, Math.min(1, Audio.cava.values[modelData]))
//
capStyle: Appearance.rounding.scale === 0 ? ShapePath.SquareCap : ShapePath.RoundCap // capStyle: Appearance.rounding.scale === 0 ? ShapePath.SquareCap : ShapePath.RoundCap
startX: visualizer.centerX + (visualizer.innerX + strokeWidth / 2) * cos // startX: visualizer.centerX + (visualizer.innerX + strokeWidth / 2) * cos
strokeColor: DynamicColors.palette.m3primary // strokeColor: DynamicColors.palette.m3primary
strokeWidth: 360 / Config.services.visualizerBars - Appearance.spacing.small / 4 // strokeWidth: 360 / Config.services.visualizerBars - Appearance.spacing.small / 4
//
startY: PathLine { // startY: PathLine {
x: visualizer.centerX + (visualizer.innerX + visualizerBar.strokeWidth / 2 + visualizerBar.magnitude) * visualizerBar.cos // x: visualizer.centerX + (visualizer.innerX + visualizerBar.strokeWidth / 2 + visualizerBar.magnitude) * visualizerBar.cos
y: visualizer.centerY + (visualizer.innerY + visualizerBar.strokeWidth / 2 + visualizerBar.magnitude) * visualizerBar.sin // y: visualizer.centerY + (visualizer.innerY + visualizerBar.strokeWidth / 2 + visualizerBar.magnitude) * visualizerBar.sin
} // }
Behavior on strokeColor { // Behavior on strokeColor {
CAnim { // CAnim {
} // }
} // }
} // }
} // }
Shape { Shape {
preferredRendererType: Shape.CurveRenderer preferredRendererType: Shape.CurveRenderer
+2 -2
View File
@@ -6,9 +6,9 @@ qml_module(ZShell-services
beattracker.hpp beattracker.cpp beattracker.hpp beattracker.cpp
audiocollector.hpp audiocollector.cpp audiocollector.hpp audiocollector.cpp
audioprovider.hpp audioprovider.cpp audioprovider.hpp audioprovider.cpp
# cavaprovider.hpp cavaprovider.cpp cavaprovider.hpp cavaprovider.cpp
LIBRARIES LIBRARIES
PkgConfig::Pipewire PkgConfig::Pipewire
PkgConfig::Aubio PkgConfig::Aubio
# PkgConfig::Cava PkgConfig::Cava
) )