diff options
Diffstat (limited to 'WireGuard/WireGuard/UI/macOS/StatusMenu.swift')
-rw-r--r-- | WireGuard/WireGuard/UI/macOS/StatusMenu.swift | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/WireGuard/WireGuard/UI/macOS/StatusMenu.swift b/WireGuard/WireGuard/UI/macOS/StatusMenu.swift new file mode 100644 index 0000000..4ac4b91 --- /dev/null +++ b/WireGuard/WireGuard/UI/macOS/StatusMenu.swift @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: MIT +// Copyright © 2018 WireGuard LLC. All Rights Reserved. + +import Cocoa + +class StatusMenu: NSMenu { + + let tunnelsManager: TunnelsManager + + init(tunnelsManager: TunnelsManager) { + self.tunnelsManager = tunnelsManager + super.init(title: "WireGuard Status Bar Menu") + addTunnelMenuItems() + } + + required init(coder decoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + func addTunnelMenuItems() { + for index in 0 ..< tunnelsManager.numberOfTunnels() { + let tunnel = tunnelsManager.tunnel(at: index) + let menuItem = NSMenuItem(title: tunnel.name, action: #selector(tunnelClicked(sender:)), keyEquivalent: "") + menuItem.target = self + menuItem.representedObject = tunnel + addItem(menuItem) + } + } + + @objc func tunnelClicked(sender: AnyObject) { + guard let tunnel = sender.representedObject as? TunnelContainer else { return } + print("Tunnel \(tunnel.name) clicked") + } +} |