macOS: Generalize NoTunnelsDetailVC into a ButtonedDetailVC

Signed-off-by: Roopesh Chander <roop@roopc.net>
This commit is contained in:
Roopesh Chander
2019-03-10 16:32:26 +05:30
parent 4503c11b0c
commit db6f0729c6
4 changed files with 58 additions and 51 deletions
@@ -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)
}
}