| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem
- from core.logging_ import Logger
- from core.repositories import TrackRepository
- logger = Logger.get()
- class ExplorerTable(QTreeWidget):
- def __init__(self, parent):
- super(QTreeWidget, self).__init__(parent)
- def populate(self):
- track_repo = TrackRepository()
- self.clear()
- artist_folders = {}
- album_folders = {}
- orphans = []
- tracks = track_repo.get_all()
- logger.info(".. start populating explorer table - 1")
- for track in tracks:
- # list artists
- if track.artist and track.artist not in artist_folders:
- item = QTreeWidgetItem([track.artist])
- artist_folders[track.artist] = item
- for track in tracks:
- # list albums with artists
- if track.artist and track.album and (track.artist, track.album) not in album_folders:
- item = QTreeWidgetItem([track.album])
- album_folders[(track.artist, track.album)] = item
- for track in tracks:
- # list tracks
- if track.artist and track.album:
- parent = album_folders[(track.artist, track.album)]
- elif track.artist:
- parent = artist_folders[track.artist]
- else:
- orphans.append(QTreeWidgetItem([track.title]))
- self.setUpdatesEnabled(False)
- self.insertTopLevelItems(0, orphans)
- self.insertTopLevelItems(0, artist_folders.values())
- self.setUpdatesEnabled(True)
- logger.info(".. explorer table populated")
|