]> git.ipfire.org Git - thirdparty/wireguard-apple.git/commitdiff
macOS: Consolidate presenting of the import panel
authorRoopesh Chander <roop@roopc.net>
Sat, 5 Jan 2019 13:46:16 +0000 (19:16 +0530)
committerRoopesh Chander <roop@roopc.net>
Mon, 14 Jan 2019 09:22:33 +0000 (14:52 +0530)
Signed-off-by: Roopesh Chander <roop@roopc.net>
WireGuard/WireGuard.xcodeproj/project.pbxproj
WireGuard/WireGuard/UI/macOS/ImportPanelPresenter.swift [new file with mode: 0644]
WireGuard/WireGuard/UI/macOS/StatusMenu.swift
WireGuard/WireGuard/UI/macOS/ViewController/NoTunnelsDetailViewController.swift
WireGuard/WireGuard/UI/macOS/ViewController/TunnelsListTableViewController.swift

index 7ad1bbf54d46ea1fa6bad0181359068743a8b549..e9a9a213908cc6da5a6c87fdd0c59c5a699f89f1 100644 (file)
                6FBA104321D6BC250051C35F /* ErrorPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FBA104121D6BC210051C35F /* ErrorPresenter.swift */; };
                6FBA104621D7EBFA0051C35F /* TunnelsListTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FBA104521D7EBFA0051C35F /* TunnelsListTableViewController.swift */; };
                6FCD99AA21E0E14700BA4C82 /* NoTunnelsDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FCD99A821E0E0C700BA4C82 /* NoTunnelsDetailViewController.swift */; };
+               6FCD99AF21E0EA1700BA4C82 /* ImportPanelPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FCD99AE21E0EA1700BA4C82 /* ImportPanelPresenter.swift */; };
                6FDB3C3B21DCF47400A0C0BF /* TunnelDetailTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FDB3C3A21DCF47400A0C0BF /* TunnelDetailTableViewController.swift */; };
                6FDB3C3C21DCF6BB00A0C0BF /* TunnelViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F628C3C217F09E9003482A3 /* TunnelViewModel.swift */; };
                6FDEF7E421846C1A00D8FBF6 /* libwg-go.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FDEF7E321846C1A00D8FBF6 /* libwg-go.a */; };
                6FBA104121D6BC210051C35F /* ErrorPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorPresenter.swift; sourceTree = "<group>"; };
                6FBA104521D7EBFA0051C35F /* TunnelsListTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TunnelsListTableViewController.swift; sourceTree = "<group>"; };
                6FCD99A821E0E0C700BA4C82 /* NoTunnelsDetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoTunnelsDetailViewController.swift; sourceTree = "<group>"; };
+               6FCD99AE21E0EA1700BA4C82 /* ImportPanelPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportPanelPresenter.swift; sourceTree = "<group>"; };
                6FDB3C3A21DCF47400A0C0BF /* TunnelDetailTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TunnelDetailTableViewController.swift; sourceTree = "<group>"; };
                6FDEF7E321846C1A00D8FBF6 /* libwg-go.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libwg-go.a"; sourceTree = BUILT_PRODUCTS_DIR; };
                6FDEF7E52185EFAF00D8FBF6 /* QRScanViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QRScanViewController.swift; sourceTree = "<group>"; };
                                6FB1BD5F21D2607A00A991BF /* AppDelegate.swift */,
                                6FBA101621D655340051C35F /* StatusMenu.swift */,
                                6FBA104121D6BC210051C35F /* ErrorPresenter.swift */,
+                               6FCD99AE21E0EA1700BA4C82 /* ImportPanelPresenter.swift */,
                                6FB1BD6121D2607E00A991BF /* Assets.xcassets */,
                                6FB1BD6621D2607E00A991BF /* Info.plist */,
                                6FB1BD6721D2607E00A991BF /* WireGuard.entitlements */,
                                6FB1BDD321D50F5300A991BF /* ZipArchive.swift in Sources */,
                                6FB1BDD421D50F5300A991BF /* ioapi.c in Sources */,
                                6FDB3C3C21DCF6BB00A0C0BF /* TunnelViewModel.swift in Sources */,
+                               6FCD99AF21E0EA1700BA4C82 /* ImportPanelPresenter.swift in Sources */,
                                6FB1BDD521D50F5300A991BF /* unzip.c in Sources */,
                                6FB1BDD621D50F5300A991BF /* zip.c in Sources */,
                                6FDB3C3B21DCF47400A0C0BF /* TunnelDetailTableViewController.swift in Sources */,
