diff options
author | Roopesh Chander <roop@roopc.net> | 2019-03-19 15:35:15 +0530 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-03-19 21:23:46 +0100 |
commit | 7a3f65fd2f9ded875bd0f989e249a28837451155 (patch) | |
tree | 9fc982452db3eb4a9f9b349a327bf6b86f2f6197 | |
parent | Version: CFBundleVersion must always increase for macOS app store (diff) | |
download | wireguard-apple-7a3f65fd2f9ded875bd0f989e249a28837451155.tar.xz wireguard-apple-7a3f65fd2f9ded875bd0f989e249a28837451155.zip |
macOS: Add 'Deactivate' status menu item
Signed-off-by: Roopesh Chander <roop@roopc.net>
-rw-r--r-- | WireGuard/WireGuard/UI/macOS/StatusMenu.swift | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/WireGuard/WireGuard/UI/macOS/StatusMenu.swift b/WireGuard/WireGuard/UI/macOS/StatusMenu.swift index ada33dc..07b707c 100644 --- a/WireGuard/WireGuard/UI/macOS/StatusMenu.swift +++ b/WireGuard/WireGuard/UI/macOS/StatusMenu.swift @@ -13,6 +13,7 @@ class StatusMenu: NSMenu { var statusMenuItem: NSMenuItem? var networksMenuItem: NSMenuItem? + var deactivateMenuItem: NSMenuItem? var firstTunnelMenuItemIndex = 0 var numberOfTunnelMenuItems = 0 @@ -53,16 +54,22 @@ class StatusMenu: NSMenu { networksMenuItem.isEnabled = false networksMenuItem.isHidden = true addItem(networksMenuItem) + let deactivateMenuItem = NSMenuItem(title: tr("macToggleStatusButtonDeactivate"), action: #selector(deactivateClicked), keyEquivalent: "") + deactivateMenuItem.target = self + deactivateMenuItem.isHidden = true + addItem(deactivateMenuItem) self.statusMenuItem = statusMenuItem self.networksMenuItem = networksMenuItem + self.deactivateMenuItem = deactivateMenuItem } func updateStatusMenuItems(with tunnel: TunnelContainer?) { - guard let statusMenuItem = statusMenuItem, let networksMenuItem = networksMenuItem else { return } + guard let statusMenuItem = statusMenuItem, let networksMenuItem = networksMenuItem, let deactivateMenuItem = deactivateMenuItem else { return } guard let tunnel = tunnel else { statusMenuItem.title = tr(format: "macStatus (%@)", tr("tunnelStatusInactive")) networksMenuItem.title = "" networksMenuItem.isHidden = true + deactivateMenuItem.isHidden = true return } var statusText: String @@ -98,6 +105,7 @@ class StatusMenu: NSMenu { } networksMenuItem.isHidden = false } + deactivateMenuItem.isHidden = tunnel.status != .active } func addTunnelMenuItems() -> Bool { @@ -127,6 +135,12 @@ class StatusMenu: NSMenu { addItem(quitItem) } + @objc func deactivateClicked() { + if let currentTunnel = currentTunnel { + tunnelsManager.startDeactivation(of: currentTunnel) + } + } + @objc func tunnelClicked(sender: AnyObject) { guard let tunnelMenuItem = sender as? TunnelMenuItem else { return } if tunnelMenuItem.state == .off { |