update current_track when tracks before the current one are removed
also: don't use events to update the queue UI this makes the Add/Remove queue events useless, but we'll keep them for now hopefully fixes #22
This commit is contained in:
10
src/queue.rs
10
src/queue.rs
@@ -43,10 +43,6 @@ impl Queue {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get(&self, index: usize) -> &Track {
|
||||
&self.queue[index]
|
||||
}
|
||||
|
||||
pub fn get_current(&self) -> Option<&Track> {
|
||||
match self.current_track {
|
||||
Some(index) => Some(&self.queue[index]),
|
||||
@@ -88,8 +84,10 @@ impl Queue {
|
||||
// the same index again, because the next track is now at the position
|
||||
// of the one we deleted
|
||||
if let Some(current_track) = self.current_track {
|
||||
if current_track == index {
|
||||
if index == current_track {
|
||||
self.play(index);
|
||||
} else if index < current_track {
|
||||
self.current_track = Some(current_track - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -107,8 +105,8 @@ impl Queue {
|
||||
}
|
||||
|
||||
pub fn stop(&mut self) {
|
||||
self.spotify.stop();
|
||||
self.current_track = None;
|
||||
self.spotify.stop();
|
||||
}
|
||||
|
||||
pub fn next(&mut self) {
|
||||
|
||||
@@ -32,9 +32,10 @@ impl QueueView {
|
||||
|
||||
fn cb_delete(cursive: &mut Cursive, queue: &mut Queue) {
|
||||
let view_ref: Option<ViewRef<LinearLayout>> = cursive.find_id("queue_list");
|
||||
if let Some(queuelist) = view_ref {
|
||||
if let Some(mut queuelist) = view_ref {
|
||||
let index = queuelist.get_focus_index();
|
||||
queue.remove(index);
|
||||
queuelist.remove_child(index);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,16 +51,8 @@ impl QueueView {
|
||||
let view_ref: Option<ViewRef<LinearLayout>> = cursive.find_id("queue_list");
|
||||
if let Some(mut queuelist) = view_ref {
|
||||
match ev {
|
||||
QueueEvent::Add(index) => {
|
||||
let queue = self.queue.lock().expect("could not lock queue");
|
||||
let track = queue.get(index);
|
||||
let button = self.create_button(&track);
|
||||
queuelist.insert_child(index, button);
|
||||
}
|
||||
QueueEvent::Remove(index) => {
|
||||
queuelist.remove_child(index);
|
||||
}
|
||||
QueueEvent::Show => self.populate(&mut queuelist),
|
||||
_ => (),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user