cargo fmt
This commit is contained in:
@@ -25,9 +25,9 @@ use std::sync::Arc;
|
|||||||
use std::sync::Mutex;
|
use std::sync::Mutex;
|
||||||
|
|
||||||
use cursive::event::Key;
|
use cursive::event::Key;
|
||||||
|
use cursive::traits::Identifiable;
|
||||||
use cursive::view::ScrollStrategy;
|
use cursive::view::ScrollStrategy;
|
||||||
use cursive::views::*;
|
use cursive::views::*;
|
||||||
use cursive::traits::Identifiable;
|
|
||||||
use cursive::Cursive;
|
use cursive::Cursive;
|
||||||
|
|
||||||
mod config;
|
mod config;
|
||||||
|
|||||||
@@ -29,8 +29,8 @@ use tokio_core::reactor::Core;
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::sync::Mutex;
|
use std::sync::Mutex;
|
||||||
use std::sync::RwLock;
|
use std::sync::RwLock;
|
||||||
use std::time::{Duration, SystemTime};
|
|
||||||
use std::thread;
|
use std::thread;
|
||||||
|
use std::time::{Duration, SystemTime};
|
||||||
|
|
||||||
use events::{Event, EventManager};
|
use events::{Event, EventManager};
|
||||||
use queue::Queue;
|
use queue::Queue;
|
||||||
@@ -99,7 +99,8 @@ impl futures::Future for Worker {
|
|||||||
debug!("message received!");
|
debug!("message received!");
|
||||||
match cmd {
|
match cmd {
|
||||||
WorkerCommand::Load(track) => {
|
WorkerCommand::Load(track) => {
|
||||||
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.play_task = Box::new(self.player.load(trackid, false, 0));
|
||||||
info!("player loading track..");
|
info!("player loading track..");
|
||||||
self.events.send(Event::PlayerTrack(Some(track)));
|
self.events.send(Event::PlayerTrack(Some(track)));
|
||||||
@@ -238,36 +239,58 @@ impl Spotify {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_current_status(&self) -> PlayerStatus {
|
pub fn get_current_status(&self) -> PlayerStatus {
|
||||||
let status = self.status.read().expect("could not acquire read lock on playback status");
|
let status = self
|
||||||
|
.status
|
||||||
|
.read()
|
||||||
|
.expect("could not acquire read lock on playback status");
|
||||||
(*status).clone()
|
(*status).clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_current_track(&self) -> Option<FullTrack> {
|
pub fn get_current_track(&self) -> Option<FullTrack> {
|
||||||
let track = self.track.read().expect("could not acquire read lock on current track");
|
let track = self
|
||||||
|
.track
|
||||||
|
.read()
|
||||||
|
.expect("could not acquire read lock on current track");
|
||||||
(*track).clone()
|
(*track).clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_current_progress(&self) -> Duration {
|
pub fn get_current_progress(&self) -> Duration {
|
||||||
self.get_elapsed().unwrap_or(Duration::from_secs(0)) + self.get_since().map(|t| t.elapsed().unwrap()).unwrap_or(Duration::from_secs(0))
|
self.get_elapsed().unwrap_or(Duration::from_secs(0))
|
||||||
|
+ self
|
||||||
|
.get_since()
|
||||||
|
.map(|t| t.elapsed().unwrap())
|
||||||
|
.unwrap_or(Duration::from_secs(0))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_elapsed(&self, new_elapsed: Option<Duration>) {
|
fn set_elapsed(&self, new_elapsed: Option<Duration>) {
|
||||||
let mut elapsed = self.elapsed.write().expect("could not acquire write lock on elapsed time");
|
let mut elapsed = self
|
||||||
|
.elapsed
|
||||||
|
.write()
|
||||||
|
.expect("could not acquire write lock on elapsed time");
|
||||||
*elapsed = new_elapsed;
|
*elapsed = new_elapsed;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_elapsed(&self) -> Option<Duration> {
|
fn get_elapsed(&self) -> Option<Duration> {
|
||||||
let elapsed = self.elapsed.read().expect("could not acquire read lock on elapsed time");
|
let elapsed = self
|
||||||
|
.elapsed
|
||||||
|
.read()
|
||||||
|
.expect("could not acquire read lock on elapsed time");
|
||||||
(*elapsed).clone()
|
(*elapsed).clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_since(&self, new_since: Option<SystemTime>) {
|
fn set_since(&self, new_since: Option<SystemTime>) {
|
||||||
let mut since = self.since.write().expect("could not acquire write lock on since time");
|
let mut since = self
|
||||||
|
.since
|
||||||
|
.write()
|
||||||
|
.expect("could not acquire write lock on since time");
|
||||||
*since = new_since;
|
*since = new_since;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_since(&self) -> Option<SystemTime> {
|
fn get_since(&self) -> Option<SystemTime> {
|
||||||
let since = self.since.read().expect("could not acquire read lock on since time");
|
let since = self
|
||||||
|
.since
|
||||||
|
.read()
|
||||||
|
.expect("could not acquire read lock on since time");
|
||||||
(*since).clone()
|
(*since).clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -300,10 +323,10 @@ impl Spotify {
|
|||||||
PlayerStatus::Paused => {
|
PlayerStatus::Paused => {
|
||||||
self.set_elapsed(Some(self.get_current_progress()));
|
self.set_elapsed(Some(self.get_current_progress()));
|
||||||
self.set_since(None);
|
self.set_since(None);
|
||||||
},
|
}
|
||||||
PlayerStatus::Playing => {
|
PlayerStatus::Playing => {
|
||||||
self.set_since(Some(SystemTime::now()));
|
self.set_since(Some(SystemTime::now()));
|
||||||
},
|
}
|
||||||
PlayerStatus::Stopped => {
|
PlayerStatus::Stopped => {
|
||||||
self.set_elapsed(None);
|
self.set_elapsed(None);
|
||||||
self.set_since(None);
|
self.set_since(None);
|
||||||
@@ -321,7 +344,10 @@ impl Spotify {
|
|||||||
self.set_elapsed(None);
|
self.set_elapsed(None);
|
||||||
self.set_since(None);
|
self.set_since(None);
|
||||||
|
|
||||||
let mut track = self.track.write().expect("could not acquire write lock on current track");
|
let mut track = self
|
||||||
|
.track
|
||||||
|
.write()
|
||||||
|
.expect("could not acquire write lock on current track");
|
||||||
*track = new_track;
|
*track = new_track;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
use std::collections::{HashMap};
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use cursive::direction::Direction;
|
use cursive::direction::Direction;
|
||||||
use cursive::event::{Event, EventResult, AnyCb};
|
use cursive::event::{AnyCb, Event, EventResult};
|
||||||
use cursive::traits::View;
|
use cursive::traits::View;
|
||||||
use cursive::view::{IntoBoxedView, Selector};
|
|
||||||
use cursive::vec::Vec2;
|
use cursive::vec::Vec2;
|
||||||
|
use cursive::view::{IntoBoxedView, Selector};
|
||||||
use cursive::Printer;
|
use cursive::Printer;
|
||||||
|
|
||||||
pub struct Layout {
|
pub struct Layout {
|
||||||
views: HashMap<String, Box<dyn View>>,
|
views: HashMap<String, Box<dyn View>>,
|
||||||
statusbar: Box<dyn View>,
|
statusbar: Box<dyn View>,
|
||||||
focus: Option<String>
|
focus: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Layout {
|
impl Layout {
|
||||||
@@ -18,7 +18,7 @@ impl Layout {
|
|||||||
Layout {
|
Layout {
|
||||||
views: HashMap::new(),
|
views: HashMap::new(),
|
||||||
statusbar: status.as_boxed_view(),
|
statusbar: status.as_boxed_view(),
|
||||||
focus: None
|
focus: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,12 +45,13 @@ impl View for Layout {
|
|||||||
let v = self.views.get(id).unwrap();
|
let v = self.views.get(id).unwrap();
|
||||||
let printer = &printer
|
let printer = &printer
|
||||||
.offset((0, 0))
|
.offset((0, 0))
|
||||||
.cropped((printer.size.x, printer.size.y - 2))
|
.cropped((printer.size.x, printer.size.y))
|
||||||
.focused(true);
|
.focused(true);
|
||||||
v.draw(printer);
|
v.draw(printer);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.statusbar.draw(&printer.offset((0, printer.size.y - 2)));
|
self.statusbar
|
||||||
|
.draw(&printer.offset((0, printer.size.y - 2)));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn required_size(&mut self, constraint: Vec2) -> Vec2 {
|
fn required_size(&mut self, constraint: Vec2) -> Vec2 {
|
||||||
@@ -69,7 +70,7 @@ impl View for Layout {
|
|||||||
fn layout(&mut self, size: Vec2) {
|
fn layout(&mut self, size: Vec2) {
|
||||||
if let Some(ref id) = self.focus {
|
if let Some(ref id) = self.focus {
|
||||||
let v = self.views.get_mut(id).unwrap();
|
let v = self.views.get_mut(id).unwrap();
|
||||||
v.layout(Vec2::new(size.x, size.y - 1));
|
v.layout(Vec2::new(size.x, size.y - 2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
pub mod layout;
|
||||||
pub mod playlist;
|
pub mod playlist;
|
||||||
pub mod queue;
|
pub mod queue;
|
||||||
pub mod search;
|
pub mod search;
|
||||||
pub mod trackbutton;
|
|
||||||
pub mod statusbar;
|
pub mod statusbar;
|
||||||
pub mod layout;
|
pub mod trackbutton;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ use cursive::traits::Boxable;
|
|||||||
use cursive::traits::Identifiable;
|
use cursive::traits::Identifiable;
|
||||||
use cursive::views::*;
|
use cursive::views::*;
|
||||||
use cursive::Cursive;
|
use cursive::Cursive;
|
||||||
use rspotify::spotify::model::playlist::{SimplifiedPlaylist};
|
use rspotify::spotify::model::playlist::SimplifiedPlaylist;
|
||||||
|
|
||||||
use queue::Queue;
|
use queue::Queue;
|
||||||
use spotify::Spotify;
|
use spotify::Spotify;
|
||||||
|
|||||||
Reference in New Issue
Block a user