From a52a53d0ada5b73cd1b3673eac8c9729b238ed7a Mon Sep 17 00:00:00 2001 From: hensm Date: Mon, 6 May 2019 04:17:40 +0100 Subject: [PATCH] Disable cast buttons and add casting spinner to native macOS receiver --- .../ReceiverView.swift | 21 ++++++++++++++++--- .../ViewController.swift | 7 +++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/app/NativeMacReceiverSelector/ReceiverView.swift b/app/NativeMacReceiverSelector/ReceiverView.swift index ea84fa1..420e365 100644 --- a/app/NativeMacReceiverSelector/ReceiverView.swift +++ b/app/NativeMacReceiverSelector/ReceiverView.swift @@ -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) } } diff --git a/app/NativeMacReceiverSelector/ViewController.swift b/app/NativeMacReceiverSelector/ViewController.swift index 79bbab7..d9d79a5 100644 --- a/app/NativeMacReceiverSelector/ViewController.swift +++ b/app/NativeMacReceiverSelector/ViewController.swift @@ -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)!