1
1
mirror of https://github.com/danbee/persephone synced 2025-03-04 08:39:11 +00:00
persephone/Mac/Components/Shared/DraggedSongView.swift
2020-07-24 21:26:24 -04:00

82 lines
2.0 KiB
Swift

//
// DraggedSong.swift
// Persephone
//
// Created by Daniel Barber on 2019/6/18.
// Copyright © 2019 Dan Barber. All rights reserved.
//
import Cocoa
import Kingfisher
class DraggedSongView: NSViewController {
@IBOutlet var titleLabel: NSTextField!
@IBOutlet var artistLabel: NSTextField!
@IBOutlet var coverImage: NSImageView!
private let songTitle: String
private let songArtist: String
private let songAlbumArtist: String
private let songAlbum: String
private let songUri: String
init(title: String, artist: String, albumArtist: String, album: String, uri: String) {
songTitle = title
songArtist = artist
songAlbumArtist = albumArtist
songAlbum = album
songUri = uri
super.init(nibName: nil, bundle: nil)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
coverImage.wantsLayer = true
coverImage.layer?.backgroundColor = CGColor.black
coverImage.layer?.cornerRadius = 2
coverImage.layer?.borderWidth = 1
coverImage.layer?.masksToBounds = true
setAppearance()
titleLabel.stringValue = songTitle
artistLabel.stringValue = songArtist
setCoverArt()
}
func setAppearance() {
if #available(OSX 10.14, *) {
let darkMode = NSApp.effectiveAppearance.bestMatch(from:
[.darkAqua, .aqua]) == .darkAqua
coverImage.layer?.borderColor = darkMode ? .albumBorderColorDark : .albumBorderColorLight
} else {
coverImage.layer?.borderColor = .albumBorderColorLight
}
}
func setCoverArt() {
let mpdAlbum = MPDClient.MPDAlbum(title: songAlbum, artist: songAlbumArtist)
let provider = MPDAlbumArtImageDataProvider(
songUri: songUri,
cacheKey: Album(mpdAlbum: mpdAlbum).hash
)
coverImage.kf.setImage(
with: .provider(provider),
placeholder: NSImage.defaultCoverArt,
options: [
.processor(DownsamplingImageProcessor(size: .queueSongCoverSize)),
.scaleFactor(2),
]
)
}
}