Fix pulse volume parsing
This commit is contained in:
28
src/pulse.rs
28
src/pulse.rs
@ -1,3 +1,5 @@
|
|||||||
|
use std::collections::BTreeMap;
|
||||||
|
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
@ -11,6 +13,23 @@ pub struct Sink {
|
|||||||
pub name: String,
|
pub name: String,
|
||||||
pub description: String,
|
pub description: String,
|
||||||
pub mute: bool,
|
pub mute: bool,
|
||||||
|
|
||||||
|
/// Comma-separated list
|
||||||
|
pub channel_map: String,
|
||||||
|
|
||||||
|
/// Volume values per channel
|
||||||
|
pub volume: BTreeMap<String, Volume>,
|
||||||
|
|
||||||
|
/// Arbitrary stringly-typed properties
|
||||||
|
pub properties: BTreeMap<String, String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize)]
|
||||||
|
pub struct Volume {
|
||||||
|
/// Volume value in range 0..=65536
|
||||||
|
value: u32,
|
||||||
|
value_percent: String,
|
||||||
|
db: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_sinks() -> eyre::Result<output::SinkList> {
|
pub fn get_sinks() -> eyre::Result<output::SinkList> {
|
||||||
@ -20,14 +39,19 @@ pub fn get_sinks() -> eyre::Result<output::SinkList> {
|
|||||||
let mut output = SinkList::default();
|
let mut output = SinkList::default();
|
||||||
|
|
||||||
for sink in sinks {
|
for sink in sinks {
|
||||||
let default = dbg!(&sink.name) == dbg!(&default_sink);
|
let default = sink.name == default_sink;
|
||||||
|
|
||||||
let sink = output::Sink {
|
let sink = output::Sink {
|
||||||
name: sink.name,
|
name: sink.name,
|
||||||
pretty_name: sink.description,
|
pretty_name: sink.description,
|
||||||
muted: sink.mute,
|
muted: sink.mute,
|
||||||
default,
|
default,
|
||||||
volume: 0, // TODO
|
volume: sink
|
||||||
|
.volume
|
||||||
|
.first_key_value()
|
||||||
|
.map(|(_key, volume)| u64::from(volume.value) * 100 / u64::from(u16::MAX))
|
||||||
|
.map(|volume| volume as u8)
|
||||||
|
.unwrap_or(0),
|
||||||
};
|
};
|
||||||
|
|
||||||
if default {
|
if default {
|
||||||
|
|||||||
Reference in New Issue
Block a user