From b5751b63214b51f2b576eb40694f6bb7f9bcd7d4 Mon Sep 17 00:00:00 2001 From: Roopesh Chander Date: Fri, 28 Dec 2018 19:29:09 +0530 Subject: macOS: Create status bar with tunnel names Signed-off-by: Roopesh Chander --- WireGuard/WireGuard/UI/macOS/AppDelegate.swift | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) (limited to 'WireGuard/WireGuard/UI/macOS/AppDelegate.swift') diff --git a/WireGuard/WireGuard/UI/macOS/AppDelegate.swift b/WireGuard/WireGuard/UI/macOS/AppDelegate.swift index 9630135..ba3e902 100644 --- a/WireGuard/WireGuard/UI/macOS/AppDelegate.swift +++ b/WireGuard/WireGuard/UI/macOS/AppDelegate.swift @@ -6,14 +6,26 @@ import Cocoa @NSApplicationMain class AppDelegate: NSObject, NSApplicationDelegate { + var statusItem: NSStatusItem? + func applicationDidFinishLaunching(_ aNotification: Notification) { - // Insert code here to initialize your application - } + TunnelsManager.create { [weak self] result in + guard let self = self else { return } + guard result.isSuccess else { return } // TODO: Show alert - func applicationWillTerminate(_ aNotification: Notification) { - // Insert code here to tear down your application + let tunnelsManager: TunnelsManager = result.value! + let statusMenu = StatusMenu(tunnelsManager: tunnelsManager) + self.statusItem = createStatusBarItem(with: statusMenu) + } } - - } +func createStatusBarItem(with statusMenu: StatusMenu) -> NSStatusItem { + let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.squareLength) + if let statusBarImage = NSImage(named: "WireGuardMacStatusBarIcon") { + statusBarImage.isTemplate = true + statusItem.button?.image = statusBarImage + } + statusItem.menu = statusMenu + return statusItem +} -- cgit v1.2.3-59-g8ed1b