macOS: Manage tunnels: Handle the case when there are no tunnels
Signed-off-by: Roopesh Chander <roop@roopc.net>
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright © 2018 WireGuard LLC. All Rights Reserved.
|
||||
|
||||
import Cocoa
|
||||
|
||||
class NoTunnelsDetailViewController: NSViewController {
|
||||
|
||||
let tunnelsManager: TunnelsManager
|
||||
|
||||
let importButton: NSButton = {
|
||||
let button = NSButton()
|
||||
button.title = tr("macButtonImportTunnels")
|
||||
button.setButtonType(.momentaryPushIn)
|
||||
button.bezelStyle = .rounded
|
||||
return button
|
||||
}()
|
||||
|
||||
init(tunnelsManager: TunnelsManager) {
|
||||
self.tunnelsManager = tunnelsManager
|
||||
super.init(nibName: nil, bundle: nil)
|
||||
}
|
||||
|
||||
required init?(coder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
override func loadView() {
|
||||
let view = NSView()
|
||||
|
||||
importButton.target = self
|
||||
importButton.action = #selector(importTunnelClicked)
|
||||
|
||||
view.addSubview(importButton)
|
||||
importButton.translatesAutoresizingMaskIntoConstraints = false
|
||||
NSLayoutConstraint.activate([
|
||||
importButton.centerXAnchor.constraint(equalTo: view.centerXAnchor),
|
||||
importButton.centerYAnchor.constraint(equalTo: view.centerYAnchor)
|
||||
])
|
||||
self.view = view
|
||||
}
|
||||
|
||||
@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)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user