// // CCCPViewTokenSelector.swift // List // // Created by Saveliy Stavitsky on 7/20/20. // Copyright © 2020 Igor Danich. All rights reserved. // import UIKit protocol CCCPViewTokenSelectorDelegate: UIViewController { func stateChanged() } class CCCPViewTokenSelector: CommonViewCustom { @IBOutlet private var backgroundView: UIView! @IBOutlet var countSectionStackView: UIStackView! @IBOutlet var titleLabel: UILabel! @IBOutlet private var removeButton: UIButton! @IBOutlet private var countTextField: CommonTextField1! @IBOutlet private var addButton: UIButton! @IBOutlet var currencyPickerSectionStackView: UIStackView! @IBOutlet var currencySectionImageView: UIImageView! @IBOutlet var secondTitleLabel: UILabel! @IBOutlet var currencyButton: UIButton! @IBOutlet var balanceStackView: UIStackView! @IBOutlet private var currencyBalance: UILabel! @IBOutlet var notesSectionStackView: UIStackView! @IBOutlet var notesTitleLabel: UILabel! @IBOutlet var notesSectionSubStackView: UIStackView! weak var parentViewController: CCCPViewTokenSelectorDelegate? var coef: Decimal? var tokens: [Network.Model.Token] = [] { didSet { index = -1 } } var index = -1 { didSet { parentViewController?.stateChanged() countTextField.text = "\(count)" setupButtonsApearance() } } var selectedToken: Network.Model.Token? { index >= 0 && index < tokens.count ? tokens[index] : nil } var maxTokens: Int { guard let coef = coef else { return selectedToken?.isCashContract ?? false ? NSDecimalNumber(decimal: selectedToken?.amount ?? 0.0).intValue : 0 } return selectedToken?.isListContract ?? false ? NSDecimalNumber(decimal: (selectedToken?.amount ?? 0) / coef).intValue : NSDecimalNumber(decimal: selectedToken?.amount ?? 0).intValue } // private(set) var count = 0 { didSet { parentViewController?.stateChanged() countTextField.text = "\(count)" setupButtonsApearance() } } override func setup() { super.setup() tokens = [] backgroundView.layer.shadowColor = Asset.lightGray.color.cgColor } override func layoutSubviews() { super.layoutIfNeeded() backgroundView.layer.shadowPath = UIBezierPath(roundedRect: backgroundView.bounds, cornerRadius: 20.0).cgPath } @IBAction private func removeCount(_ sender: Any) { if count > 0 { count -= 1 } } @IBAction private func addCount(_ sender: Any) { if count < maxTokens { count += 1 } } @IBAction private func currencyPressed(_ sender: Any) { let currencyPicker = CommonViewPopUpSelection( list: tokens.map({ $0.amount > 0 ? "\($0)" : $0.symbol }), selectedIndex: index, selection: { [weak self] in self?.index = $0 self?.parentViewController?.dismiss(animated: true, completion: nil) } ) // let viewController = CommonViewControllerPopUp(title: L10n.Cccp.chooseCurrency, // view: currencyPicker, // completion: nil) // parentViewController?.present(viewController, animated: true, completion: nil) } private func setupButtonsApearance() { addButton.tintColor = count == maxTokens ? Asset.lightGray.color : Asset.dark.color addButton.isEnabled = count != maxTokens removeButton.tintColor = count == 0 ? Asset.lightGray.color : Asset.dark.color removeButton.isEnabled = count != 0 if let token = selectedToken { balanceStackView.isHidden = !(token.amount > 0) currencyButton.setTitle(token.symbol, for: .normal) currencyBalance.text = L10n.Wallet.Send.balance(token.description) } else { currencyButton.setTitle("--", for: .normal) currencyBalance.text = L10n.Wallet.Send.balance("") } } }