|
|
@@ -71,29 +71,29 @@ class MainWindow(QMainWindow):
|
|
|
def refresh_explorer_tree(self):
|
|
|
track_repo = TrackRepository()
|
|
|
|
|
|
- tree = {}
|
|
|
- for track in track_repo.get_all():
|
|
|
- artist = track.artist or 0
|
|
|
- album = track.album or 0
|
|
|
-
|
|
|
- if artist not in tree:
|
|
|
- tree[artist] = {}
|
|
|
- if album not in tree[artist]:
|
|
|
- tree[artist][album] = []
|
|
|
-
|
|
|
- tree[artist][album].append(track)
|
|
|
-
|
|
|
- for artist, albums in tree.items():
|
|
|
- for album, tracks in albums.items():
|
|
|
- for track in tracks:
|
|
|
-
|
|
|
- if artist:
|
|
|
- if album:
|
|
|
- item = QTreeWidgetItem(self.ui.explorerTree, track.title)
|
|
|
- else:
|
|
|
- item = QTreeWidgetItem(self.ui.explorerTree, track.title)
|
|
|
- else:
|
|
|
- item = QTreeWidgetItem(self.ui.explorerTree, track.title)
|
|
|
+ artist_folders = {}
|
|
|
+ album_folders = {}
|
|
|
+ tracks = track_repo.get_all()
|
|
|
+
|
|
|
+ for track in tracks:
|
|
|
+ if track.artist and track.artist not in artist_folders:
|
|
|
+ item = QTreeWidgetItem(self.ui.explorerTree, [track.artist])
|
|
|
+ artist_folders[track.artist] = item
|
|
|
+
|
|
|
+ for track in tracks:
|
|
|
+ if track.artist and track.album and (track.artist, track.album) not in album_folders:
|
|
|
+ item = QTreeWidgetItem(artist_folders[track.artist], [track.album])
|
|
|
+ album_folders[(track.artist, track.album)] = item
|
|
|
+
|
|
|
+ for track in tracks:
|
|
|
+ if track.artist and track.album:
|
|
|
+ parent = album_folders[(track.artist, track.album)]
|
|
|
+ elif track.artist:
|
|
|
+ parent = artist_folders[track.artist]
|
|
|
+ else:
|
|
|
+ parent = self.ui.explorerTree
|
|
|
+
|
|
|
+ item = QTreeWidgetItem(parent, [track.title])
|
|
|
|
|
|
def populate_music_folders_table(self):
|
|
|
music_folders = MusicFolderRepository().get_all()
|