121 lines
4.1 KiB
Swift
121 lines
4.1 KiB
Swift
//
|
|
// 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("")
|
|
}
|
|
}
|
|
}
|