mirror of
https://github.com/Dangoware/dango-music-player.git
synced 2025-04-19 10:02:53 -05:00
Added Missing Queue code for separation of human and puter added songs
This commit is contained in:
parent
2d9f441a76
commit
04ecd0e9d5
1 changed files with 47 additions and 21 deletions
|
@ -127,15 +127,31 @@ impl<
|
|||
item_
|
||||
})
|
||||
.collect::<Vec<QueueItem<T, U>>>();
|
||||
let empty = self.items.is_empty();
|
||||
|
||||
if !empty {
|
||||
self.items.get_mut(i).expect("There should be an item at index {i}").state = QueueState::NoState;
|
||||
}
|
||||
|
||||
|
||||
if by_human {
|
||||
self.items.insert(
|
||||
i + if self.items.is_empty() { 0 } else { 1 },
|
||||
i + if empty { 0 } else { 1 },
|
||||
QueueItem {
|
||||
item,
|
||||
state: QueueState::AddHere,
|
||||
by_human,
|
||||
},
|
||||
);
|
||||
} else {
|
||||
self.items.push(
|
||||
QueueItem {
|
||||
item,
|
||||
state: QueueState::NoState,
|
||||
by_human,
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// Inserts an item after the currently playing item
|
||||
|
@ -180,17 +196,30 @@ impl<
|
|||
.collect::<Vec<QueueItem<T, U>>>();
|
||||
|
||||
let empty = self.items.is_empty();
|
||||
if !empty {
|
||||
self.items.get_mut(i).expect("There should be an item at index {i}").state == QueueState::NoState;
|
||||
}
|
||||
|
||||
let len = items.len();
|
||||
for item in items.into_iter().rev() {
|
||||
if by_human {
|
||||
self.items.insert(
|
||||
i + if empty { 0 } else { 1 },
|
||||
QueueItem {
|
||||
item,
|
||||
state: QueueState::NoState,
|
||||
by_human,
|
||||
by_human, // true
|
||||
},
|
||||
);
|
||||
} else {
|
||||
self.items.push(
|
||||
QueueItem {
|
||||
item,
|
||||
state: QueueState::NoState,
|
||||
by_human, // false
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
self.items[i + len - if empty { 1 } else { 0 }].state = QueueState::AddHere;
|
||||
}
|
||||
|
@ -302,10 +331,7 @@ impl<
|
|||
pub fn move_to(&mut self, index: usize) -> Result<(), QueueError> {
|
||||
use QueueState::*;
|
||||
|
||||
|
||||
|
||||
let empty = self.items.is_empty();
|
||||
|
||||
let index = if !empty {
|
||||
index
|
||||
} else {
|
||||
|
@ -371,7 +397,7 @@ impl<
|
|||
}
|
||||
|
||||
self.items[0].state = QueueState::NoState;
|
||||
if self.items.get_mut(1).is_some() {
|
||||
if self.items.get(1).is_some() {
|
||||
self.items[1].state = QueueState::AddHere;
|
||||
}
|
||||
}
|
||||
|
@ -425,7 +451,7 @@ impl<
|
|||
|
||||
use thiserror::Error;
|
||||
|
||||
#[derive(Error, Debug, Clone)]
|
||||
#[derive(Error, Debug, PartialEq, PartialOrd, Clone)]
|
||||
pub enum QueueError {
|
||||
#[error("Index out of bounds! Index {index} is over len {len}")]
|
||||
OutOfBounds { index: usize, len: usize },
|
||||
|
|
Loading…
Reference in a new issue