layout improvements
This commit is contained in:
@@ -597,6 +597,13 @@ impl PlayerController {
|
||||
self.queue.clone()
|
||||
}
|
||||
|
||||
/// Clear the queue entirely (used when playback genuinely stops, e.g. the
|
||||
/// sleep timer fires or the queue ends with repeat off). Pair with
|
||||
/// `emit_queue_changed` so the frontend hides the mini player.
|
||||
pub fn clear_queue(&self) {
|
||||
self.queue.lock_safe().clear();
|
||||
}
|
||||
|
||||
/// Toggle shuffle
|
||||
pub fn toggle_shuffle(&self) {
|
||||
self.queue.lock_safe().toggle_shuffle();
|
||||
|
||||
@@ -122,6 +122,18 @@ impl QueueManager {
|
||||
self.context = context;
|
||||
}
|
||||
|
||||
/// Clear the queue entirely, returning it to the empty state.
|
||||
///
|
||||
/// Used when playback genuinely stops (sleep timer fires, or the queue ends
|
||||
/// with repeat off) so the frontend's `currentQueueItem` becomes null and
|
||||
/// the mini player hides. History and shuffle order are reset too.
|
||||
pub fn clear(&mut self) {
|
||||
self.items.clear();
|
||||
self.current_index = None;
|
||||
self.history.clear();
|
||||
self.shuffle_order.clear();
|
||||
}
|
||||
|
||||
/// Add items to the queue
|
||||
pub fn add(&mut self, items: Vec<MediaItem>, position: AddPosition) {
|
||||
if items.is_empty() {
|
||||
@@ -559,6 +571,21 @@ mod tests {
|
||||
assert_eq!(queue.current().unwrap().id, "item_0");
|
||||
}
|
||||
|
||||
/// Test clearing the queue returns it to the empty state so the frontend
|
||||
/// hides the mini player on a genuine stop.
|
||||
#[test]
|
||||
fn test_clear() {
|
||||
let mut queue = QueueManager::new();
|
||||
queue.set_queue(create_test_items(3), 1);
|
||||
assert_eq!(queue.current_index(), Some(1));
|
||||
|
||||
queue.clear();
|
||||
|
||||
assert_eq!(queue.items().len(), 0);
|
||||
assert_eq!(queue.current_index(), None);
|
||||
assert!(queue.current().is_none());
|
||||
}
|
||||
|
||||
/// Test next track navigation
|
||||
///
|
||||
/// @req-test: UR-005 - Control media playback (skip to next track)
|
||||
|
||||
Reference in New Issue
Block a user