Changeset 50
- Timestamp:
- 02/25/06 20:03:26 (3 years ago)
- Files:
-
- trunk/src/mesk/playlist.py (modified) (6 diffs)
- trunk/src/mesk/utils.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/mesk/playlist.py
r44 r50 110 110 def set_shuffle(self, state): 111 111 self._shuffle = state 112 self._history = [] 112 113 113 114 def reset(self, start_idx = None): … … 134 135 135 136 def has_next(self): 136 return self._repeat or (self._curr_idx + 1 < self.get_length()) 137 if self._repeat or self._queue: 138 return True 139 elif self._shuffle: 140 return len(self._history) < len(self._sources) 141 else: 142 return (self._curr_idx + 1) < self.get_length() 137 143 138 144 def has_prev(self): … … 160 166 return None 161 167 162 if self._shuffle: 163 # TODO 164 pass 168 if self._queue: 169 next = self._queue.pop(0) 170 self._curr_idx = next 171 next = self._sources[next] 172 elif self._shuffle: 173 all = set(range(self.get_length())) 174 played = set(self._history) 175 choices = list(all.difference(played)) 176 if not choices and self._repeat: 177 self.reset() 178 return self.get_next() 179 elif not choices: 180 next = None 181 else: 182 next = random.choice(choices) 183 self._history.append(next) 184 self._curr_idx = next 185 next = self._sources[next] 165 186 else: 166 187 next = self._curr_idx + 1 … … 174 195 next = None 175 196 197 if next is None: 198 self.reset() 176 199 return next 177 200 … … 185 208 prev = None 186 209 else: 187 prev_idx = \ 188 self._history.pop(len(self._history) - 1) 210 prev_idx = self._history.pop() 211 if prev_idx == self._curr_idx and self._history: 212 prev_idx = self._history.pop() 189 213 self._curr_idx = prev_idx 190 214 prev = self._sources[prev_idx] … … 200 224 prev = None 201 225 226 if prev is None: 227 self.reset() 202 228 return prev 203 229 trunk/src/mesk/utils.py
r48 r50 1 1 ################################################################################ 2 2 # Copyright (C) 2006 Travis Shirk <travis@pobox.com> 3 # #Copyright (C) 2005 Nikos Kouremenos <nkour@jabber.org>4 # #Copyright (C) 2005 Dimitur Kirov <dkirov@gmail.com>3 # Copyright (C) 2005 Nikos Kouremenos <nkour@jabber.org> 4 # Copyright (C) 2005 Dimitur Kirov <dkirov@gmail.com> 5 5 # 6 6 # This program is free software; you can redistribute it and/or modify
