2023-04-27 23:19:18 +00:00
|
|
|
from .entry import Entry
|
2023-04-23 22:48:31 +00:00
|
|
|
|
|
|
|
|
|
|
|
class Queue:
|
|
|
|
def __init__(self) -> None:
|
2023-05-16 23:04:16 +00:00
|
|
|
self.entries: list[Entry] = []
|
|
|
|
self.playing = False
|
2023-04-23 22:48:31 +00:00
|
|
|
self.cursor = 0
|
2023-05-16 23:04:16 +00:00
|
|
|
self.seek = 0
|
2023-04-23 22:48:31 +00:00
|
|
|
|
2023-05-06 01:16:26 +00:00
|
|
|
def add(self, entries: list[Entry]) -> None:
|
|
|
|
for entry in entries:
|
2023-05-16 23:04:16 +00:00
|
|
|
self.entries.append(entry)
|
2023-04-27 23:19:18 +00:00
|
|
|
|
|
|
|
def remove(self, index: int, recursive: bool) -> None:
|
2023-05-16 23:04:16 +00:00
|
|
|
if not 0 <= index < len(self.entries):
|
2023-04-27 23:19:18 +00:00
|
|
|
return
|
|
|
|
|
|
|
|
# if recursive and self[index].playlist is not None:
|
2023-05-16 23:04:16 +00:00
|
|
|
# firstEntry = ""
|
2023-04-27 23:19:18 +00:00
|
|
|
# else:
|
2023-05-16 23:04:16 +00:00
|
|
|
self.entries.pop()
|
2023-04-23 22:48:31 +00:00
|
|
|
|
|
|
|
def move(self, frm: int, to: int) -> None:
|
2023-04-27 23:19:18 +00:00
|
|
|
if (
|
2023-05-16 23:04:16 +00:00
|
|
|
not 0 <= frm < len(self.entries)
|
|
|
|
or not 0 <= to < len(self.entries)
|
2023-04-27 23:19:18 +00:00
|
|
|
or frm == to
|
|
|
|
):
|
2023-05-16 23:04:16 +00:00
|
|
|
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)
|
2023-04-27 23:19:18 +00:00
|
|
|
|
2023-05-16 23:04:16 +00:00
|
|
|
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
|
2023-04-23 22:48:31 +00:00
|
|
|
|
|
|
|
def __getitem__(self, index: int) -> Entry | None:
|
2023-05-16 23:04:16 +00:00
|
|
|
if not 0 <= index < len(self.entries):
|
|
|
|
return None
|
2023-04-27 23:19:18 +00:00
|
|
|
|
2023-05-16 23:04:16 +00:00
|
|
|
return self.entries[index]
|
2023-04-27 23:19:18 +00:00
|
|
|
|
|
|
|
def __len__(self) -> int:
|
2023-05-16 23:04:16 +00:00
|
|
|
return len(self.entries)
|