1
1
mirror of https://github.com/danbee/persephone synced 2025-03-04 08:39:11 +00:00
persephone/Persephone/Components/Shared/DraggedSongView.swift
2020-02-02 14:48:38 -05: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 var songCoverImage: NSImage?
init(title: String, artist: String) {
songTitle = title
songArtist = artist
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: titleLabel.stringValue,
artist: artistLabel.stringValue
)
KingfisherManager.shared.cache.retrieveImage(
forKey: Album(mpdAlbum: mpdAlbum).hash,
options: [
.processor(DownsamplingImageProcessor(size: .queueSongCoverSize)),
.scaleFactor(2),
],
callbackQueue: .untouch
) { result in
switch result {
case .success(let cacheResult):
self.coverImage.image = cacheResult.image
case .failure(_):
return
}
}
}
}