explorertable.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem
  2. from core.repositories import TrackRepository
  3. class ExplorerTable(QTreeWidget):
  4. def __init__(self, parent):
  5. super(QTreeWidget, self).__init__(parent)
  6. def populate(self):
  7. track_repo = TrackRepository()
  8. artist_folders = {}
  9. album_folders = {}
  10. tracks = track_repo.get_all()
  11. for track in tracks:
  12. if track.artist and track.artist not in artist_folders:
  13. item = QTreeWidgetItem(self, [track.artist])
  14. artist_folders[track.artist] = item
  15. if track.artist and track.album and (track.artist, track.album) not in album_folders:
  16. item = QTreeWidgetItem(artist_folders[track.artist], [track.album])
  17. album_folders[(track.artist, track.album)] = item
  18. if track.artist and track.album:
  19. parent = album_folders[(track.artist, track.album)]
  20. elif track.artist:
  21. parent = artist_folders[track.artist]
  22. else:
  23. parent = self
  24. item = QTreeWidgetItem(parent, [track.title])