diff --git a/WireGuard/WireGuard/UI/macOS/ImportPanelPresenter.swift b/WireGuard/WireGuard/UI/macOS/ImportPanelPresenter.swift
new file mode 100644 (file)
index 0000000..b1ed2f5
--- /dev/null
@@ -0,0 +1,18 @@
+// SPDX-License-Identifier: MIT
+// Copyright © 2018 WireGuard LLC. All Rights Reserved.
+
+import Cocoa
+
+class ImportPanelPresenter {
+    static func presentImportPanel(tunnelsManager: TunnelsManager, sourceVC: NSViewController) {
+        guard let window = sourceVC.view.window else { return }
+        let openPanel = NSOpenPanel()
+        openPanel.allowedFileTypes = ["conf", "zip"]
+        openPanel.beginSheetModal(for: window) { [weak tunnelsManager] response in
+            guard let tunnelsManager = tunnelsManager else { return }
+            guard response == .OK else { return }
+            guard let url = openPanel.url else { return }
+            TunnelImporter.importFromFile(url: url, into: tunnelsManager, sourceVC: sourceVC, errorPresenterType: ErrorPresenter.self)
+        }
+    }
+}
index b8693c9119769bebb06c2269d9565d4a2f4e019a..39c0f32b3325691ca65ef47ff1af46c05c39dc3d 100644 (file)
@@ -132,14 +132,7 @@ class StatusMenu: NSMenu {
     @objc func importTunnelsClicked() {
         NSApp.activate(ignoringOtherApps: true)
         manageTunnelsWindow.makeKeyAndOrderFront(self)
-        let openPanel = NSOpenPanel()
-        openPanel.allowedFileTypes = ["conf", "zip"]
-        openPanel.beginSheetModal(for: manageTunnelsWindow) { [weak tunnelsManager] response in
-            guard let tunnelsManager = tunnelsManager else { return }
-            guard response == .OK else { return }
-            guard let url = openPanel.url else { return }
-            TunnelImporter.importFromFile(url: url, into: tunnelsManager, sourceVC: nil, errorPresenterType: ErrorPresenter.self)
-        }
+        ImportPanelPresenter.presentImportPanel(tunnelsManager: tunnelsManager, sourceVC: manageTunnelsRootVC!)
     }
 }
 
index 059403a67521c092cb8911cf5a0610cd306bcfb1..ac574221cea0719a5264585f3fbe039ec7d8b835 100644 (file)
@@ -40,14 +40,6 @@ class NoTunnelsDetailViewController: NSViewController {
     }
 
     @objc func importTunnelClicked() {
-        guard let window = view.window else { return }
-        let openPanel = NSOpenPanel()
-        openPanel.allowedFileTypes = ["conf", "zip"]
-        openPanel.beginSheetModal(for: window) { [weak tunnelsManager] response in
-            guard let tunnelsManager = tunnelsManager else { return }
-            guard response == .OK else { return }
-            guard let url = openPanel.url else { return }
-            TunnelImporter.importFromFile(url: url, into: tunnelsManager, sourceVC: nil, errorPresenterType: ErrorPresenter.self)
-        }
+        ImportPanelPresenter.presentImportPanel(tunnelsManager: tunnelsManager, sourceVC: self)
     }
 }
index dff583a53622735daa3b89f64c478d0d152c5be9..0937453e82a64e8f89fb525fb3656a5da5195e9a 100644 (file)
@@ -131,15 +131,7 @@ class TunnelsListTableViewController: NSViewController {
     }
 
     @objc func importTunnelClicked() {
-        guard let window = view.window else { return }
-        let openPanel = NSOpenPanel()
-        openPanel.allowedFileTypes = ["conf", "zip"]
-        openPanel.beginSheetModal(for: window) { [weak tunnelsManager] response in
-            guard let tunnelsManager = tunnelsManager else { return }
-            guard response == .OK else { return }
-            guard let url = openPanel.url else { return }
-            TunnelImporter.importFromFile(url: url, into: tunnelsManager, sourceVC: nil, errorPresenterType: ErrorPresenter.self)
-        }
+        ImportPanelPresenter.presentImportPanel(tunnelsManager: tunnelsManager, sourceVC: self)
     }
 
     @objc func removeTunnelClicked() {