mirror of
https://github.com/tappollo/WWDC.git
synced 2026-06-10 23:29:39 +08:00
120 lines
3.3 KiB
Swift
120 lines
3.3 KiB
Swift
//
|
|
// PUIExternalPlaybackStatusViewController.swift
|
|
// PlayerUI
|
|
//
|
|
// Created by Guilherme Rambo on 13/05/17.
|
|
// Copyright © 2017 Guilherme Rambo. All rights reserved.
|
|
//
|
|
|
|
import Cocoa
|
|
|
|
class PUIExternalPlaybackStatusViewController: NSViewController {
|
|
|
|
var snapshot: NSImage? {
|
|
didSet {
|
|
snapshotLayer.contents = snapshot
|
|
}
|
|
}
|
|
var providerIcon: NSImage? {
|
|
didSet {
|
|
self.iconImageView.image = providerIcon
|
|
}
|
|
}
|
|
var providerName: String = "" {
|
|
didSet {
|
|
self.titleLabel.stringValue = providerName
|
|
}
|
|
}
|
|
var providerDescription: String = "" {
|
|
didSet {
|
|
self.descriptionLabel.stringValue = providerDescription
|
|
}
|
|
}
|
|
|
|
init() {
|
|
super.init(nibName: nil, bundle: nil)!
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
private lazy var iconImageView: NSImageView = {
|
|
let v = NSImageView()
|
|
|
|
v.widthAnchor.constraint(equalToConstant: 74).isActive = true
|
|
v.heightAnchor.constraint(equalToConstant: 74).isActive = true
|
|
|
|
return v
|
|
}()
|
|
|
|
private lazy var titleLabel: NSTextField = {
|
|
let f = NSTextField(labelWithString: "")
|
|
|
|
f.font = NSFont.systemFont(ofSize: 20, weight: NSFontWeightMedium)
|
|
f.textColor = .externalPlaybackText
|
|
f.alignment = .center
|
|
|
|
return f
|
|
}()
|
|
|
|
private lazy var descriptionLabel: NSTextField = {
|
|
let f = NSTextField(labelWithString: "")
|
|
|
|
f.font = NSFont.systemFont(ofSize: 16)
|
|
f.textColor = .timeLabel
|
|
f.alignment = .center
|
|
|
|
return f
|
|
}()
|
|
|
|
private lazy var stackView: NSStackView = {
|
|
let v = NSStackView(views: [self.iconImageView, self.titleLabel, self.descriptionLabel])
|
|
|
|
v.translatesAutoresizingMaskIntoConstraints = false
|
|
v.orientation = .vertical
|
|
v.spacing = 6
|
|
|
|
return v
|
|
}()
|
|
|
|
private lazy var snapshotLayer: PUIBoringLayer = {
|
|
let l = PUIBoringLayer()
|
|
|
|
l.autoresizingMask = [.layerWidthSizable, .layerHeightSizable]
|
|
l.backgroundColor = NSColor.black.cgColor
|
|
|
|
return l
|
|
}()
|
|
|
|
override func loadView() {
|
|
view = NSView()
|
|
view.wantsLayer = true
|
|
view.layer = PUIBoringLayer()
|
|
view.layer?.masksToBounds = true
|
|
view.layer?.backgroundColor = NSColor.black.cgColor
|
|
|
|
view.layerUsesCoreImageFilters = true
|
|
|
|
snapshotLayer.frame = view.bounds
|
|
view.layer?.addSublayer(snapshotLayer)
|
|
|
|
if let blur = CIFilter(name: "CIGaussianBlur"), let sat = CIFilter(name: "CIColorControls") {
|
|
sat.setDefaults()
|
|
sat.setValue(2, forKey: "inputSaturation")
|
|
blur.setValue(100, forKey: "inputRadius")
|
|
snapshotLayer.filters = [sat, blur]
|
|
}
|
|
|
|
view.addSubview(stackView)
|
|
stackView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
|
|
stackView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
|
|
}
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
// Do view setup here.
|
|
}
|
|
|
|
}
|