volume slider works again

This commit is contained in:
Erica Z 2024-10-30 13:09:22 +01:00
parent 0f2351ae01
commit bf8b02de12
2 changed files with 31 additions and 2 deletions

View file

@ -22,6 +22,8 @@ mod ffi {
pub fn audrey_playbin_get_state(self_: *mut AudreyPlaybin) -> super::state::ffi::State; pub fn audrey_playbin_get_state(self_: *mut AudreyPlaybin) -> super::state::ffi::State;
pub fn audrey_playbin_pause(self_: *mut AudreyPlaybin); pub fn audrey_playbin_pause(self_: *mut AudreyPlaybin);
pub fn audrey_playbin_play(self_: *mut AudreyPlaybin); pub fn audrey_playbin_play(self_: *mut AudreyPlaybin);
pub fn audrey_playbin_get_volume(self_: *mut AudreyPlaybin) -> std::ffi::c_int;
pub fn audrey_playbin_set_volume(self_: *mut AudreyPlaybin, volume: std::ffi::c_int);
} }
} }
@ -53,4 +55,16 @@ impl Playbin {
unsafe { ffi::audrey_playbin_play(self.to_glib_none().0) } unsafe { ffi::audrey_playbin_play(self.to_glib_none().0) }
} }
pub fn get_volume(&self) -> i32 {
use glib::translate::ToGlibPtr;
unsafe { ffi::audrey_playbin_get_volume(self.to_glib_none().0) }
}
pub fn set_volume(&self, value: i32) {
use glib::translate::ToGlibPtr;
unsafe { ffi::audrey_playbin_set_volume(self.to_glib_none().0, value) }
}
} }

View file

@ -18,8 +18,8 @@ mod imp {
#[property(get, set, default = true)] #[property(get, set, default = true)]
show_cover_art: Cell<bool>, show_cover_art: Cell<bool>,
#[property(get, set)] #[property(get = Self::get_volume, set = Self::set_volume)]
volume: Cell<i32>, volume: i32,
} }
#[glib::object_subclass] #[glib::object_subclass]
@ -166,6 +166,21 @@ mod imp {
//this.playbin.mute = !this.playbin.mute; //this.playbin.mute = !this.playbin.mute;
todo!() todo!()
} }
fn get_volume(&self) -> i32 {
let playbin = self.playbin.borrow();
match playbin.as_ref() {
None => 100,
Some(playbin) => playbin.get_volume(),
}
}
fn set_volume(&self, value: i32) {
let playbin = self.playbin.borrow();
let playbin = playbin.as_ref().unwrap();
playbin.set_volume(value);
}
} }
} }