librmo 0.4.4

A library to manage media files and play them
Documentation

use rodio::{Decoder, OutputStream, OutputStreamHandle, Sink};
use std::fs::File;
use std::io::BufReader;

pub struct Player {
    sink: Sink,
    #[allow(dead_code)]
    stream: OutputStream,
    #[allow(dead_code)]
    stream_handle: OutputStreamHandle,
    #[allow(dead_code)]
    state: PlayerState,
}

impl Default for Player {
    fn default() -> Self {
        let (stream, stream_handle) = OutputStream::try_default().unwrap();
        let sink = Sink::try_new(&stream_handle).unwrap();
        sink.pause();
        Self {
            sink: sink,
            state: PlayerState::Paused,
            stream: stream,
            stream_handle: stream_handle,
        }
    }
}

impl Player {
    pub fn new(sink: Sink) -> Self {
        let mut default = Player::default();
        default.sink = sink;
        default
    }

    pub fn play(&self, path: String) {
        let file = BufReader::new(File::open(path).unwrap());
        let source = Decoder::new(file).unwrap();
        self.sink.append(source);
    }

    pub fn set_volume(&self, new_volume: f32) {
        self.sink.set_volume(new_volume);
    }

    pub fn clear(&self) {
        self.sink.clear();
    }

    pub fn toggle_pause(&mut self) {
        if self.sink.is_paused() {
            self.sink.play();
            self.state = PlayerState::Playing;
        } else {
            self.sink.pause();
            self.state = PlayerState::Paused;
        }
    }

    pub fn seek() {}
}

pub enum PlayerState {
    Playing,
    Paused,
    Stopped,
}