@@ -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