diff --git a/src/main.rs b/src/main.rs index e925aef..e230a40 100644 --- a/src/main.rs +++ b/src/main.rs @@ -23,15 +23,15 @@ use std::process; use std::sync::Arc; use std::sync::Mutex; +use cursive::event::Key; use cursive::views::*; use cursive::Cursive; -use cursive::event::{Event, Key}; mod config; +mod queue; mod spotify; mod theme; mod ui; -mod queue; fn init_logger(content: TextContent) { let mut builder = env_logger::Builder::from_default_env(); @@ -84,7 +84,7 @@ fn main() { cfg.username, cfg.password, cfg.client_id, - queue.clone() + queue.clone(), )); let searchscreen = cursive.active_screen(); diff --git a/src/queue.rs b/src/queue.rs index f702c68..9c8375e 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -9,13 +9,12 @@ pub struct Queue { impl Queue { pub fn new() -> Queue { Queue { - queue: VecDeque::new() + queue: VecDeque::new(), } } pub fn enqueue(&mut self, track: FullTrack) { self.queue.push_back(track); } - pub fn dequeue(&mut self) -> Option { self.queue.pop_front() } diff --git a/src/spotify.rs b/src/spotify.rs index 20d4689..d99e3b6 100644 --- a/src/spotify.rs +++ b/src/spotify.rs @@ -23,9 +23,9 @@ use futures::Future; use futures::Stream; use tokio_core::reactor::Core; -use std::thread; use std::sync::Arc; use std::sync::Mutex; +use std::thread; use queue::Queue; @@ -45,16 +45,20 @@ struct Worker { commands: mpsc::UnboundedReceiver, player: Player, play_task: Box>, - queue: Arc> + queue: Arc>, } impl Worker { - fn new(commands: mpsc::UnboundedReceiver, player: Player, queue: Arc>) -> Worker { + fn new( + commands: mpsc::UnboundedReceiver, + player: Player, + queue: Arc>, + ) -> Worker { Worker { commands: commands, player: player, play_task: Box::new(futures::empty()), - queue: queue + queue: queue, } } } @@ -89,7 +93,8 @@ impl futures::Future for Worker { let mut queue = self.queue.lock().unwrap(); if let Some(track) = queue.dequeue() { debug!("next track in queue: {}", track.name); - let trackid = SpotifyId::from_base62(&track.id).expect("could not load track"); + let trackid = + SpotifyId::from_base62(&track.id).expect("could not load track"); self.play_task = Box::new(self.player.load(trackid, false, 0)); self.player.play(); } @@ -111,7 +116,12 @@ impl futures::Future for Worker { } impl Spotify { - pub fn new(user: String, password: String, client_id: String, queue: Arc>) -> Spotify { + pub fn new( + user: String, + password: String, + client_id: String, + queue: Arc>, + ) -> Spotify { let session_config = SessionConfig::default(); let player_config = PlayerConfig { bitrate: Bitrate::Bitrate320, @@ -123,7 +133,15 @@ impl Spotify { let (tx, rx) = mpsc::unbounded(); let (p, c) = oneshot::channel(); thread::spawn(move || { - Spotify::worker(rx, p, session_config, player_config, credentials, client_id, queue) + Spotify::worker( + rx, + p, + session_config, + player_config, + credentials, + client_id, + queue, + ) }); let token = c.wait().unwrap(); @@ -143,7 +161,7 @@ impl Spotify { player_config: PlayerConfig, credentials: Credentials, client_id: String, - queue: Arc> + queue: Arc>, ) { let mut core = Core::new().unwrap(); let handle = core.handle(); diff --git a/src/ui/search.rs b/src/ui/search.rs index c8cec96..22851a4 100644 --- a/src/ui/search.rs +++ b/src/ui/search.rs @@ -8,8 +8,8 @@ use std::sync::Mutex; use librespot::core::spotify_id::SpotifyId; -use spotify::Spotify; use queue::Queue; +use spotify::Spotify; pub struct SearchView { pub view: Panel, @@ -17,7 +17,12 @@ pub struct SearchView { } impl SearchView { - fn search_handler(s: &mut Cursive, input: &str, spotify: Arc, queue: Arc>) { + fn search_handler( + s: &mut Cursive, + input: &str, + spotify: Arc, + queue: Arc>, + ) { let mut results: ViewRef = s.find_id("search_results").unwrap(); let tracks = spotify.search(input, 50, 0); @@ -27,7 +32,9 @@ impl SearchView { for track in tracks.tracks.items { let s = spotify.clone(); let trackid = SpotifyId::from_base62(&track.id).expect("could not load track"); - let artists = track.artists.iter() + let artists = track + .artists + .iter() .map(|ref artist| artist.name.clone()) .collect::>() .join(", "); @@ -37,12 +44,11 @@ impl SearchView { s.play(); }); let queue = queue.clone(); - let button_queue = OnEventView::new(button) - .on_event(' ', move |_cursive| { - let mut queue = queue.lock().unwrap(); - queue.enqueue(track.clone()); - debug!("Added to queue: {}", track.name); - }); + let button_queue = OnEventView::new(button).on_event(' ', move |_cursive| { + let mut queue = queue.lock().unwrap(); + queue.enqueue(track.clone()); + debug!("Added to queue: {}", track.name); + }); results.add_child("", button_queue); } }