aboutsummaryrefslogtreecommitdiffstats
path: root/WireGuard/WireGuard/UI/iOS/MainViewController.swift
diff options
context:
space:
mode:
authorEric Kuck <eric@bluelinelabs.com>2018-12-14 17:27:11 -0600
committerEric Kuck <eric@bluelinelabs.com>2018-12-14 17:27:11 -0600
commitcb051f695db44e7a52e3f423fa27de00c493a9ac (patch)
tree64b583809b17825a0660211f7f381dfc892ccf61 /WireGuard/WireGuard/UI/iOS/MainViewController.swift
parentMost similar views now shared between ViewControllers (diff)
downloadwireguard-apple-cb051f695db44e7a52e3f423fa27de00c493a9ac.tar.xz
wireguard-apple-cb051f695db44e7a52e3f423fa27de00c493a9ac.zip
Reorganized project structure
Signed-off-by: Eric Kuck <eric@bluelinelabs.com>
Diffstat (limited to 'WireGuard/WireGuard/UI/iOS/MainViewController.swift')
-rw-r--r--WireGuard/WireGuard/UI/iOS/MainViewController.swift129
1 files changed, 0 insertions, 129 deletions
diff --git a/WireGuard/WireGuard/UI/iOS/MainViewController.swift b/WireGuard/WireGuard/UI/iOS/MainViewController.swift
deleted file mode 100644
index 82e6f81..0000000
--- a/WireGuard/WireGuard/UI/iOS/MainViewController.swift
+++ /dev/null
@@ -1,129 +0,0 @@
-// SPDX-License-Identifier: MIT
-// Copyright © 2018 WireGuard LLC. All Rights Reserved.
-
-import UIKit
-
-class MainViewController: UISplitViewController {
-
- var tunnelsManager: TunnelsManager?
- var onTunnelsManagerReady: ((TunnelsManager) -> Void)?
-
- var tunnelsListVC: TunnelsListTableViewController?
-
- init() {
- let detailVC = UIViewController()
- detailVC.view.backgroundColor = .white
- let detailNC = UINavigationController(rootViewController: detailVC)
-
- let masterVC = TunnelsListTableViewController()
- let masterNC = UINavigationController(rootViewController: masterVC)
-
- tunnelsListVC = masterVC
-
- super.init(nibName: nil, bundle: nil)
-
- viewControllers = [ masterNC, detailNC ]
-
- // State restoration
- restorationIdentifier = "MainVC"
- masterNC.restorationIdentifier = "MasterNC"
- detailNC.restorationIdentifier = "DetailNC"
- }
-
- required init?(coder aDecoder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-
- override func viewDidLoad() {
- delegate = self
-
- // On iPad, always show both masterVC and detailVC, even in portrait mode, like the Settings app
- preferredDisplayMode = .allVisible
-
- // Create the tunnels manager, and when it's ready, inform tunnelsListVC
- TunnelsManager.create { [weak self] result in
- guard let self = self else { return }
-
- if let error = result.error {
- ErrorPresenter.showErrorAlert(error: error, from: self)
- return
- }
- let tunnelsManager: TunnelsManager = result.value!
-
- self.tunnelsManager = tunnelsManager
- self.tunnelsListVC?.setTunnelsManager(tunnelsManager: tunnelsManager)
-
- tunnelsManager.activationDelegate = self
-
- self.onTunnelsManagerReady?(tunnelsManager)
- self.onTunnelsManagerReady = nil
- }
- }
-}
-
-extension MainViewController: TunnelsManagerActivationDelegate {
- func tunnelActivationAttemptFailed(tunnel: TunnelContainer, error: TunnelsManagerActivationAttemptError) {
- ErrorPresenter.showErrorAlert(error: error, from: self)
- }
-
- func tunnelActivationAttemptSucceeded(tunnel: TunnelContainer) {
- // Nothing to do
- }
-
- func tunnelActivationFailed(tunnel: TunnelContainer, error: TunnelsManagerActivationError) {
- ErrorPresenter.showErrorAlert(error: error, from: self)
- }
-
- func tunnelActivationSucceeded(tunnel: TunnelContainer) {
- // Nothing to do
- }
-}
-
-extension MainViewController {
- func refreshTunnelConnectionStatuses() {
- if let tunnelsManager = tunnelsManager {
- tunnelsManager.refreshStatuses()
- }
- }
-
- func showTunnelDetailForTunnel(named tunnelName: String, animated: Bool) {
- let showTunnelDetailBlock: (TunnelsManager) -> Void = { [weak self] tunnelsManager in
- if let tunnel = tunnelsManager.tunnel(named: tunnelName) {
- let tunnelDetailVC = TunnelDetailTableViewController(tunnelsManager: tunnelsManager, tunnel: tunnel)
- let tunnelDetailNC = UINavigationController(rootViewController: tunnelDetailVC)
- tunnelDetailNC.restorationIdentifier = "DetailNC"
- if let self = self {
- if animated {
- self.showDetailViewController(tunnelDetailNC, sender: self)
- } else {
- UIView.performWithoutAnimation {
- self.showDetailViewController(tunnelDetailNC, sender: self)
- }
- }
- }
- }
- }
- if let tunnelsManager = tunnelsManager {
- showTunnelDetailBlock(tunnelsManager)
- } else {
- onTunnelsManagerReady = showTunnelDetailBlock
- }
- }
-}
-
-extension MainViewController: UISplitViewControllerDelegate {
- func splitViewController(_ splitViewController: UISplitViewController,
- collapseSecondary secondaryViewController: UIViewController,
- onto primaryViewController: UIViewController) -> Bool {
- // On iPhone, if the secondaryVC (detailVC) is just a UIViewController, it indicates that it's empty,
- // so just show the primaryVC (masterVC).
- let detailVC = (secondaryViewController as? UINavigationController)?.viewControllers.first
- let isDetailVCEmpty: Bool
- if let detailVC = detailVC {
- isDetailVCEmpty = (type(of: detailVC) == UIViewController.self)
- } else {
- isDetailVCEmpty = true
- }
- return isDetailVCEmpty
- }
-}