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_
|
item_
|
||||||
})
|
})
|
||||||
.collect::<Vec<QueueItem<T, U>>>();
|
.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(
|
self.items.insert(
|
||||||
i + if self.items.is_empty() { 0 } else { 1 },
|
i + if empty { 0 } else { 1 },
|
||||||
QueueItem {
|
QueueItem {
|
||||||
item,
|
item,
|
||||||
state: QueueState::AddHere,
|
state: QueueState::AddHere,
|
||||||
by_human,
|
by_human,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
self.items.push(
|
||||||
|
QueueItem {
|
||||||
|
item,
|
||||||
|
state: QueueState::NoState,
|
||||||
|
by_human,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Inserts an item after the currently playing item
|
/// Inserts an item after the currently playing item
|
||||||
|
@ -180,17 +196,30 @@ impl<
|
||||||
.collect::<Vec<QueueItem<T, U>>>();
|
.collect::<Vec<QueueItem<T, U>>>();
|
||||||
|
|
||||||
let empty = self.items.is_empty();
|
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();
|
let len = items.len();
|
||||||
for item in items.into_iter().rev() {
|
for item in items.into_iter().rev() {
|
||||||
|
if by_human {
|
||||||
self.items.insert(
|
self.items.insert(
|
||||||
i + if empty { 0 } else { 1 },
|
i + if empty { 0 } else { 1 },
|
||||||
QueueItem {
|
QueueItem {
|
||||||
item,
|
item,
|
||||||
state: QueueState::NoState,
|
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;
|
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> {
|
pub fn move_to(&mut self, index: usize) -> Result<(), QueueError> {
|
||||||
use QueueState::*;
|
use QueueState::*;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
let empty = self.items.is_empty();
|
let empty = self.items.is_empty();
|
||||||
|
|
||||||
let index = if !empty {
|
let index = if !empty {
|
||||||
index
|
index
|
||||||
} else {
|
} else {
|
||||||
|
@ -371,7 +397,7 @@ impl<
|
||||||
}
|
}
|
||||||
|
|
||||||
self.items[0].state = QueueState::NoState;
|
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;
|
self.items[1].state = QueueState::AddHere;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -425,7 +451,7 @@ impl<
|
||||||
|
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
|
||||||
#[derive(Error, Debug, Clone)]
|
#[derive(Error, Debug, PartialEq, PartialOrd, Clone)]
|
||||||
pub enum QueueError {
|
pub enum QueueError {
|
||||||
#[error("Index out of bounds! Index {index} is over len {len}")]
|
#[error("Index out of bounds! Index {index} is over len {len}")]
|
||||||
OutOfBounds { index: usize, len: usize },
|
OutOfBounds { index: usize, len: usize },
|
||||||
|
|
Loading…
Reference in a new issue