diff options
author | Roopesh Chander <roop@roopc.net> | 2018-12-28 19:29:09 +0530 |
---|---|---|
committer | Roopesh Chander <roop@roopc.net> | 2019-01-14 14:52:29 +0530 |
commit | b5751b63214b51f2b576eb40694f6bb7f9bcd7d4 (patch) | |
tree | 11d8d008b27709b1e66fbb91df0def63763aa411 /WireGuard/WireGuard/UI/macOS/StatusMenu.swift | |
parent | macOS: Add status bar icon (diff) | |
download | wireguard-apple-b5751b63214b51f2b576eb40694f6bb7f9bcd7d4.tar.xz wireguard-apple-b5751b63214b51f2b576eb40694f6bb7f9bcd7d4.zip |
macOS: Create status bar with tunnel names
Signed-off-by: Roopesh Chander <roop@roopc.net>
Diffstat (limited to '')
-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") + } +} |