summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadVPN/RootContainerViewController.swift
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2020-07-07 14:52:28 +0200
committerAndrej Mihajlov <and@mullvad.net>2020-07-07 14:52:28 +0200
commit66e374e6d4c686c19506ddeb45c09a70818d26e1 (patch)
treedfdddde026d5c7a6b8874cb4fd0869dba1feecd4 /ios/MullvadVPN/RootContainerViewController.swift
parent4097b39627b618eb95cfad290e20aea6ab32fd29 (diff)
parentd246d6186df578c64eb08f05f38bf779e573c294 (diff)
downloadmullvadvpn-66e374e6d4c686c19506ddeb45c09a70818d26e1.tar.xz
mullvadvpn-66e374e6d4c686c19506ddeb45c09a70818d26e1.zip
Merge branch 'move-header-to-xib'
Diffstat (limited to 'ios/MullvadVPN/RootContainerViewController.swift')
-rw-r--r--ios/MullvadVPN/RootContainerViewController.swift55
1 files changed, 50 insertions, 5 deletions
diff --git a/ios/MullvadVPN/RootContainerViewController.swift b/ios/MullvadVPN/RootContainerViewController.swift
index b66c75df4e..0c8ff7e40e 100644
--- a/ios/MullvadVPN/RootContainerViewController.swift
+++ b/ios/MullvadVPN/RootContainerViewController.swift
@@ -47,9 +47,8 @@ class RootContainerViewController: UIViewController {
return viewControllers.last
}
- @IBOutlet var headerBarView: UIView!
- @IBOutlet var headerBarSettingsButton: UIButton!
- @IBOutlet var transitionContainer: UIView!
+ private let headerBarView = HeaderBarView(bundle: nil)
+ private let transitionContainer = UIView(frame: UIScreen.main.bounds)
private(set) var headerBarStyle = HeaderBarStyle.default
private(set) var headerBarHidden = false
@@ -76,6 +75,8 @@ class RootContainerViewController: UIViewController {
margins.right = 24
view.layoutMargins = margins
+ addTransitionView()
+ addHeaderBarView()
updateHeaderBarBackground()
}
@@ -157,8 +158,10 @@ class RootContainerViewController: UIViewController {
/// Request to display settings controller
func showSettings(navigateTo route: SettingsNavigationRoute? = nil, animated: Bool) {
- guard let navController = self.storyboard?
- .instantiateViewController(identifier: ViewControllerIdentifier.settings.rawValue)
+ let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
+
+ guard let navController = mainStoryboard
+ .instantiateViewController(withIdentifier: ViewControllerIdentifier.settings.rawValue)
as? UINavigationController else { return }
if let route = route {
@@ -169,8 +172,50 @@ class RootContainerViewController: UIViewController {
present(navController, animated: animated)
}
+ /// Enable or disable the settings bar button displayed in the header bar
+ func setEnableSettingsButton(_ isEnabled: Bool) {
+ headerBarView.settingsButton.isEnabled = isEnabled
+ }
+
// MARK: - Private
+ private func addTransitionView() {
+ let constraints = [
+ transitionContainer.topAnchor.constraint(equalTo: view.topAnchor),
+ transitionContainer.leadingAnchor.constraint(equalTo: view.leadingAnchor),
+ transitionContainer.trailingAnchor.constraint(equalTo: view.trailingAnchor),
+ transitionContainer.bottomAnchor.constraint(equalTo: view.bottomAnchor)
+ ]
+
+ transitionContainer.translatesAutoresizingMaskIntoConstraints = false
+ view.addSubview(transitionContainer)
+
+ NSLayoutConstraint.activate(constraints)
+ }
+
+ private func addHeaderBarView() {
+ let constraints = [
+ headerBarView.topAnchor.constraint(equalTo: view.topAnchor),
+ headerBarView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
+ headerBarView.trailingAnchor.constraint(equalTo: view.trailingAnchor)
+ ]
+
+ headerBarView.translatesAutoresizingMaskIntoConstraints = false
+ headerBarView.settingsButton.addTarget(
+ self,
+ action: #selector(handleSettingsButtonTap),
+ for: .touchUpInside
+ )
+
+ view.addSubview(headerBarView)
+
+ NSLayoutConstraint.activate(constraints)
+ }
+
+ @objc private func handleSettingsButtonTap() {
+ showSettings(animated: true)
+ }
+
private func setViewControllersInternal(_ newViewControllers: [UIViewController], isUnwinding: Bool, animated: Bool, completion: CompletionHandler? = nil) {
// Dot not handle appearance events when the container itself is not visible
let shouldHandleAppearanceEvents = view.window != nil