diff --git a/src/main.rs b/src/main.rs index 2f79ee9..c3d6796 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,7 @@ use gio::prelude::*; use gtk::prelude::*; use gtk::Orientation; -use rodio::Source; +use rodio::Sink; use std::env::args; use std::fs::File; use std::io::BufReader; @@ -44,7 +44,9 @@ fn build_ui(application: >k::Application) { let source = rodio::Decoder::new(BufReader::new(file)) .expect("Couldn't decode audio"); - rodio::play_raw(&device, source.convert_samples()); + let sink = Sink::new(&device); + sink.append(source); + sink.pause(); let row = gtk::Box::new(Orientation::Horizontal, SPACING); row.set_homogeneous(true); @@ -68,6 +70,18 @@ fn build_ui(application: >k::Application) { slider.set_draw_value(false); + slider.connect_value_changed(move |scale| { + let volume = scale.get_value(); + println!("volume: {}", volume); + + if volume == 0. { + sink.pause(); + } else { + sink.play(); + sink.set_volume(volume as f32); + } + }); + row.add(&slider); vertical.add(&row);