From dc8f27c5c36a212336318f62c1c45e31bb9d95d6 Mon Sep 17 00:00:00 2001 From: Roopesh Chander Date: Fri, 18 Jan 2019 01:27:17 +0530 Subject: macOS: Rafactor by introducing a TunnelsTracker The TunnelTracker is now the central place to track what the current tunnel is, and for keeping track of the tunnel list. Signed-off-by: Roopesh Chander --- WireGuard/WireGuard/UI/macOS/AppDelegate.swift | 36 ++++++++++++++++++++------ 1 file changed, 28 insertions(+), 8 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 3f08987..95c1aa6 100644 --- a/WireGuard/WireGuard/UI/macOS/AppDelegate.swift +++ b/WireGuard/WireGuard/UI/macOS/AppDelegate.swift @@ -6,8 +6,12 @@ import Cocoa @NSApplicationMain class AppDelegate: NSObject, NSApplicationDelegate { + var tunnelsManager: TunnelsManager? + var tunnelsTracker: TunnelsTracker? var statusItemController: StatusItemController? - var currentTunnelStatusObserver: AnyObject? + + var manageTunnelsRootVC: ManageTunnelsRootViewController? + var manageTunnelsWindowObject: NSWindow? func applicationDidFinishLaunching(_ aNotification: Notification) { Logger.configureGlobal(withFilePath: FileManager.appLogFileURL?.path) @@ -20,19 +24,35 @@ class AppDelegate: NSObject, NSApplicationDelegate { } let tunnelsManager: TunnelsManager = result.value! - let statusItemController = StatusItemController() let statusMenu = StatusMenu(tunnelsManager: tunnelsManager) + statusMenu.windowDelegate = self + let statusItemController = StatusItemController() statusItemController.statusItem.menu = statusMenu - statusItemController.currentTunnel = statusMenu.currentTunnel - self.currentTunnelStatusObserver = statusMenu.observe(\.currentTunnel) { statusMenu, _ in - statusItemController.currentTunnel = statusMenu.currentTunnel - } + + let tunnelsTracker = TunnelsTracker(tunnelsManager: tunnelsManager) + tunnelsTracker.statusMenu = statusMenu + tunnelsTracker.statusItemController = statusItemController + + self.tunnelsManager = tunnelsManager + self.tunnelsTracker = tunnelsTracker self.statusItemController = statusItemController + } + } +} - tunnelsManager.tunnelsListDelegate = statusMenu - tunnelsManager.activationDelegate = statusMenu +extension AppDelegate: StatusMenuWindowDelegate { + func manageTunnelsWindow() -> NSWindow { + if manageTunnelsWindowObject == nil { + manageTunnelsRootVC = ManageTunnelsRootViewController(tunnelsManager: tunnelsManager!) + let window = NSWindow(contentViewController: manageTunnelsRootVC!) + window.title = tr("macWindowTitleManageTunnels") + window.setContentSize(NSSize(width: 800, height: 480)) + window.setFrameAutosaveName(NSWindow.FrameAutosaveName("ManageTunnelsWindow")) // Auto-save window position and size + manageTunnelsWindowObject = window + tunnelsTracker?.manageTunnelsRootVC = manageTunnelsRootVC } + return manageTunnelsWindowObject! } } -- cgit v1.2.3-59-g8ed1b