diff options
author | Roopesh Chander <roop@roopc.net> | 2019-01-16 01:00:42 +0530 |
---|---|---|
committer | Roopesh Chander <roop@roopc.net> | 2019-01-16 01:26:10 +0530 |
commit | e29cf19fddc6878f7e24c442f83d6ff0d23fa6b8 (patch) | |
tree | 6b7a098cd40dda417d1827af5245669bc883fa88 /WireGuard/WireGuard/UI/macOS/StatusMenu.swift | |
parent | macOS: Add About dialog (diff) | |
download | wireguard-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.swift | 15 |
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) |