Browse Source

basic explorerTree populate

Olivier Massot 4 years ago
parent
commit
8e5c1e5617
1 changed files with 23 additions and 23 deletions
  1. 23 23
      ui/window.py

+ 23 - 23
ui/window.py

@@ -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()