playlist_screen.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. from base_screen import BaseScreen
  2. from ..graphic_utils import ListView
  3. class PlaylistScreen(BaseScreen):
  4. def __init__(self, size, base_size, manager, fonts):
  5. BaseScreen.__init__(self, size, base_size, manager, fonts)
  6. self.list_view = ListView((0, 0), (
  7. self.size[0], self.size[1] -
  8. self.base_size), self.base_size,
  9. self.fonts['base'])
  10. self.playlists_strings = []
  11. self.playlists = []
  12. self.selected_playlist = None
  13. self.playlist_tracks = []
  14. self.playlist_tracks_strings = []
  15. def update(self, screen):
  16. self.list_view.render(screen)
  17. def playlists_loaded(self):
  18. self.selected_playlist = None
  19. self.playlists_strings = []
  20. self.playlists = []
  21. for playlist in self.manager.core.playlists.playlists.get():
  22. self.playlists.append(playlist)
  23. self.playlists_strings.append(playlist.name)
  24. self.list_view.set_list(self.playlists_strings)
  25. def playlist_selected(self, playlist):
  26. self.selected_playlist = playlist
  27. self.playlist_tracks = playlist.tracks
  28. self.playlist_tracks_strings = ["../"]
  29. for track in self.playlist_tracks:
  30. self.playlist_tracks_strings.append(track.name)
  31. self.list_view.set_list(self.playlist_tracks_strings)
  32. def touch_event(self, touch_event):
  33. clicked = self.list_view.touch_event(touch_event)
  34. if clicked is not None:
  35. if self.selected_playlist is None:
  36. self.playlist_selected(self.playlists[clicked])
  37. else:
  38. if clicked == 0:
  39. self.selected_playlist = None
  40. self.list_view.set_list(self.playlists_strings)
  41. else:
  42. self.manager.core.tracklist.clear()
  43. self.manager.core.tracklist.add(
  44. self.playlist_tracks)
  45. self.manager.core.playback.play(
  46. tl_track=self.manager.core.
  47. tracklist.tl_tracks.get()
  48. [clicked-1])