aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoopesh Chander <roop@roopc.net>2021-07-29 11:12:30 +0530
committerRoopesh Chander <roop@roopc.net>2021-07-30 13:29:25 +0530
commit95e1409bfb8cc2764a66f9ab8279f56c070a22fe (patch)
tree3919ff06dc7b8cc69c2410e171400ea5192867d3
parentUI: macOS: Add yellow circle image (diff)
downloadwireguard-apple-95e1409bfb8cc2764a66f9ab8279f56c070a22fe.tar.xz
wireguard-apple-95e1409bfb8cc2764a66f9ab8279f56c070a22fe.zip
UI: macOS: Tunnel list: Incorporate on-demand-ness in the status circle
Signed-off-by: Roopesh Chander <roop@roopc.net>
-rw-r--r--Sources/WireGuardApp/UI/macOS/View/TunnelListRow.swift24
1 files changed, 18 insertions, 6 deletions
diff --git a/Sources/WireGuardApp/UI/macOS/View/TunnelListRow.swift b/Sources/WireGuardApp/UI/macOS/View/TunnelListRow.swift
index 0b858a0..57b08cc 100644
--- a/Sources/WireGuardApp/UI/macOS/View/TunnelListRow.swift
+++ b/Sources/WireGuardApp/UI/macOS/View/TunnelListRow.swift
@@ -12,9 +12,12 @@ class TunnelListRow: NSView {
self?.nameLabel.stringValue = tunnel.name
}
// Bind to the tunnel's status
- statusImageView.image = TunnelListRow.image(for: tunnel?.status)
+ statusImageView.image = TunnelListRow.image(for: tunnel)
statusObservationToken = tunnel?.observe(\TunnelContainer.status) { [weak self] tunnel, _ in
- self?.statusImageView.image = TunnelListRow.image(for: tunnel.status)
+ self?.statusImageView.image = TunnelListRow.image(for: tunnel)
+ }
+ isOnDemandEnabledObservationToken = tunnel?.observe(\TunnelContainer.isActivateOnDemandEnabled) { [weak self] tunnel, _ in
+ self?.statusImageView.image = TunnelListRow.image(for: tunnel)
}
}
}
@@ -33,6 +36,7 @@ class TunnelListRow: NSView {
private var statusObservationToken: AnyObject?
private var nameObservationToken: AnyObject?
+ private var isOnDemandEnabledObservationToken: AnyObject?
init() {
super.init(frame: CGRect.zero)
@@ -56,15 +60,19 @@ class TunnelListRow: NSView {
fatalError("init(coder:) has not been implemented")
}
- static func image(for status: TunnelStatus?) -> NSImage? {
- guard let status = status else { return nil }
- switch status {
+ static func image(for tunnel: TunnelContainer?) -> NSImage? {
+ guard let tunnel = tunnel else { return nil }
+ switch tunnel.status {
case .active, .restarting, .reasserting:
return NSImage(named: NSImage.statusAvailableName)
case .activating, .waiting, .deactivating:
return NSImage(named: NSImage.statusPartiallyAvailableName)
case .inactive:
- return NSImage(named: NSImage.statusNoneName)
+ if tunnel.isActivateOnDemandEnabled {
+ return NSImage(named: NSImage.Name.statusOnDemandEnabled)
+ } else {
+ return NSImage(named: NSImage.statusNoneName)
+ }
}
}
@@ -73,3 +81,7 @@ class TunnelListRow: NSView {
statusImageView.image = nil
}
}
+
+extension NSImage.Name {
+ static let statusOnDemandEnabled = NSImage.Name("StatusCircleYellow")
+}