Bläddra i källkod

adapt port selection view: replace back/reset buttons with cancel/ok

cyberta 5 år sedan
förälder
incheckning
21b0c30895

+ 17 - 29
deltachat-ios/Controller/AccountSetup/PortSettingsController.swift

@@ -6,21 +6,21 @@ class PortSettingsController: UITableViewController {
 
     private var sectionTitle: String?
 
-    var resetButton: UIBarButtonItem!
+    var onSave: ((String) -> Void)?
 
-    var onDismiss: ((String) -> Void)?
+    var okButton: UIBarButtonItem {
+        let button =  UIBarButtonItem(title: String.localized("ok"), style: .done, target: self, action: #selector(okButtonPressed))
+        return button
+    }
 
-    var currentPort: Int {
-        didSet {
-            // activate resetButton once something was changed
-            resetButton.isEnabled = true
-        }
+    var cancelButton: UIBarButtonItem {
+        let button =  UIBarButtonItem(title: String.localized("cancel"), style: .plain, target: self, action: #selector(cancelButtonPressed))
+        return button
     }
 
+    var currentPort: Int
     var selectedIndex: Int?
 
-    let backupValue: Int
-
     var staticCells: [UITableViewCell] {
         return ports.map({
             let cell = UITableViewCell(style: .default, reuseIdentifier: nil)
@@ -46,7 +46,6 @@ class PortSettingsController: UITableViewController {
         for (index, port) in ports.enumerated() where currentPort == port {
             selectedIndex = index
         }
-        backupValue = self.currentPort
         super.init(style: .grouped)
         self.title = sectionTitle
     }
@@ -58,13 +57,8 @@ class PortSettingsController: UITableViewController {
     override func viewDidLoad() {
         super.viewDidLoad()
 
-        resetButton = UIBarButtonItem(title: String.localized("reset"), style: .plain, target: self, action: #selector(resetButtonPressed))
-        navigationItem.rightBarButtonItem = resetButton
-        resetButton.isEnabled = false
-    }
-
-    override func viewWillDisappear(_ animated: Bool) {
-        onDismiss?("\(currentPort)")
+        navigationItem.rightBarButtonItem = okButton
+        navigationItem.leftBarButtonItem = cancelButton
     }
 
     // MARK: - Table view data source
@@ -142,19 +136,13 @@ class PortSettingsController: UITableViewController {
         selectedIndex = index
     }
 
-    @objc private func resetButtonPressed() {
-
-        if let index = ports.index(of: backupValue) {
-            selectItem(at: index)
-        } else {
-            selectItem(at: nil)
-        }
-        self.currentPort = backupValue
-        customCell.textField.placeholder = "\(currentPort)"
-        customCell.textField.resignFirstResponder()
-        customCell.textField.text = nil // will display currentValue as placeholder
+    @objc private func okButtonPressed() {
+           onSave?("\(currentPort)")
+           navigationController?.popViewController(animated: true)
+       }
 
-        tableView.reloadData()
+    @objc private func cancelButtonPressed() {
+        navigationController?.popViewController(animated: true)
     }
 
 }

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

@@ -204,7 +204,7 @@ class AccountSetupCoordinator: Coordinator {
         let portSettingsController = PortSettingsController(sectionTitle: String.localized("login_imap_port"),
                                                             ports: [143, 993],
                                                             currentPort: currentPort)
-        portSettingsController.onDismiss = {
+        portSettingsController.onSave = {
             port in
             DcConfig.mailPort = port
         }
@@ -223,7 +223,7 @@ class AccountSetupCoordinator: Coordinator {
         let portSettingsController = PortSettingsController(sectionTitle: String.localized("login_smtp_port"),
                                                             ports: [25, 465, 587],
                                                             currentPort: currentPort)
-        portSettingsController.onDismiss = {
+        portSettingsController.onSave = {
             port in
             DcConfig.sendPort = port
         }