macOS: Generalize NoTunnelsDetailVC into a ButtonedDetailVC
Signed-off-by: Roopesh Chander <roop@roopc.net>
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright © 2018-2019 WireGuard LLC. All Rights Reserved.
|
||||
|
||||
import Cocoa
|
||||
|
||||
class ButtonedDetailViewController: NSViewController {
|
||||
|
||||
var onButtonClicked: (() -> Void)?
|
||||
|
||||
let button: NSButton = {
|
||||
let button = NSButton()
|
||||
button.title = ""
|
||||
button.setButtonType(.momentaryPushIn)
|
||||
button.bezelStyle = .rounded
|
||||
return button
|
||||
}()
|
||||
|
||||
init() {
|
||||
super.init(nibName: nil, bundle: nil)
|
||||
}
|
||||
|
||||
required init?(coder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
override func loadView() {
|
||||
let view = NSView()
|
||||
|
||||
button.target = self
|
||||
button.action = #selector(buttonClicked)
|
||||
|
||||
view.addSubview(button)
|
||||
button.translatesAutoresizingMaskIntoConstraints = false
|
||||
NSLayoutConstraint.activate([
|
||||
button.centerXAnchor.constraint(equalTo: view.centerXAnchor),
|
||||
button.centerYAnchor.constraint(equalTo: view.centerYAnchor)
|
||||
])
|
||||
self.view = view
|
||||
}
|
||||
|
||||
func setButtonTitle(_ title: String) {
|
||||
button.title = title
|
||||
}
|
||||
|
||||
@objc func buttonClicked() {
|
||||
onButtonClicked?()
|
||||
}
|
||||
}
|
||||
@@ -84,7 +84,12 @@ extension ManageTunnelsRootViewController: TunnelsListTableViewControllerDelegat
|
||||
}
|
||||
|
||||
func tunnelsListEmpty() {
|
||||
let noTunnelsVC = NoTunnelsDetailViewController(tunnelsManager: tunnelsManager)
|
||||
let noTunnelsVC = ButtonedDetailViewController()
|
||||
noTunnelsVC.setButtonTitle(tr("macButtonImportTunnels"))
|
||||
noTunnelsVC.onButtonClicked = { [weak self] in
|
||||
guard let self = self else { return }
|
||||
ImportPanelPresenter.presentImportPanel(tunnelsManager: self.tunnelsManager, sourceVC: self)
|
||||
}
|
||||
setTunnelDetailContentVC(noTunnelsVC)
|
||||
self.tunnelDetailVC = nil
|
||||
}
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright © 2018-2019 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() {
|
||||
// We pass sourceVC as parent instead of self because this VC will not be visible when the import completes
|
||||
ImportPanelPresenter.presentImportPanel(tunnelsManager: tunnelsManager, sourceVC: parent)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user