mirror of
https://github.com/danbee/persephone
synced 2025-03-04 08:39:11 +00:00
82 lines
2.0 KiB
Swift
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),
|
|
]
|
|
)
|
|
}
|
|
}
|