aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard/WireGuard/UI/macOS/StatusMenu.swift
diff options
context:
space:
mode:
authorRoopesh Chander <roop@roopc.net>2019-01-16 01:00:42 +0530
committerRoopesh Chander <roop@roopc.net>2019-01-16 01:26:10 +0530
commite29cf19fddc6878f7e24c442f83d6ff0d23fa6b8 (patch)
tree6b7a098cd40dda417d1827af5245669bc883fa88 /WireGuard/WireGuard/UI/macOS/StatusMenu.swift
parentmacOS: Add About dialog (diff)
downloadwireguard-apple-e29cf19fddc6878f7e24c442f83d6ff0d23fa6b8.tar.xz
wireguard-apple-e29cf19fddc6878f7e24c442f83d6ff0d23fa6b8.zip
macOS: Different status bar icon looks for different states
- Looks dimmed when no tunnel is active - Looks normal when a tunnel is active - Animates when a tunnel is activating Signed-off-by: Roopesh Chander <roop@roopc.net>
Diffstat (limited to '')
-rw-r--r--WireGuard/WireGuard/UI/macOS/StatusMenu.swift15
1 files changed, 14 insertions, 1 deletions
diff --git a/WireGuard/WireGuard/UI/macOS/StatusMenu.swift b/WireGuard/WireGuard/UI/macOS/StatusMenu.swift
index 78e71ba..a2f02d8 100644
--- a/WireGuard/WireGuard/UI/macOS/StatusMenu.swift
+++ b/WireGuard/WireGuard/UI/macOS/StatusMenu.swift
@@ -13,6 +13,8 @@ class StatusMenu: NSMenu {
var firstTunnelMenuItemIndex = 0
var numberOfTunnelMenuItems = 0
+ @objc dynamic var currentTunnel: TunnelContainer?
+
var manageTunnelsRootVC: ManageTunnelsRootViewController?
lazy var manageTunnelsWindow: NSWindow = {
manageTunnelsRootVC = ManageTunnelsRootViewController(tunnelsManager: tunnelsManager)
@@ -30,7 +32,11 @@ class StatusMenu: NSMenu {
addStatusMenuItems()
addItem(NSMenuItem.separator())
for index in 0 ..< tunnelsManager.numberOfTunnels() {
- let isUpdated = updateStatusMenuItems(with: tunnelsManager.tunnel(at: index), ignoreInactive: true)
+ let tunnel = tunnelsManager.tunnel(at: index)
+ if tunnel.status != .inactive {
+ currentTunnel = tunnel
+ }
+ let isUpdated = updateStatusMenuItems(with: tunnel, ignoreInactive: true)
if isUpdated {
break
}
@@ -176,6 +182,13 @@ extension StatusMenu {
updateTunnelMenuItem(menuItem)
let statusObservationToken = tunnel.observe(\.status) { [weak self] tunnel, _ in
updateTunnelMenuItem(menuItem)
+ if tunnel.status == .deactivating || tunnel.status == .inactive {
+ if self?.currentTunnel == tunnel {
+ self?.currentTunnel = self?.tunnelsManager.waitingTunnel()
+ }
+ } else {
+ self?.currentTunnel = tunnel
+ }
self?.updateStatusMenuItems(with: tunnel, ignoreInactive: false)
}
tunnelStatusObservers.insert(statusObservationToken, at: tunnelIndex)