introduce track data class

This commit is contained in:
Henrik Friedrichsen
2019-03-06 00:15:28 +01:00
parent 0f3cc41115
commit 91e89c2970
10 changed files with 98 additions and 75 deletions

View File

@@ -1,12 +1,12 @@
use std::collections::vec_deque::Iter;
use std::collections::VecDeque;
use rspotify::spotify::model::track::FullTrack;
use track::Track;
use events::{Event, EventManager};
pub struct Queue {
queue: VecDeque<FullTrack>,
queue: VecDeque<Track>,
ev: EventManager,
}
@@ -24,35 +24,35 @@ impl Queue {
ev: ev,
}
}
pub fn remove(&mut self, index: usize) -> Option<FullTrack> {
pub fn remove(&mut self, index: usize) -> Option<Track> {
match self.queue.remove(index) {
Some(track) => {
debug!("Removed from queue: {}", &track.name);
debug!("Removed from queue: {}", &track);
self.ev.send(Event::Queue(QueueChange::Remove(index)));
Some(track)
}
None => None,
}
}
pub fn enqueue(&mut self, track: FullTrack) {
debug!("Queued: {}", &track.name);
pub fn enqueue(&mut self, track: Track) {
debug!("Queued: {}", &track);
self.queue.push_back(track);
self.ev.send(Event::Queue(QueueChange::Enqueue));
}
pub fn dequeue(&mut self) -> Option<FullTrack> {
pub fn dequeue(&mut self) -> Option<Track> {
match self.queue.pop_front() {
Some(track) => {
debug!("Dequeued : {}", track.name);
debug!("Dequeued : {}", track);
self.ev.send(Event::Queue(QueueChange::Dequeue));
Some(track)
}
None => None,
}
}
pub fn peek(&self) -> Option<&FullTrack> {
pub fn peek(&self) -> Option<&Track> {
self.queue.get(0)
}
pub fn iter(&self) -> Iter<FullTrack> {
pub fn iter(&self) -> Iter<Track> {
self.queue.iter()
}
}