1
1
mirror of https://github.com/danbee/persephone synced 2025-03-04 08:39:11 +00:00
persephone/Persephone/Components/Shared/DraggedSongView.swift
Daniel Barber a8987029f5
Redesign queue view
* Add cover art for each track
* Stack song title and artist
* Add song duration
* Redesign the dragged image view to match
2020-01-22 22:23:59 -05:00

76 lines
1.9 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 songCover: String?
init(title: String, artist: String, cover: String? = nil) {
songTitle = title
songArtist = artist
songCover = cover
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() {
guard let imagePath = songCover else { return }
let imageURL = URL(fileURLWithPath: imagePath)
let provider = LocalFileImageDataProvider(fileURL: imageURL)
coverImage.kf.setImage(
with: .provider(provider),
placeholder: NSImage.defaultCoverArt,
options: [
.processor(DownsamplingImageProcessor(size: .queueSongCoverSize)),
.scaleFactor(2),
]
)
}
}