Skip to content

Commit f8e5ffd

Browse files
author
MelleDijkstra
committed
Songs can be added to the queue, but currently only works on Windows
1 parent df43dde commit f8e5ffd

9 files changed

Lines changed: 202 additions & 104 deletions

File tree

mpserver/datastructures.py

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,35 +42,49 @@ class MusicQueue:
4242
_pointer Points to the current index of the queue
4343
4444
"""
45-
def __init__(self, songs=None): # limit=None, songs=None):
46-
# if isinstance(limit, int):
47-
# self._limit = limit
45+
def __init__(self, songs=None, limit=30):
46+
if isinstance(limit, int):
47+
self._limit = limit
4848
self._pointer = 0
4949
if isinstance(songs, list) and len(songs) > 0:
5050
self._queue = songs # type: List[Song]
5151
else:
5252
self._queue = []
5353

5454
def add(self, song):
55-
# if self.size() < self._limit:
56-
self._queue.append(song)
55+
self._queue.append(song)
56+
if self.size() > self._limit:
57+
# if the queue is to big then remove the first played item
58+
del self._queue[0]
5759

5860
def add_next(self, song):
59-
# TODO: use limit
6061
self._queue.insert(self._pointer + 1, song)
62+
# if the list is to big then remove the first item in the list, which was played first
63+
if self.size() > self._limit:
64+
del self._queue[0]
6165

6266
def next(self) -> Union[Song, None]:
6367
if self._pointer + 1 < len(self._queue):
6468
self._pointer += 1
6569
return self.current()
6670
return None
6771

72+
def has_next(self) -> bool:
73+
if self._pointer + 1 < len(self._queue):
74+
return True
75+
return False
76+
6877
def previous(self) -> Union[Song, None]:
6978
if self._pointer - 1 >= 0:
7079
self._pointer -= 1
7180
return self.current()
7281
return None
7382

83+
def has_previous(self) -> bool:
84+
if self._pointer - 1 >= 0:
85+
return True
86+
return False
87+
7488
def current(self) -> Union[Song, None]:
7589
if len(self._queue) > 0:
7690
return self._queue[self._pointer]
@@ -93,6 +107,12 @@ def __repr__(self):
93107
return str(self._queue)
94108

95109
def latest(self, song):
96-
self._queue.append(song)
110+
self.add(song)
97111
self._pointer = len(self._queue)-1
98112

113+
def replace_all(self, songlist: List[Song], pointer: int):
114+
self._queue = songlist
115+
if pointer > 0 and pointer < len(songlist):
116+
self._pointer = pointer
117+
else:
118+
self._pointer = 0

0 commit comments

Comments
 (0)