playlist_screen.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. self.playlists_loaded()
  16. def should_update(self):
  17. if self.list_view.should_update():
  18. return BaseScreen.update_partial
  19. else:
  20. return BaseScreen.no_update
  21. def set_update_rects(self, rects):
  22. self.list_view.set_update_rects(rects)
  23. def update(self, screen, update_type):
  24. update_all = (update_type == BaseScreen.update_all)
  25. self.list.render(screen, update_all)
  26. def playlists_loaded(self):
  27. self.selected_playlist = None
  28. self.playlists_strings = []
  29. self.playlists = []
  30. for playlist in self.manager.core.playlists.playlists.get():
  31. self.playlists.append(playlist)
  32. self.playlists_strings.append(playlist.name)
  33. self.list_view.set_list(self.playlists_strings)
  34. def playlist_selected(self, playlist):
  35. self.selected_playlist = playlist
  36. self.playlist_tracks = playlist.tracks
  37. self.playlist_tracks_strings = ["../"]
  38. for track in self.playlist_tracks:
  39. self.playlist_tracks_strings.append(track.name)
  40. self.list_view.set_list(self.playlist_tracks_strings)
  41. def touch_event(self, touch_event):
  42. clicked = self.list_view.touch_event(touch_event)
  43. if clicked is not None:
  44. if self.selected_playlist is None:
  45. self.playlist_selected(self.playlists[clicked])
  46. else:
  47. if clicked == 0:
  48. self.selected_playlist = None
  49. self.list_view.set_list(self.playlists_strings)
  50. else:
  51. self.manager.core.tracklist.clear()
  52. self.manager.core.tracklist.add(
  53. self.playlist_tracks)
  54. self.manager.core.playback.play(
  55. tl_track=self.manager.core.
  56. tracklist.tl_tracks.get()
  57. [clicked-1])