summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAndrej Mihajlov <and@mullvad.net>2021-04-14 18:13:30 +0200
committerAndrej Mihajlov <and@mullvad.net>2021-05-12 13:46:21 +0200
commit739d6d5a34554b9ad2ce87ed4202bc2ea4b686a9 (patch)
tree113b68bcec0acd729946de644502ed3ebda0b7e5
parent143710b11b4d09922d8faca9306c26953a3b8fe0 (diff)
downloadmullvadvpn-739d6d5a34554b9ad2ce87ed4202bc2ea4b686a9.tar.xz
mullvadvpn-739d6d5a34554b9ad2ce87ed4202bc2ea4b686a9.zip
HeaderBar: add divider
-rw-r--r--ios/MullvadVPN/ConnectViewController.swift8
-rw-r--r--ios/MullvadVPN/ConsentViewController.swift4
-rw-r--r--ios/MullvadVPN/CustomSplitViewController.swift4
-rw-r--r--ios/MullvadVPN/HeaderBarView.swift22
-rw-r--r--ios/MullvadVPN/LoginViewController.swift4
-rw-r--r--ios/MullvadVPN/RootContainerViewController.swift22
-rw-r--r--ios/MullvadVPN/UIColor+Palette.swift1
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