diff --git a/src/mpv.rs b/src/mpv.rs index 6fd2736..38cbab0 100644 --- a/src/mpv.rs +++ b/src/mpv.rs @@ -7,6 +7,8 @@ pub enum Message { Pause, Forward, Backward, + SpeedUp, + SlowDown, } pub fn play(siv: &mut Cursive) { @@ -25,6 +27,14 @@ pub fn forward(siv: &mut Cursive) { send_message(siv, Message::Forward); } +pub fn speed_up(siv: &mut Cursive) { + send_message(siv, Message::SpeedUp) +} + +pub fn slow_down(siv: &mut Cursive) { + send_message(siv, Message::SlowDown) +} + pub fn backward(siv: &mut Cursive) { send_message(siv, Message::Backward); } @@ -100,6 +110,18 @@ pub fn simple_example( Ok(Message::Backward) => mpv .command(&["seek", "-5"]) .expect("Error setting MPV property"), + Ok(Message::SpeedUp) => { + let speed: f64 = mpv.get_property("speed").unwrap(); + let new_speed: f64 = (speed + 0.25).min(5.0); + mpv.set_option("speed", new_speed) + .expect("Error setting MPV property"); + }, + Ok(Message::SlowDown) => { + let speed: f64 = mpv.get_property("speed").unwrap(); + let new_speed: f64 = (speed - 0.25).min(0.5); + mpv.set_option("speed", new_speed) + .expect("Error setting MPV property"); + }, _ => break 'main, }; } diff --git a/src/tui.rs b/src/tui.rs index 8949af1..cc82e99 100644 --- a/src/tui.rs +++ b/src/tui.rs @@ -31,6 +31,8 @@ fn show_player(siv: &mut Cursive, book_mpv: &(u64, i64, u64)) { .child(Button::new("Pause", mpv::pause)) .child(Button::new("Backward", mpv::backward)) .child(Button::new("Forward", mpv::forward)) + .child(Button::new("Speed+", mpv::speed_up)) + .child(Button::new("Speed-", mpv::slow_down)) .child(Button::new("Exit", show_bookshelf)), ) .title("Player"),