// // AddFolderViewController.swift // NetNewsWire // // Created by Maurice Parker on 4/16/19. // Copyright © 2019 Ranchero Software, LLC. All rights reserved. // import UIKit import Account import RSCore class AddFolderViewController: UITableViewController, AddContainerViewControllerChild { @IBOutlet weak var nameTextField: UITextField! @IBOutlet weak var accountLabel: UILabel! @IBOutlet weak var accountPickerView: UIPickerView! private var accounts: [Account]! weak var delegate: AddContainerViewControllerChildDelegate? override func viewDidLoad() { super.viewDidLoad() accounts = AccountManager.shared.sortedAccounts accountLabel.text = (accounts[0] as DisplayNameProvider).nameForDisplay accountPickerView.dataSource = self accountPickerView.delegate = self // I couldn't figure out the gap at the top of the UITableView, so I took a hammer to it. tableView.contentInset = UIEdgeInsets(top: -28, left: 0, bottom: 0, right: 0) NotificationCenter.default.addObserver(self, selector: #selector(textDidChange(_:)), name: UITextField.textDidChangeNotification, object: nameTextField) } func cancel() { delegate?.processingDidEnd() } func add() { let account = accounts[accountPickerView.selectedRow(inComponent: 0)] if let folderName = nameTextField.text { account.ensureFolder(with: folderName) } delegate?.processingDidEnd() } @objc func textDidChange(_ note: Notification) { delegate?.readyToAdd(state: !(nameTextField.text?.isEmpty ?? false)) } } extension AddFolderViewController: UIPickerViewDataSource, UIPickerViewDelegate { func numberOfComponents(in pickerView: UIPickerView) ->Int { return 1 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return accounts.count } func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { return (accounts[row] as DisplayNameProvider).nameForDisplay } func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { accountLabel.text = (accounts[row] as DisplayNameProvider).nameForDisplay } }