fix mpris get volume; added mpris set volume (#325)
This commit is contained in:
committed by
GitHub
parent
5e1c31eefb
commit
d728cd2bb4
35
src/mpris.rs
35
src/mpris.rs
@@ -19,7 +19,7 @@ use crate::playable::Playable;
|
|||||||
use crate::playlist::Playlist;
|
use crate::playlist::Playlist;
|
||||||
use crate::queue::{Queue, RepeatSetting};
|
use crate::queue::{Queue, RepeatSetting};
|
||||||
use crate::show::Show;
|
use crate::show::Show;
|
||||||
use crate::spotify::{PlayerEvent, Spotify, URIType};
|
use crate::spotify::{PlayerEvent, Spotify, URIType, VOLUME_PERCENT};
|
||||||
use crate::track::Track;
|
use crate::track::Track;
|
||||||
use crate::traits::ListItem;
|
use crate::traits::ListItem;
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
@@ -268,14 +268,28 @@ fn run_dbus_server(
|
|||||||
Ok(())
|
Ok(())
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
let property_volume = f
|
let property_volume = {
|
||||||
.property::<f64, _>("Volume", ())
|
let spotify1 = spotify.clone();
|
||||||
.access(Access::Read)
|
let spotify2 = spotify.clone();
|
||||||
.on_get(|iter, _| {
|
let event = ev.clone();
|
||||||
iter.append(1.0);
|
f.property::<f64, _>("Volume", ())
|
||||||
Ok(())
|
.access(Access::ReadWrite)
|
||||||
});
|
.on_get(move |i, _| {
|
||||||
|
i.append(spotify1.volume() as f64 / 65535_f64);
|
||||||
|
Ok(())
|
||||||
|
})
|
||||||
|
.on_set(move |i, _| {
|
||||||
|
let cur = spotify2.volume() as f64 / 65535_f64;
|
||||||
|
let req = i.get::<f64>().unwrap_or(cur);
|
||||||
|
if req >= 0.0 && req <= 1.0 {
|
||||||
|
let vol = (VOLUME_PERCENT as f64) * req * 100.0;
|
||||||
|
spotify2.set_volume(vol as u16);
|
||||||
|
}
|
||||||
|
event.trigger();
|
||||||
|
Ok(())
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
let property_rate = f
|
let property_rate = f
|
||||||
.property::<f64, _>("Rate", ())
|
.property::<f64, _>("Rate", ())
|
||||||
@@ -352,6 +366,7 @@ fn run_dbus_server(
|
|||||||
let property_shuffle = {
|
let property_shuffle = {
|
||||||
let queue_get = queue.clone();
|
let queue_get = queue.clone();
|
||||||
let queue_set = queue.clone();
|
let queue_set = queue.clone();
|
||||||
|
let event = ev.clone();
|
||||||
f.property::<bool, _>("Shuffle", ())
|
f.property::<bool, _>("Shuffle", ())
|
||||||
.access(Access::ReadWrite)
|
.access(Access::ReadWrite)
|
||||||
.on_get(move |iter, _| {
|
.on_get(move |iter, _| {
|
||||||
@@ -363,7 +378,7 @@ fn run_dbus_server(
|
|||||||
if let Some(shuffle_state) = iter.get() {
|
if let Some(shuffle_state) = iter.get() {
|
||||||
queue_set.set_shuffle(shuffle_state);
|
queue_set.set_shuffle(shuffle_state);
|
||||||
}
|
}
|
||||||
ev.trigger();
|
event.trigger();
|
||||||
Ok(())
|
Ok(())
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user