// // InputNumberVC.swift // PDF Reader Pro Edition // // Created by Niehaoyu on 2024/8/27. // import Cocoa import KMComponentLibrary class InputNumberVC: NSViewController, NSTextFieldDelegate { @IBOutlet weak var inputNumberView: ComponentInputNumber! @IBOutlet weak var sizeBox: NSComboBox! @IBOutlet weak var errorBtn: NSButton! @IBOutlet weak var disableButton: NSButton! @IBOutlet weak var prefixBtn: NSButton! @IBOutlet weak var suffixButton: NSButton! @IBOutlet weak var showErrorBtn: NSButton! @IBOutlet weak var isCenterBtn: NSButton! @IBOutlet weak var minSizeField: NSTextField! @IBOutlet weak var maxSizeField: NSTextField! @IBOutlet weak var viewheightConst: NSLayoutConstraint! let properties: ComponentInputNumberProperty = ComponentInputNumberProperty.init(alignment: .left, size: .m, state: .normal, isError: false) override func viewDidLoad() { super.viewDidLoad() // Do view setup here. self.minSizeField.intValue = 0 self.maxSizeField.intValue = 10 inputNumberView.delegate = self self.minSizeField.delegate = self self.maxSizeField.delegate = self self.configSizeValue() self.reloadData() } func reloadData() { if self.sizeBox.indexOfSelectedItem == 0 { properties.size = .m } else { properties.size = .s } properties.isDisabled = self.disableButton.state == .on properties.showPrefix = self.prefixBtn.state == .on properties.showSuffix = self.suffixButton.state == .on if self.isCenterBtn.state == .on { properties.alignment = .center } else { properties.alignment = .left } var minSize = self.minSizeField.intValue var maxSize = self.maxSizeField.intValue if maxSize < 0 { maxSize = 50 } if minSize > maxSize { minSize = 0 } self.minSizeField.stringValue = String(minSize) self.maxSizeField.stringValue = String(maxSize) properties.minSize = Int(minSize) properties.maxSize = Int(maxSize) inputNumberView.properties = properties self.viewheightConst.constant = properties.propertyInfo.viewHeight } @IBAction func sizeAction(_ sender: Any) { self.reloadData() } @IBAction func disableAction(_ sender: Any) { self.reloadData() } @IBAction func prefixAction(_ sender: Any) { self.reloadData() } @IBAction func suffixAction(_ sender: Any) { self.reloadData() } @IBAction func isCenterAction(_ sender: Any) { self.reloadData() } func configSizeValue() { self.reloadData() } override func mouseDown(with event: NSEvent) { super.mouseDown(with: event) self.view.window?.makeFirstResponder(nil) } func controlTextDidBeginEditing(_ obj: Notification) { self.configSizeValue() } func controlTextDidEndEditing(_ obj: Notification) { self.configSizeValue() } } extension InputNumberVC: ComponentInputNumberDelegate { func componentInputNumberDidValueChanged(inputNumber: ComponentInputNumber?) { self.viewheightConst.constant = properties.propertyInfo.viewHeight } }