playlist_screen.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. from .list_view import ListView
  2. from .base_screen import BaseScreen
  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.playlists_loaded()
  13. self.selected_playlist = None
  14. self.playlist_tracks = []
  15. self.playlist_tracks_strings = []
  16. def update(self, screen, update_all):
  17. self.list_view.render(screen)
  18. def playlists_loaded(self):
  19. self.selected_playlist = None
  20. self.playlists_strings = []
  21. self.playlists = []
  22. for playlist in self.manager.core.playlists.playlists.get():
  23. self.playlists.append(playlist)
  24. self.playlists_strings.append(playlist.name)
  25. self.list_view.set_list(self.playlists_strings)
  26. def playlist_selected(self, playlist):
  27. self.selected_playlist = playlist
  28. self.playlist_tracks = playlist.tracks
  29. self.playlist_tracks_strings = ["../"]
  30. for track in self.playlist_tracks:
  31. self.playlist_tracks_strings.append(track.name)
  32. self.list_view.set_list(self.playlist_tracks_strings)
  33. def touch_event(self, touch_event):
  34. clicked = self.list_view.touch_event(touch_event)
  35. if clicked is not None:
  36. if self.selected_playlist is None:
  37. self.playlist_selected(self.playlists[clicked])
  38. else:
  39. if clicked==0:
  40. self.selected_playlist = None
  41. self.list_view.set_list(self.playlists_strings)
  42. else:
  43. self.manager.core.tracklist.clear()
  44. self.manager.core.tracklist.add(
  45. self.playlist_tracks)
  46. self.manager.core.playback.play(
  47. tl_track=
  48. self.manager.core.tracklist.tl_tracks.get()
  49. [clicked-1])