Disable cast buttons and add casting spinner to native macOS receiver

This commit is contained in:
hensm
2019-05-06 04:17:40 +01:00
parent 822978b2c2
commit a52a53d0ad
2 changed files with 25 additions and 3 deletions

View File

@@ -10,6 +10,8 @@ class ReceiverView: NSStackView {
var receiver: Receiver!
var constraintsSet = false
var button: NSButton!
var spinner: NSProgressIndicator!
override init (frame: CGRect) {
super.init(frame: frame)
@@ -35,16 +37,22 @@ class ReceiverView: NSStackView {
metaStackView.spacing = 4
let castButton = WideButton(
self.button = WideButton(
title: "Cast"
, target: self
, action: #selector(ReceiverView.onCast))
castButton.bezelStyle = .rounded
self.button.bezelStyle = .rounded
self.spinner = NSProgressIndicator()
self.spinner.style = .spinning
self.spinner.controlSize = .small
self.spinner.isHidden = true
self.addArrangedSubview(metaStackView)
self.addArrangedSubview(castButton)
self.addArrangedSubview(self.spinner)
self.addArrangedSubview(self.button)
self.distribution = .fill
}
@@ -60,9 +68,16 @@ class ReceiverView: NSStackView {
}
}
func disable () {
self.button.isEnabled = false
}
@objc
func onCast () {
self.receiverViewDelegate?.didCast(self.receiver)
self.spinner.isHidden = false
self.spinner.startAnimation(nil)
}
}

View File

@@ -53,6 +53,7 @@ struct Receiver: Codable {
class ViewController: NSViewController {
var mediaTypePopUpButton: NSPopUpButton!
var receiverViews = [ReceiverView]()
override func loadView () {
let visualEffectView = NSVisualEffectView()
@@ -119,6 +120,8 @@ class ViewController: NSViewController {
let receiverView = ReceiverView(receiver: receiver)
receiverView.receiverViewDelegate = self
self.receiverViews.append(receiverView)
stackView.addArrangedSubview(receiverSeparator)
stackView.addArrangedSubview(receiverView)
}
@@ -133,6 +136,10 @@ class ViewController: NSViewController {
extension ViewController: ReceiverViewDelegate {
func didCast (_ receiver: Receiver) {
for receiverView in self.receiverViews {
receiverView.disable()
}
do {
let mediaType = MediaType(
rawValue: self.mediaTypePopUpButton.indexOfSelectedItem)!