Jelajahi Sumber

add all-media tab

B. Petersen 2 tahun lalu
induk
melakukan
fc6dfeb8a7

+ 19 - 3
deltachat-ios/Coordinator/AppCoordinator.swift

@@ -9,8 +9,9 @@ class AppCoordinator {
     private let window: UIWindow
     private let dcAccounts: DcAccounts
     private let qrTab = 0
-    public  let chatsTab = 1
-    private let settingsTab = 2
+    public  let allMediaTab = 1 // there are two enums, here and at AppStateRestorer (this is error prone and could probably be merged)
+    public  let chatsTab = 2
+    private let settingsTab = 3
 
     private let appStateRestorer = AppStateRestorer.shared
 
@@ -23,11 +24,12 @@ class AppCoordinator {
     // MARK: - tabbar view handling
     lazy var tabBarController: UITabBarController = {
         let qrNavController = createQrNavigationController()
+        let allMediaNavController = createAllMediaNavigationController()
         let chatsNavController = createChatsNavigationController()
         let settingsNavController = createSettingsNavigationController()
         let tabBarController = UITabBarController()
         tabBarController.delegate = appStateRestorer
-        tabBarController.viewControllers = [qrNavController, chatsNavController, settingsNavController]
+        tabBarController.viewControllers = [qrNavController, allMediaNavController, chatsNavController, settingsNavController]
         tabBarController.tabBar.tintColor = DcColors.primary
         return tabBarController
     }()
@@ -40,6 +42,19 @@ class AppCoordinator {
         return nav
     }
 
+    private func createAllMediaNavigationController() -> UINavigationController {
+        let root = QrPageController(dcAccounts: dcAccounts)
+        let nav = UINavigationController(rootViewController: root)
+        let settingsImage: UIImage?
+        if #available(iOS 16.0, *) {
+            settingsImage = UIImage(systemName: "photo.stack")
+        } else {
+            settingsImage = UIImage(named: "report_card") // TODO: if image is settled, add it to assets
+        }
+        nav.tabBarItem = UITabBarItem(title: String.localized("menu_all_media"), image: settingsImage, tag: chatsTab)
+        return nav
+    }
+
     private func createChatsNavigationController() -> UINavigationController {
         let root = ChatListController(dcContext: dcAccounts.getSelected(), dcAccounts: dcAccounts, isArchive: false)
         let nav = UINavigationController(rootViewController: root)
@@ -247,6 +262,7 @@ class AppCoordinator {
         }
 
         self.tabBarController.setViewControllers([createQrNavigationController(),
+                                                  createAllMediaNavigationController(),
                                                   createChatsNavigationController(),
                                                   createSettingsNavigationController()], animated: false)
         presentTabBarController()

+ 5 - 4
deltachat-ios/Handler/AppStateRestorer.swift

@@ -2,7 +2,7 @@ import UIKit
 
 class AppStateRestorer: NSObject, UITabBarControllerDelegate {
 
-    private let lastActiveTabKey = "last_active_tab"
+    private let lastActiveTabKey = "last_active_tab2"
     private let lastActiveChatId = "last_active_chat_id"
     private let offsetKey = 10
 
@@ -10,8 +10,9 @@ class AppStateRestorer: NSObject, UITabBarControllerDelegate {
 
     private enum Tab: Int {
         case qrTab = 10
-        case chatTab = 11
-        case settingsTab = 12
+        case allMediaTab = 11 // there are two enums, here and at AppCoordinator (this is error prone and could probably be merged)
+        case chatTab = 12
+        case settingsTab = 13
         case firstLaunch = 0
     }
 
@@ -29,7 +30,7 @@ class AppStateRestorer: NSObject, UITabBarControllerDelegate {
         }
 
         switch lastTab {
-        case .qrTab, .chatTab, .settingsTab:
+        case .allMediaTab, .qrTab, .chatTab, .settingsTab:
             return lastTab.rawValue - offsetKey
         case .firstLaunch:
             return -1