Fix album cover art not being updated on unmatched files changes and ...

Also makes CoverArtBox react inmediately to new files being dropped
in a selected album, so the CoverArtBox is updated instantly.
This commit is contained in:
Antonio Larrosa
2017-03-14 12:01:05 +01:00
parent b3ceb9f4aa
commit 12f9a35ae9

View File

@@ -75,6 +75,9 @@ class Cluster(QtCore.QObject, Item):
self.files.extend(files)
self.metadata['totaltracks'] = len(self.files)
self.item.add_files(files)
if self.related_album:
self.related_album.update_metadata_images()
self.related_album.update()
def add_file(self, file):
self.metadata.length += file.metadata.length
@@ -86,6 +89,9 @@ class Cluster(QtCore.QObject, Item):
if cover and cover[0] not in self.metadata.images:
self.metadata.append_image(cover[0])
self.item.add_file(file)
if self.related_album:
self.related_album.update_metadata_images()
self.related_album.update()
def remove_file(self, file):
self.metadata.length -= file.metadata.length
@@ -94,6 +100,10 @@ class Cluster(QtCore.QObject, Item):
self.item.remove_file(file)
if not self.special and self.get_num_files() == 0:
self.tagger.remove_cluster(self)
self.update_metadata_images()
if self.related_album:
self.related_album.update_metadata_images()
self.related_album.update()
def update(self):
if self.item:
@@ -269,6 +279,30 @@ class Cluster(QtCore.QObject, Item):
yield album_name, artist_name, (files[i] for i in album)
def update_metadata_images(self):
class State:
new_images = []
has_common_new_images = True
first_new_obj = True
state = State()
def process_images(state, obj):
# Check new images
if state.first_new_obj:
state.new_images = obj.metadata.images[:]
state.first_new_obj = False
else:
if state.new_images != obj.metadata.images:
state.has_common_new_images = False
state.new_images.extend([image for image in obj.metadata.images if image not in state.new_images])
for file in self.files:
process_images(state, file)
self.metadata.images = state.new_images
self.metadata.has_common_images = state.has_common_new_images
class UnmatchedFiles(Cluster):