diff options
author | Roopesh Chander <roop@roopc.net> | 2019-01-18 01:27:17 +0530 |
---|---|---|
committer | Roopesh Chander <roop@roopc.net> | 2019-01-18 01:34:24 +0530 |
commit | dc8f27c5c36a212336318f62c1c45e31bb9d95d6 (patch) | |
tree | f5f240e3141e1853a81a7334ddacdb4e5b6cd6e3 /WireGuard/WireGuard/UI/macOS/AppDelegate.swift | |
parent | macOS: Fix autolayout errors on Add Empty Tunnel (diff) | |
download | wireguard-apple-dc8f27c5c36a212336318f62c1c45e31bb9d95d6.tar.xz wireguard-apple-dc8f27c5c36a212336318f62c1c45e31bb9d95d6.zip |
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 <roop@roopc.net>
Diffstat (limited to '')
-rw-r--r-- | WireGuard/WireGuard/UI/macOS/AppDelegate.swift | 36 |
1 files changed, 28 insertions, 8 deletions
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! } } |