macOS: Add 'Deactivate' status menu item
Signed-off-by: Roopesh Chander <roop@roopc.net>
This commit is contained in:
parent
dca0fb29f6
commit
7a3f65fd2f
|
@ -13,6 +13,7 @@ class StatusMenu: NSMenu {
|
||||||
|
|
||||||
var statusMenuItem: NSMenuItem?
|
var statusMenuItem: NSMenuItem?
|
||||||
var networksMenuItem: NSMenuItem?
|
var networksMenuItem: NSMenuItem?
|
||||||
|
var deactivateMenuItem: NSMenuItem?
|
||||||
var firstTunnelMenuItemIndex = 0
|
var firstTunnelMenuItemIndex = 0
|
||||||
var numberOfTunnelMenuItems = 0
|
var numberOfTunnelMenuItems = 0
|
||||||
|
|
||||||
|
@ -53,16 +54,22 @@ class StatusMenu: NSMenu {
|
||||||
networksMenuItem.isEnabled = false
|
networksMenuItem.isEnabled = false
|
||||||
networksMenuItem.isHidden = true
|
networksMenuItem.isHidden = true
|
||||||
addItem(networksMenuItem)
|
addItem(networksMenuItem)
|
||||||
|
let deactivateMenuItem = NSMenuItem(title: tr("macToggleStatusButtonDeactivate"), action: #selector(deactivateClicked), keyEquivalent: "")
|
||||||
|
deactivateMenuItem.target = self
|
||||||
|
deactivateMenuItem.isHidden = true
|
||||||
|
addItem(deactivateMenuItem)
|
||||||
self.statusMenuItem = statusMenuItem
|
self.statusMenuItem = statusMenuItem
|
||||||
self.networksMenuItem = networksMenuItem
|
self.networksMenuItem = networksMenuItem
|
||||||
|
self.deactivateMenuItem = deactivateMenuItem
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateStatusMenuItems(with tunnel: TunnelContainer?) {
|
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 {
|
guard let tunnel = tunnel else {
|
||||||
statusMenuItem.title = tr(format: "macStatus (%@)", tr("tunnelStatusInactive"))
|
statusMenuItem.title = tr(format: "macStatus (%@)", tr("tunnelStatusInactive"))
|
||||||
networksMenuItem.title = ""
|
networksMenuItem.title = ""
|
||||||
networksMenuItem.isHidden = true
|
networksMenuItem.isHidden = true
|
||||||
|
deactivateMenuItem.isHidden = true
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var statusText: String
|
var statusText: String
|
||||||
|
@ -98,6 +105,7 @@ class StatusMenu: NSMenu {
|
||||||
}
|
}
|
||||||
networksMenuItem.isHidden = false
|
networksMenuItem.isHidden = false
|
||||||
}
|
}
|
||||||
|
deactivateMenuItem.isHidden = tunnel.status != .active
|
||||||
}
|
}
|
||||||
|
|
||||||
func addTunnelMenuItems() -> Bool {
|
func addTunnelMenuItems() -> Bool {
|
||||||
|
@ -127,6 +135,12 @@ class StatusMenu: NSMenu {
|
||||||
addItem(quitItem)
|
addItem(quitItem)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@objc func deactivateClicked() {
|
||||||
|
if let currentTunnel = currentTunnel {
|
||||||
|
tunnelsManager.startDeactivation(of: currentTunnel)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@objc func tunnelClicked(sender: AnyObject) {
|
@objc func tunnelClicked(sender: AnyObject) {
|
||||||
guard let tunnelMenuItem = sender as? TunnelMenuItem else { return }
|
guard let tunnelMenuItem = sender as? TunnelMenuItem else { return }
|
||||||
if tunnelMenuItem.state == .off {
|
if tunnelMenuItem.state == .off {
|
||||||
|
|
Loading…
Reference in New Issue