mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-12 18:39:58 +00:00
Display message in selector instead of disabling browser action
This commit is contained in:
@@ -106,33 +106,48 @@ class ViewController : NSViewController {
|
|||||||
stackView.addArrangedSubview(mediaTypeStackView)
|
stackView.addArrangedSubview(mediaTypeStackView)
|
||||||
|
|
||||||
|
|
||||||
/**
|
if initData.receivers.count < 1 {
|
||||||
* For each receiver in the initData list, create a new
|
let separator = NSBox()
|
||||||
* ReceiverView, set self as a ReceiverViewDelegate and
|
separator.boxType = .separator
|
||||||
* appends to main stack view.
|
|
||||||
*
|
|
||||||
* Keeps a reference to the receiver view to call disable()
|
|
||||||
* later.
|
|
||||||
*/
|
|
||||||
for receiver in initData.receivers {
|
|
||||||
// Create separator between last receiver / media type
|
|
||||||
let receiverSeparator = NSBox()
|
|
||||||
receiverSeparator.boxType = .separator
|
|
||||||
|
|
||||||
let receiverView = ReceiverView(receiver: receiver)
|
let notFoundStackView = NSStackView(views: [
|
||||||
receiverView.receiverViewDelegate = self
|
makeLabel(initData.i18n_noReceiversFound)
|
||||||
|
])
|
||||||
|
|
||||||
if UInt(initData.availableMediaTypes) == 0
|
notFoundStackView.alignment = .centerX
|
||||||
|| (initData.availableMediaTypes
|
notFoundStackView.edgeInsets = NSEdgeInsetsMake(18, 0, 18, 0)
|
||||||
& initData.defaultMediaType.rawValue) == 0 {
|
|
||||||
receiverView.isEnabled = false
|
stackView.addArrangedSubview(separator)
|
||||||
|
stackView.addArrangedSubview(notFoundStackView)
|
||||||
|
} else {
|
||||||
|
/**
|
||||||
|
* For each receiver in the initData list, create a new
|
||||||
|
* ReceiverView, set self as a ReceiverViewDelegate and
|
||||||
|
* appends to main stack view.
|
||||||
|
*
|
||||||
|
* Keeps a reference to the receiver view to call disable()
|
||||||
|
* later.
|
||||||
|
*/
|
||||||
|
for receiver in initData.receivers {
|
||||||
|
// Create separator between last receiver / media type
|
||||||
|
let receiverSeparator = NSBox()
|
||||||
|
receiverSeparator.boxType = .separator
|
||||||
|
|
||||||
|
let receiverView = ReceiverView(receiver: receiver)
|
||||||
|
receiverView.receiverViewDelegate = self
|
||||||
|
|
||||||
|
if UInt(initData.availableMediaTypes) == 0
|
||||||
|
|| (initData.availableMediaTypes
|
||||||
|
& initData.defaultMediaType.rawValue) == 0 {
|
||||||
|
receiverView.isEnabled = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
self.receiverViews.append(receiverView)
|
||||||
|
|
||||||
|
stackView.addArrangedSubview(receiverSeparator)
|
||||||
|
stackView.addArrangedSubview(receiverView)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
self.receiverViews.append(receiverView)
|
|
||||||
|
|
||||||
stackView.addArrangedSubview(receiverSeparator)
|
|
||||||
stackView.addArrangedSubview(receiverView)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -16,4 +16,5 @@ struct InitData : Codable {
|
|||||||
let i18n_mediaTypeFile: String
|
let i18n_mediaTypeFile: String
|
||||||
let i18n_mediaSelectCastLabel: String
|
let i18n_mediaSelectCastLabel: String
|
||||||
let i18n_mediaSelectToLabel: String
|
let i18n_mediaSelectToLabel: String
|
||||||
|
let i18n_noReceiversFound: String
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,10 @@
|
|||||||
"message": "to:"
|
"message": "to:"
|
||||||
, "description": "Cast <select> (to:)"
|
, "description": "Cast <select> (to:)"
|
||||||
}
|
}
|
||||||
|
, "popupNoReceiversFound": {
|
||||||
|
"message": "No receiver devices found"
|
||||||
|
, "description": "Message displayed in the receiver selector if there are no available receivers."
|
||||||
|
}
|
||||||
, "popupCastButtonTitle": {
|
, "popupCastButtonTitle": {
|
||||||
"message": "Cast"
|
"message": "Cast"
|
||||||
, "description": "Button text for each receiver entry in the receiver selector."
|
, "description": "Button text for each receiver entry in the receiver selector."
|
||||||
|
|||||||
@@ -149,10 +149,15 @@ export default new class StatusManager
|
|||||||
|
|
||||||
// Cleanup
|
// Cleanup
|
||||||
this.receivers.clear();
|
this.receivers.clear();
|
||||||
this.bridgePort.onDisconnect.removeListener(
|
|
||||||
this.onBridgePortDisconnect);
|
if (this.bridgePort) {
|
||||||
this.bridgePort.onMessage.removeListener(this.onBridgePortMessage);
|
this.bridgePort.onDisconnect.removeListener(
|
||||||
this.bridgePort = null;
|
this.onBridgePortDisconnect);
|
||||||
|
this.bridgePort.onMessage.removeListener(
|
||||||
|
this.onBridgePortMessage);
|
||||||
|
|
||||||
|
this.bridgePort = null;
|
||||||
|
}
|
||||||
|
|
||||||
window.setTimeout(async () => {
|
window.setTimeout(async () => {
|
||||||
this.bridgePort = await this.createBridgePort();
|
this.bridgePort = await this.createBridgePort();
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ browser.runtime.onInstalled.addListener(async details => {
|
|||||||
|
|
||||||
|
|
||||||
function initBrowserAction () {
|
function initBrowserAction () {
|
||||||
browser.browserAction.disable();
|
/*browser.browserAction.disable();
|
||||||
|
|
||||||
function onServiceChange () {
|
function onServiceChange () {
|
||||||
if (StatusManager.getReceivers().length) {
|
if (StatusManager.getReceivers().length) {
|
||||||
@@ -55,7 +55,7 @@ function initBrowserAction () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
StatusManager.addEventListener("serviceUp", onServiceChange);
|
StatusManager.addEventListener("serviceUp", onServiceChange);
|
||||||
StatusManager.addEventListener("serviceDown", onServiceChange);
|
StatusManager.addEventListener("serviceDown", onServiceChange);*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -100,6 +100,7 @@ export default class NativeReceiverSelector
|
|||||||
, i18n_mediaTypeFile: _("popupMediaTypeFile")
|
, i18n_mediaTypeFile: _("popupMediaTypeFile")
|
||||||
, i18n_mediaSelectCastLabel: _("popupMediaSelectCastLabel")
|
, i18n_mediaSelectCastLabel: _("popupMediaSelectCastLabel")
|
||||||
, i18n_mediaSelectToLabel: _("popupMediaSelectToLabel")
|
, i18n_mediaSelectToLabel: _("popupMediaSelectToLabel")
|
||||||
|
, i18n_noReceiversFound: _("popupNoReceiversFound")
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -152,13 +152,17 @@ class PopupApp extends Component<{}, PopupAppState> {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ul className="receivers">
|
<ul className="receivers">
|
||||||
{ this.state.receivers && this.state.receivers.map(
|
{ this.state.receivers && this.state.receivers.length
|
||||||
(receiver, i) => (
|
? this.state.receivers.map((receiver, i) => (
|
||||||
<ReceiverEntry receiver={ receiver }
|
<ReceiverEntry receiver={ receiver }
|
||||||
onCast={ this.onCast }
|
onCast={ this.onCast }
|
||||||
isLoading={ this.state.isLoading }
|
isLoading={ this.state.isLoading }
|
||||||
canCast={ canCast }
|
canCast={ canCast }
|
||||||
key={ i }/> ))}
|
key={ i } /> ))
|
||||||
|
: (
|
||||||
|
<div className="receivers__not-found">
|
||||||
|
{ _("popupNoReceiversFound") }
|
||||||
|
</div> )}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -33,6 +33,14 @@ body {
|
|||||||
padding: initial;
|
padding: initial;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.receivers__not-found {
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
height: 50px;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 0.75em 1em;
|
||||||
|
}
|
||||||
|
|
||||||
.receiver {
|
.receiver {
|
||||||
column-gap: 0.75em;
|
column-gap: 0.75em;
|
||||||
display: grid;
|
display: grid;
|
||||||
|
|||||||
Reference in New Issue
Block a user