diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2021-04-14 18:13:30 +0200 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2021-05-12 13:46:21 +0200 |
| commit | 739d6d5a34554b9ad2ce87ed4202bc2ea4b686a9 (patch) | |
| tree | 113b68bcec0acd729946de644502ed3ebda0b7e5 | |
| parent | 143710b11b4d09922d8faca9306c26953a3b8fe0 (diff) | |
| download | mullvadvpn-739d6d5a34554b9ad2ce87ed4202bc2ea4b686a9.tar.xz mullvadvpn-739d6d5a34554b9ad2ce87ed4202bc2ea4b686a9.zip | |
HeaderBar: add divider
| -rw-r--r-- | ios/MullvadVPN/ConnectViewController.swift | 8 | ||||
| -rw-r--r-- | ios/MullvadVPN/ConsentViewController.swift | 4 | ||||
| -rw-r--r-- | ios/MullvadVPN/CustomSplitViewController.swift | 4 | ||||
| -rw-r--r-- | ios/MullvadVPN/HeaderBarView.swift | 22 | ||||
| -rw-r--r-- | ios/MullvadVPN/LoginViewController.swift | 4 | ||||
| -rw-r--r-- | ios/MullvadVPN/RootContainerViewController.swift | 22 | ||||
| -rw-r--r-- | ios/MullvadVPN/UIColor+Palette.swift | 1 |
7 files changed, 49 insertions, 16 deletions
diff --git a/ios/MullvadVPN/ConnectViewController.swift b/ios/MullvadVPN/ConnectViewController.swift index e9a4617a8d..7c08454901 100644 --- a/ios/MullvadVPN/ConnectViewController.swift +++ b/ios/MullvadVPN/ConnectViewController.swift @@ -44,16 +44,16 @@ class ConnectViewController: UIViewController, MKMapViewDelegate, RootContainmen return .lightContent } - var preferredHeaderBarStyle: HeaderBarStyle { + var preferredHeaderBarPresentation: HeaderBarPresentation { if !Account.shared.isLoggedIn { - return .default + return HeaderBarPresentation(style: .default, showsDivider: true) } switch tunnelState { case .connecting, .reconnecting, .connected: - return .secured + return HeaderBarPresentation(style: .secured, showsDivider: false) case .disconnecting, .disconnected: - return .unsecured + return HeaderBarPresentation(style: .unsecured, showsDivider: false) } } diff --git a/ios/MullvadVPN/ConsentViewController.swift b/ios/MullvadVPN/ConsentViewController.swift index 33beab0f54..710b5468eb 100644 --- a/ios/MullvadVPN/ConsentViewController.swift +++ b/ios/MullvadVPN/ConsentViewController.swift @@ -19,8 +19,8 @@ class ConsentViewController: UIViewController, RootContainment, SFSafariViewCont return .lightContent } - var preferredHeaderBarStyle: HeaderBarStyle { - return .default + var preferredHeaderBarPresentation: HeaderBarPresentation { + return HeaderBarPresentation(style: .default, showsDivider: false) } var prefersHeaderBarHidden: Bool { diff --git a/ios/MullvadVPN/CustomSplitViewController.swift b/ios/MullvadVPN/CustomSplitViewController.swift index ecd0d30dff..8f85e7064c 100644 --- a/ios/MullvadVPN/CustomSplitViewController.swift +++ b/ios/MullvadVPN/CustomSplitViewController.swift @@ -10,9 +10,9 @@ import UIKit class CustomSplitViewController: UISplitViewController, RootContainment { - var preferredHeaderBarStyle: HeaderBarStyle { + var preferredHeaderBarPresentation: HeaderBarPresentation { for case let viewController as RootContainment in viewControllers { - return viewController.preferredHeaderBarStyle + return viewController.preferredHeaderBarPresentation } return .default } diff --git a/ios/MullvadVPN/HeaderBarView.swift b/ios/MullvadVPN/HeaderBarView.swift index 54ef4b77b2..72acecbf35 100644 --- a/ios/MullvadVPN/HeaderBarView.swift +++ b/ios/MullvadVPN/HeaderBarView.swift @@ -35,6 +35,22 @@ class HeaderBarView: UIView { return settingsButton } + private let borderLayer: CALayer = { + let layer = CALayer() + layer.backgroundColor = UIColor.HeaderBar.dividerColor.cgColor + return layer + }() + + var showsDivider = false { + didSet { + if showsDivider { + layer.addSublayer(borderLayer) + } else { + borderLayer.removeFromSuperlayer() + } + } + } + override init(frame: CGRect) { super.init(frame: frame) @@ -68,4 +84,10 @@ class HeaderBarView: UIView { required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } + + override func layoutSubviews() { + super.layoutSubviews() + + borderLayer.frame = CGRect(x: 0, y: frame.maxY - 1, width: frame.width, height: 1) + } } diff --git a/ios/MullvadVPN/LoginViewController.swift b/ios/MullvadVPN/LoginViewController.swift index c8ef1e58fb..ebb571814f 100644 --- a/ios/MullvadVPN/LoginViewController.swift +++ b/ios/MullvadVPN/LoginViewController.swift @@ -69,8 +69,8 @@ class LoginViewController: UIViewController, RootContainment { return .lightContent } - var preferredHeaderBarStyle: HeaderBarStyle { - return .transparent + var preferredHeaderBarPresentation: HeaderBarPresentation { + return HeaderBarPresentation(style: .transparent, showsDivider: false) } var prefersHeaderBarHidden: Bool { diff --git a/ios/MullvadVPN/RootContainerViewController.swift b/ios/MullvadVPN/RootContainerViewController.swift index c10d54fd35..ad5a76996e 100644 --- a/ios/MullvadVPN/RootContainerViewController.swift +++ b/ios/MullvadVPN/RootContainerViewController.swift @@ -25,11 +25,20 @@ enum HeaderBarStyle { } } +struct HeaderBarPresentation { + let style: HeaderBarStyle + let showsDivider: Bool + + static var `default`: HeaderBarPresentation { + return HeaderBarPresentation(style: .default, showsDivider: false) + } +} + /// A protocol that defines the relationship between the root container and its child controllers protocol RootContainment { /// Return the preferred header bar style - var preferredHeaderBarStyle: HeaderBarStyle { get } + var preferredHeaderBarPresentation: HeaderBarPresentation { get } /// Return true if the view controller prefers header bar hidden var prefersHeaderBarHidden: Bool { get } @@ -51,7 +60,7 @@ class RootContainerViewController: UIViewController { private let transitionContainer = UIView(frame: UIScreen.main.bounds) private var presentationContainerSettingsButton: UIButton? - private(set) var headerBarStyle = HeaderBarStyle.default + private(set) var headerBarPresentation = HeaderBarPresentation.default private(set) var headerBarHidden = false private(set) var overrideHeaderBarHidden: Bool? @@ -430,8 +439,8 @@ class RootContainerViewController: UIViewController { } } - private func setHeaderBarStyle(_ style: HeaderBarStyle, animated: Bool) { - headerBarStyle = style + private func setHeaderBarPresentation(_ presentation: HeaderBarPresentation, animated: Bool) { + headerBarPresentation = presentation let action = { self.updateHeaderBarBackground() @@ -459,12 +468,13 @@ class RootContainerViewController: UIViewController { } private func updateHeaderBarBackground() { - headerBarView.backgroundColor = headerBarStyle.backgroundColor() + headerBarView.backgroundColor = headerBarPresentation.style.backgroundColor() + headerBarView.showsDivider = headerBarPresentation.showsDivider } private func updateHeaderBarStyleFromChildPreferences(animated: Bool) { if let conforming = topViewController as? RootContainment { - setHeaderBarStyle(conforming.preferredHeaderBarStyle, animated: animated) + setHeaderBarPresentation(conforming.preferredHeaderBarPresentation, animated: animated) } } diff --git a/ios/MullvadVPN/UIColor+Palette.swift b/ios/MullvadVPN/UIColor+Palette.swift index e2925af270..b883cbf2b7 100644 --- a/ios/MullvadVPN/UIColor+Palette.swift +++ b/ios/MullvadVPN/UIColor+Palette.swift @@ -74,6 +74,7 @@ extension UIColor { static let defaultBackgroundColor = primaryColor static let unsecuredBackgroundColor = dangerColor static let securedBackgroundColor = successColor + static let dividerColor = secondaryColor } // Common colors |
