Skip to main content

QueueManager

Struct QueueManager 

Source
pub struct QueueManager {
    items: Vec<MediaItem>,
    current_index: Option<usize>,
    shuffle: bool,
    repeat: RepeatMode,
    shuffle_order: Vec<usize>,
    history: Vec<usize>,
    context: QueueContext,
}
Expand description

Queue manager for playlist functionality

TRACES: UR-005, UR-015 | DR-005, DR-020

Fields§

§items: Vec<MediaItem>

All items in the queue

§current_index: Option<usize>

Current item index

§shuffle: bool

Whether shuffle is enabled

§repeat: RepeatMode

Current repeat mode

§shuffle_order: Vec<usize>

Shuffled order of indices (used when shuffle is on)

§history: Vec<usize>

History of played indices (for going back with shuffle)

§context: QueueContext

Context for the queue (album, playlist, or custom) Used for remote playback transfer to maintain album/playlist context

Implementations§

Source§

impl QueueManager

Source

pub fn new() -> Self

Source

pub fn items(&self) -> &[MediaItem]

Get all items in the queue

Source

pub fn items_mut(&mut self) -> &mut [MediaItem]

Mutable access to queue items.

Used to re-point streaming entries at a completed local download without disturbing queue order, shuffle state, or the current index.

Source

pub fn current_index(&self) -> Option<usize>

Get the current item index

Source

pub fn current(&self) -> Option<&MediaItem>

Get the current item

Source

pub fn is_shuffle(&self) -> bool

Check if shuffle is enabled

Source

pub fn repeat_mode(&self) -> RepeatMode

Get the current repeat mode

Source

pub fn context(&self) -> &QueueContext

Get the current queue context (album, playlist, or custom)

Source

pub fn set_context(&mut self, context: QueueContext)

Set the queue context

Source

pub fn set_queue(&mut self, items: Vec<MediaItem>, start_index: usize)

Set the queue with new items (resets context to Custom)

Source

pub fn set_queue_with_context( &mut self, items: Vec<MediaItem>, start_index: usize, context: QueueContext, )

Set the queue with new items and explicit context

Source

pub fn clear(&mut self)

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.

Source

pub fn add(&mut self, items: Vec<MediaItem>, position: AddPosition)

Add items to the queue

Source

pub fn remove(&mut self, index: usize) -> Option<MediaItem>

Remove an item from the queue

Source

pub fn next(&mut self) -> Option<&MediaItem>

Move to the next item

Source

pub fn previous(&mut self) -> Option<&MediaItem>

Move to the previous item

Source

pub fn skip_to(&mut self, index: usize) -> Option<&MediaItem>

Skip to a specific index

Source

pub fn toggle_shuffle(&mut self)

Toggle shuffle mode

Source

pub fn cycle_repeat(&mut self)

Cycle through repeat modes

Source

pub fn has_next(&self) -> bool

Check if there’s a next item available

Source

pub fn has_previous(&self) -> bool

Check if there’s a previous item available

Source

pub fn get_upcoming(&self, count: usize) -> Vec<&MediaItem>

Get the next N upcoming items (for preloading) Returns items that will play after the current item, respecting shuffle order

Source

pub fn move_item(&mut self, from_index: usize, to_index: usize) -> bool

Move an item from one index to another

Source

pub fn update_current_stream_url(&mut self, new_url: String) -> bool

Update the stream URL of the current item (for transcoded seeking) Returns true if the update was successful

Source

fn generate_shuffle_order( &self, length: usize, start_index: Option<usize>, ) -> Vec<usize>

Generate a shuffle order, optionally starting from a specific index

Trait Implementations§

Source§

impl Clone for QueueManager

Source§

fn clone(&self) -> QueueManager

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for QueueManager

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for QueueManager

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for QueueManager

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl NamedType for QueueManager

Source§

fn sid() -> SpectaID

Source§

fn named_data_type( type_map: &mut TypeCollection, generics: &[DataType], ) -> NamedDataType

this is equivalent to [Type::inline] but returns a [NamedDataType] instead.
Source§

fn definition_named_data_type(type_map: &mut TypeCollection) -> NamedDataType

this is equivalent to [Type::definition] but returns a [NamedDataType] instead.
Source§

impl Serialize for QueueManager

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Type for QueueManager

Source§

fn inline(type_map: &mut TypeCollection, generics: Generics<'_>) -> DataType

Returns the definition of a type using the provided generics. Read more
Source§

fn reference(type_map: &mut TypeCollection, generics: &[DataType]) -> Reference

Generates a datatype corresponding to a reference to this type, as determined by its category. Getting a reference to a type implies that it should belong in the type map (since it has to be referenced from somewhere), so the output of definition will be put into the type map.
Source§

impl Flatten for QueueManager

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<'de, D, R> CommandArg<'de, R> for D
where D: Deserialize<'de>, R: Runtime,

§

fn from_command(command: CommandItem<'de, R>) -> Result<D, InvokeError>

Derives an instance of Self from the [CommandItem]. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FunctionArg for T
where T: Type,

§

fn to_datatype(type_map: &mut TypeCollection) -> Option<DataType>

Gets the type of an argument as a [DataType]. Read more
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> IpcResponse for T
where T: Serialize,

§

fn body(self) -> Result<InvokeResponseBody, Error>

Resolve the IPC response body.
§

impl<T> NoneValue for T
where T: Default,

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent value.
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> ScopeObject for T
where T: Send + Sync + Debug + DeserializeOwned + 'static,

§

type Error = Error

The error type.
§

fn deserialize<R>( _app: &AppHandle<R>, raw: Value, ) -> Result<T, <T as ScopeObject>::Error>
where R: Runtime,

Deserialize the raw scope value.
Source§

impl<T> Serialize for T
where T: Serialize + ?Sized,

Source§

fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>

Source§

fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

§

impl<T> UserEvent for T
where T: Debug + Clone + Send + 'static,