diff --git a/Mac/Components/Browser/Album Detail/AlbumDetailSongTitleView.swift b/Mac/Components/Browser/Album Detail/AlbumDetailSongTitleView.swift index 7ae3348..5a17e41 100644 --- a/Mac/Components/Browser/Album Detail/AlbumDetailSongTitleView.swift +++ b/Mac/Components/Browser/Album Detail/AlbumDetailSongTitleView.swift @@ -13,14 +13,17 @@ class AlbumDetailSongTitleView: NSTableCellView { @IBOutlet var songArtist: NSTextField! var collapseArtist: NSLayoutConstraint! - func setSong(_ song: Song) { + func setShowArtist(_ show: Bool) { if collapseArtist == nil { collapseArtist = songArtist?.heightAnchor.constraint(equalToConstant: 0.0) } + collapseArtist.isActive = !show + } + + func setSong(_ song: Song) { songTitle?.stringValue = song.title songArtist?.stringValue = song.artist - collapseArtist.isActive = song.artist == song.albumArtist } } diff --git a/Mac/Components/Browser/Album Detail/AlbumDetailView+NSTableViewDelegate.swift b/Mac/Components/Browser/Album Detail/AlbumDetailView+NSTableViewDelegate.swift index 0a526c9..eb0170e 100644 --- a/Mac/Components/Browser/Album Detail/AlbumDetailView+NSTableViewDelegate.swift +++ b/Mac/Components/Browser/Album Detail/AlbumDetailView+NSTableViewDelegate.swift @@ -82,7 +82,8 @@ extension AlbumDetailView: NSTableViewDelegate { withIdentifier: .songTitle, owner: self ) as! AlbumDetailSongTitleView - + + cellView.setShowArtist(dataSource.showSongArtist) cellView.setSong(song) return cellView diff --git a/Mac/Components/Browser/Album Detail/AlbumTracksDataSource.swift b/Mac/Components/Browser/Album Detail/AlbumTracksDataSource.swift index a34e005..59b74d0 100644 --- a/Mac/Components/Browser/Album Detail/AlbumTracksDataSource.swift +++ b/Mac/Components/Browser/Album Detail/AlbumTracksDataSource.swift @@ -25,15 +25,24 @@ class AlbumTracksDataSource: NSObject, NSTableViewDataSource { } var albumSongs: [AlbumSongItem] = [] + var showSongArtist: Bool = false func setAlbumSongs(_ songs: [Song]) { var disc: String? = "" + var albumArtist: String? + showSongArtist = false songs.forEach { song in if song.disc != disc && song.disc != "0" { disc = song.disc albumSongs.append(AlbumSongItem(disc: song.disc)) } + if albumArtist == nil { + albumArtist = song.albumArtist + } + if song.artist != albumArtist { + showSongArtist = true + } albumSongs.append(AlbumSongItem(song: song)) }