Skip to content

Commit

Permalink
cocoaui: fix medialib artwork updating, and add generic folder icon
Browse files Browse the repository at this point in the history
  • Loading branch information
Oleksiy-Yakovenko committed Nov 12, 2023
1 parent b6c2bc3 commit af36143
Showing 1 changed file with 19 additions and 6 deletions.
25 changes: 19 additions & 6 deletions plugins/cocoaui/MediaLibrary/MediaLibraryOutlineViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ @interface MediaLibraryOutlineViewController() <NSOutlineViewDataSource,MediaLib

@property (nonatomic) NSString *currentPreset;

@property (nonatomic) NSImage *folderImage;

@end

@implementation MediaLibraryOutlineViewController
Expand Down Expand Up @@ -107,6 +109,8 @@ - (instancetype)initWithOutlineView:(NSOutlineView *)outlineView searchField:(NS

self.selectedItems = [NSMutableArray new];

self.folderImage = [NSWorkspace.sharedWorkspace iconForFileType:NSFileTypeForHFSTypeCode(kGenericFolderIcon)];

return self;
}

Expand Down Expand Up @@ -520,6 +524,7 @@ - (NSImage *)getImage:(ddb_cover_query_t *)query coverInfo:(ddb_cover_info_t *)c
- (void)updateCoverForItem:(MediaLibraryItem *)item track:(ddb_playItem_t *)track {
void (^completionBlock)(ddb_cover_query_t *query, ddb_cover_info_t *cover, int error) = ^(ddb_cover_query_t *query, ddb_cover_info_t *cover, int error) {
NSImage *image = [self getImage:query coverInfo:cover error:error];

dispatch_async(dispatch_get_main_queue(), ^{
if (image != nil) {
NSString *key = [self albumArtCacheKeyForTrack:query->track];
Expand All @@ -531,10 +536,17 @@ - (void)updateCoverForItem:(MediaLibraryItem *)item track:(ddb_playItem_t *)trac
if (row == -1) {
return;
}
item.coverImage = image;

if (image == nil && item.children.count != 0) {
item.coverImage = self.folderImage;
}
else {
item.coverImage = image;
}

NSTableRowView *rowView = [self.outlineView rowViewAtRow:row makeIfNecessary:NO];
NSTableCellView *cellView = [rowView viewAtColumn:0];
cellView.imageView.image = image;
cellView.imageView.image = item.coverImage;
});
};
ddb_cover_query_t *query = calloc (1, sizeof (ddb_cover_query_t));
Expand Down Expand Up @@ -567,6 +579,10 @@ - (nullable NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn
view.textField.stringValue = mlItem.stringValue;
view.imageView.image = nil;

if (mlItem.coverImage == nil && mlItem.children.count != 0) {
view.imageView.image = self.folderImage;
}

if (it) {
if (mlItem.coverImage) {
view.imageView.image = mlItem.coverImage;
Expand All @@ -582,10 +598,7 @@ - (nullable NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn
if (!mlItem.coverObtained) {
NSInteger row = [self.outlineView rowForItem:mlItem];
if (row >= 0) {
NSTableCellView *cellView = [[self.outlineView rowViewAtRow:row makeIfNecessary:NO] viewAtColumn:0];
if (cellView) {
[self updateCoverForItem:mlItem track:it];
}
[self updateCoverForItem:mlItem track:it];
}
mlItem.coverObtained = YES;
}
Expand Down

0 comments on commit af36143

Please sign in to comment.