rustfmt
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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<FullTrack> {
|
||||
self.queue.pop_front()
|
||||
}
|
||||
|
||||
@@ -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<WorkerCommand>,
|
||||
player: Player,
|
||||
play_task: Box<futures::Future<Item = (), Error = oneshot::Canceled>>,
|
||||
queue: Arc<Mutex<Queue>>
|
||||
queue: Arc<Mutex<Queue>>,
|
||||
}
|
||||
|
||||
impl Worker {
|
||||
fn new(commands: mpsc::UnboundedReceiver<WorkerCommand>, player: Player, queue: Arc<Mutex<Queue>>) -> Worker {
|
||||
fn new(
|
||||
commands: mpsc::UnboundedReceiver<WorkerCommand>,
|
||||
player: Player,
|
||||
queue: Arc<Mutex<Queue>>,
|
||||
) -> 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<Mutex<Queue>>) -> Spotify {
|
||||
pub fn new(
|
||||
user: String,
|
||||
password: String,
|
||||
client_id: String,
|
||||
queue: Arc<Mutex<Queue>>,
|
||||
) -> 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<Mutex<Queue>>
|
||||
queue: Arc<Mutex<Queue>>,
|
||||
) {
|
||||
let mut core = Core::new().unwrap();
|
||||
let handle = core.handle();
|
||||
|
||||
@@ -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<LinearLayout>,
|
||||
@@ -17,7 +17,12 @@ pub struct SearchView {
|
||||
}
|
||||
|
||||
impl SearchView {
|
||||
fn search_handler(s: &mut Cursive, input: &str, spotify: Arc<Spotify>, queue: Arc<Mutex<Queue>>) {
|
||||
fn search_handler(
|
||||
s: &mut Cursive,
|
||||
input: &str,
|
||||
spotify: Arc<Spotify>,
|
||||
queue: Arc<Mutex<Queue>>,
|
||||
) {
|
||||
let mut results: ViewRef<ListView> = 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::<Vec<String>>()
|
||||
.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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user