//
//  KMBaseTextFieldPresenter.swift
//  PDF Reader Pro
//
//  Created by lizhe on 2022/12/23.
//

import Cocoa

class KMBaseTextFieldPresenter: NSObject {
    var model: KMBaseTextFieldModel = KMBaseTextFieldModel()
    var delegate: KMBaseTextFieldPresenterDelegate?
    func initPresenter(delegate: KMBaseTextFieldPresenterDelegate, model: KMBaseTextFieldModel) {
        self.delegate = delegate
        self.model = model
        if self.delegate != nil {
            self.delegate?.valueDidChange(presenter: self, model: self.model)
        }
    }
}

extension KMBaseTextFieldPresenter: KMBaseTextFieldPresenterProtocol {
    func changeValue(value: String) {
        let string = value.replacingOccurrences(of: model.specialChart, with: "")
        if model.onlyNumber {
            if model.isCanNull {
                if string == "" {
                    self.model.value = ""
                } else {
                    self.model.value = String(min(max(Int(string) ?? 0, model.minValue),model.maxValue))
                }
            } else {
                self.model.value = String(min(max(Int(string) ?? 0, model.minValue),model.maxValue))
            }
        }  else {
            self.model.value = string
        }

        if self.delegate != nil {
            self.delegate?.valueDidChange(presenter: self, model: self.model)
        }
    }
}


protocol KMBaseTextFieldPresenterDelegate: AnyObject {
    func valueDidChange(presenter: KMBaseTextFieldPresenter, model: KMBaseTextFieldModel)
}

protocol KMBaseTextFieldPresenterProtocol: AnyObject {
    func changeValue(value: String)
}

protocol KMBaseTextFieldPresenterPrivate {}