瀏覽代碼

completed appCoordinator - added subCoordinators (that do nothing yet) to every topviewcontroller

Bastian van de Wetering 6 年之前
父節點
當前提交
07d6776f78

+ 85 - 5
deltachat-ios/AppCoordinator.swift

@@ -8,6 +8,7 @@
 
 import UIKit
 
+/*
 protocol CoordinatorDeprecated {
   func setupViewControllers(window: UIWindow)
 }
@@ -35,6 +36,8 @@ class AppCoordinatorDeprecated: CoordinatorDeprecated {
   }
 }
 
+*/
+
 protocol Coordinator: class {
 	var rootViewController: UIViewController { get }
 }
@@ -51,7 +54,7 @@ class AppCoordinator: NSObject, Coordinator, UITabBarControllerDelegate {
 
 	private lazy var tabBarController: UITabBarController = {
 		let tabBarController = UITabBarController()
-		tabBarController.viewControllers = [settingsController]
+		tabBarController.viewControllers = [contactListController, mailboxController, profileController, chatListController, settingsController]
 		// put viewControllers here
 		tabBarController.delegate = self
 		tabBarController.tabBar.tintColor = DCColors.primary
@@ -60,9 +63,49 @@ class AppCoordinator: NSObject, Coordinator, UITabBarControllerDelegate {
 	}()
 
 	// MARK: viewControllers
-	private lazy var contactsController: ContactListController = {
+
+	private lazy var contactListController: UIViewController = {
 		let controller = ContactListController()
-		return controller
+		let nav = NavigationController(rootViewController: controller)
+		let settingsImage = UIImage(named: "contacts")
+		nav.tabBarItem = UITabBarItem(title: "Contacts", image: settingsImage, tag: 4)
+		let coordinator = ContactListCoordinator(rootViewController: nav)
+		self.childCoordinators.append(coordinator)
+		controller.coordinator = coordinator
+		return nav
+	}()
+
+	private lazy var mailboxController: UIViewController = {
+		let controller = ChatListController()
+		let nav = NavigationController(rootViewController: controller)
+		let settingsImage = UIImage(named: "message")
+		nav.tabBarItem = UITabBarItem(title: "Mailbox", image: settingsImage, tag: 4)
+		let coordinator = ChatListCoordinator(rootViewController: nav)
+		self.childCoordinators.append(coordinator)
+		controller.coordinator = coordinator
+		return nav
+	}()
+
+	private lazy var profileController: UIViewController = {
+		let controller = ProfileViewController()
+		let nav = NavigationController(rootViewController: controller)
+		let settingsImage = UIImage(named: "report_card")
+		nav.tabBarItem = UITabBarItem(title: "My Profile", image: settingsImage, tag: 4)
+		let coordinator = ProfileCoordinator(rootViewController: nav)
+		self.childCoordinators.append(coordinator)
+		controller.coordinator = coordinator
+		return nav
+	}()
+
+	private lazy var chatListController: UIViewController = {
+		let controller = ChatListController()
+		let nav = NavigationController(rootViewController: controller)
+		let settingsImage = UIImage(named: "chat")
+		nav.tabBarItem = UITabBarItem(title: "Chats", image: settingsImage, tag: 4)
+		let coordinator = ChatListCoordinator(rootViewController: nav)
+		self.childCoordinators.append(coordinator)
+		controller.coordinator = coordinator
+		return nav
 	}()
 
 	private lazy var settingsController: UIViewController = {
@@ -84,7 +127,11 @@ class AppCoordinator: NSObject, Coordinator, UITabBarControllerDelegate {
 	}
 
 	public func start() {
-		tabBarController.selectedIndex = 0
+		self.showTab(index: 3)
+	}
+
+	public func showTab(index: Int) {
+		tabBarController.selectedIndex = index
 	}
 
 	public func presentLoginController() {
@@ -94,11 +141,44 @@ class AppCoordinator: NSObject, Coordinator, UITabBarControllerDelegate {
 
 }
 
-class SettingsCoordinator: Coordinator {
+class ContactListCoordinator: Coordinator {
 	var rootViewController: UIViewController
 
 	init(rootViewController: UIViewController) {
 		self.rootViewController = rootViewController
 	}
+}
 
+class ChatViewCoordinator: Coordinator {
+	var rootViewController: UIViewController
+
+	init(rootViewController: UIViewController) {
+		self.rootViewController = rootViewController
+	}
+}
+
+class ProfileCoordinator: Coordinator {
+	var rootViewController: UIViewController
+
+	init(rootViewController: UIViewController) {
+		self.rootViewController = rootViewController
+	}
+}
+
+class ChatListCoordinator: Coordinator {
+	var rootViewController: UIViewController
+
+	init(rootViewController: UIViewController) {
+		self.rootViewController = rootViewController
+	}
+}
+
+class SettingsCoordinator: Coordinator {
+	var rootViewController: UIViewController
+
+	init(rootViewController: UIViewController) {
+		self.rootViewController = rootViewController
+	}
 }
+
+

+ 1 - 1
deltachat-ios/AppDelegate.swift

@@ -27,7 +27,7 @@ enum ApplicationState {
 class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {
 
 	var appCoordinator: AppCoordinator!
-  static let appCoordinatorDeprecated = AppCoordinatorDeprecated()
+  // static let appCoordinatorDeprecated = AppCoordinatorDeprecated()
 	static var progress: Float = 0	// TODO: delete
   static var lastErrorDuringConfig: String?
   private var backgroundTask: UIBackgroundTaskIdentifier = .invalid

+ 3 - 0
deltachat-ios/ChatViewController.swift

@@ -14,6 +14,9 @@ import QuickLook
 import UIKit
 
 class ChatViewController: MessagesViewController {
+
+	weak var coordinator: ChatViewCoordinator?
+
   let outgoingAvatarOverlap: CGFloat = 17.5
   let loadCount = 30
 

+ 2 - 0
deltachat-ios/Controller/AppTabBarController.swift

@@ -8,6 +8,7 @@
 
 import UIKit
 
+/*
 // TODO: delete
 class AppTabBarController: UITabBarController {
   override func viewDidLoad() {
@@ -53,3 +54,4 @@ class AppTabBarController: UITabBarController {
     tabBar.tintColor = DCColors.primary
   }
 }
+*/

+ 1 - 0
deltachat-ios/TopViews/ChatListController.swift

@@ -9,6 +9,7 @@
 import UIKit
 
 class ChatListController: UIViewController {
+	weak var coordinator: ChatListCoordinator?
   var chatList: MRChatList?
 
   lazy var chatTable: UITableView = {

+ 3 - 0
deltachat-ios/TopViews/ContactListController.swift

@@ -9,6 +9,9 @@
 import UIKit
 
 class ContactListController: UITableViewController {
+
+	weak var coordinator: ContactListCoordinator?
+
   let contactCellReuseIdentifier = "xyz"
   var contactIds: [Int] = Utils.getContactIds()
   var contactIdsForGroup: Set<Int> = []

+ 2 - 0
deltachat-ios/TopViews/ProfileViewController.swift

@@ -9,6 +9,8 @@
 import UIKit
 
 class ProfileViewController: UITableViewController {
+	weak var coordinator: ProfileCoordinator?
+
   var contact: MRContact? {
     // This is nil if we do not have an account setup yet
     if !MRConfig.configured {

+ 3 - 1
deltachat-ios/events.swift

@@ -7,6 +7,7 @@
 //
 
 import UserNotifications
+import UIKit
 
 let dcNotificationChanged = Notification.Name(rawValue: "MrEventMsgsChanged")
 let dcNotificationStateChanged = Notification.Name(rawValue: "MrEventStateChanged")
@@ -91,7 +92,8 @@ public func callbackSwift(event: CInt, data1: CUnsignedLong, data2: CUnsignedLon
       if done {
         UserDefaults.standard.set(true, forKey: Constants.Keys.deltachatUserProvidedCredentialsKey)
         UserDefaults.standard.synchronize()
-        AppDelegate.appCoordinatorDeprecated.setupInnerViewControllers()
+				let appDelegate = UIApplication.shared.delegate as! AppDelegate
+				appDelegate.appCoordinator?.showTab(index: 3)
         AppDelegate.lastErrorDuringConfig = nil
       }
     }