dj-embe/entity/queue.py

63 lines
1.6 KiB
Python

from .entry import Entry
class Queue:
def __init__(self) -> None:
self.entries: list[Entry] = []
self.playing = False
self.cursor = 0
self.seek = 0
def add(self, entries: list[Entry]) -> None:
for entry in entries:
self.entries.append(entry)
def remove(self, index: int, recursive: bool) -> None:
if not 0 <= index < len(self.entries):
return
# if recursive and self[index].playlist is not None:
# firstEntry = ""
# else:
self.entries.pop()
def move(self, frm: int, to: int) -> None:
if (
not 0 <= frm < len(self.entries)
or not 0 <= to < len(self.entries)
or frm == to
):
return None
self.entries.insert(to, self.entries.pop(frm))
def moveCursor(self, position: int) -> None:
if not 0 <= position <= len(self.entries):
return None
self.cursor = position
def incrementCursor(self) -> None:
self.moveCursor(self.cursor + 1)
def nowPlaying(self) -> Entry | None:
if not 0 <= self.cursor < len(self.entries):
return None
return self.entries[self.cursor]
def startPlaying(self) -> None:
self.playing = True
def stopPlaying(self) -> None:
self.playing = False
def __getitem__(self, index: int) -> Entry | None:
if not 0 <= index < len(self.entries):
return None
return self.entries[index]
def __len__(self) -> int:
return len(self.entries)