Эх сурвалжийг харах

implemended segment control interaction

nayooti 5 жил өмнө
parent
commit
3fdde4040b

+ 56 - 15
deltachat-ios/Controller/QRPageController.swift

@@ -1,9 +1,23 @@
 import UIKit
 import UIKit
+import DcCore
 
 
 class QRPageController: UIPageViewController {
 class QRPageController: UIPageViewController {
 
 
+    private let dcContext: DcContext
+
     var selectedIndex: Int = 0
     var selectedIndex: Int = 0
 
 
+    private lazy var qrController: QrViewController = {
+        let controller = QrViewController(dcContext: dcContext)
+        return controller
+    }()
+
+    private lazy var qrCameraController: UIViewController = {
+        let vc = UIViewController()
+        vc.view.backgroundColor = .green
+        return vc
+    }()
+
     private lazy var qrSegmentControl: UISegmentedControl = {
     private lazy var qrSegmentControl: UISegmentedControl = {
         let control = UISegmentedControl(items: ["Show Left", "Show Right"])
         let control = UISegmentedControl(items: ["Show Left", "Show Right"])
         control.tintColor = DcColors.primary
         control.tintColor = DcColors.primary
@@ -11,35 +25,62 @@ class QRPageController: UIPageViewController {
         return control
         return control
     }()
     }()
 
 
+    init(dcContext: DcContext) {
+        self.dcContext = dcContext
+        super.init(transitionStyle: .scroll, navigationOrientation: .horizontal, options: [:])
+    }
+
+    required init?(coder: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
+    }
+
+    // MARK: - lifecycle
     override func viewDidLoad() {
     override func viewDidLoad() {
         super.viewDidLoad()
         super.viewDidLoad()
-        setupSubviews()
-        view.makeBorder()
         dataSource = self
         dataSource = self
-    }
-
-    private func setupSubviews() {
-        view.addSubview(qrSegmentControl)
-        qrSegmentControl.translatesAutoresizingMaskIntoConstraints = false
-        qrSegmentControl.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 0).isActive = true
-        qrSegmentControl.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 15).isActive = true
+        delegate = self
+        navigationItem.titleView = qrSegmentControl
+        setViewControllers(
+            [qrController],
+            direction: .forward,
+            animated: true,
+            completion: nil
+        )
     }
     }
 
 
     // MARK: - actions
     // MARK: - actions
     @objc private func qrSegmentControlChanged(_ sender: UISegmentedControl) {
     @objc private func qrSegmentControlChanged(_ sender: UISegmentedControl) {
-
+        if sender.selectedSegmentIndex == 0 {
+            setViewControllers([qrController], direction: .reverse, animated: true, completion: nil)
+        } else {
+            setViewControllers([qrCameraController], direction: .forward, animated: true, completion: nil)
+        }
     }
     }
 }
 }
 
 
-extension QRPageController: UIPageViewControllerDataSource {
+// MARK: - UIPageViewControllerDataSource, UIPageViewControllerDelegate
+extension QRPageController: UIPageViewControllerDataSource, UIPageViewControllerDelegate {
     func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
     func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
-        return UIViewController()
+        if viewController is QrViewController {
+            return nil
+        }
+        return qrController
     }
     }
 
 
     func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
     func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
-        return UIViewController()
+        if viewController is QrViewController {
+            return qrCameraController
+        }
+        return nil
     }
     }
 
 
-
+    func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
+        if completed {
+            if previousViewControllers.first is QrViewController {
+                qrSegmentControl.selectedSegmentIndex = 1
+            } else {
+                qrSegmentControl.selectedSegmentIndex = 0
+            }
+        }
+    }
 }
 }
-

+ 1 - 1
deltachat-ios/Coordinator/AppCoordinator.swift

@@ -44,7 +44,7 @@ class AppCoordinator: NSObject, Coordinator {
     // MARK: viewControllers
     // MARK: viewControllers
 
 
     private lazy var qrPageController: UIViewController = {
     private lazy var qrPageController: UIViewController = {
-        let pageController = QRPageController()
+        let pageController = QRPageController(dcContext: dcContext)
         let dummyVC = UIViewController()
         let dummyVC = UIViewController()
         dummyVC.view.backgroundColor = .green
         dummyVC.view.backgroundColor = .green
         let nav = UINavigationController(rootViewController: pageController)
         let nav = UINavigationController(rootViewController: pageController)