//
//  KMPrintBottomView.swift
//  PDF Reader Pro
//
//  Created by lizhe on 2022/12/9.
//

import Cocoa

class KMPrintBottomView: KMBaseXibView {
    @IBOutlet weak var printerButton: NSButton!
    
    @IBOutlet weak var savePDFButton: NSButton!
    
    @IBOutlet weak var cancelButton: NSButton!
    @IBOutlet weak var printButton: NSButton!
    @IBOutlet weak var posterButton: NSButton!
    @IBOutlet weak var multipleButton: NSButton!
    @IBOutlet weak var bookletButton: NSButton!
    
    @IBOutlet weak var cancelButtonRightConstraint: NSLayoutConstraint!
    
    var delegate: KMPrintBottomViewDelegate?
    var type: KMPrintModelType = .size {
        didSet {
            self.updateButtonState()
        }
    }
//    lazy var presenter: KMImageToPDFChoosePresenter! = KMImageToPDFChoosePresenter()
//    lazy var OCRPresenter: KMOCRPresenter! = KMOCRPresenter()
//    lazy var data: KMImageToPDFChooseModel! = KMImageToPDFChooseModel()
    
    deinit {
//        self.delegate = nil
    }

    override func draw(_ dirtyRect: NSRect) {
        super.draw(dirtyRect)

        // Drawing code here.
        
    }
    
    override func setup() {
        self.updateButtonState()
        
        self.printButton.title = NSLocalizedString("Printer", comment: "")
        self.cancelButton.title = NSLocalizedString("Cancel", comment: "")
        self.savePDFButton.title = NSLocalizedString("Save", comment: "")
         
        self.posterButton.title = NSLocalizedString("Poster", comment: "")
        self.bookletButton.title = NSLocalizedString("Booklet", comment: "")
        self.multipleButton.title = NSLocalizedString("Multiple", comment: "")

    }
    
    //刷新界面UI 和 数据
    override func reloadData() {
        super.reloadData()
//        let exporkOptions = self.data.options ?? .PDF
//        let exportType = self.data.exportPDFType ?? .new
//
//        if exporkOptions.contains(.PDF) {
//
//        }
//
//        if exporkOptions.contains(.OCR) {
//            self.selectLanguageButton.isEnabled = true
//            self.saveTXTButton.isEnabled = true
//        } else {
//            self.selectLanguageButton.isEnabled = false
//            self.saveTXTButton.isEnabled = false
//        }
//
//        if exportType == .new {
//            self.newPDFButton.state = .on
//            self.mergePDFButton.isEnabled = true
//
//            self.insertPDFButton.state = .off
//            self.exportSelectFileButton.isEnabled = false
//        } else if exportType == .insert {
//            self.newPDFButton.state = .off
//            self.mergePDFButton.isEnabled = false
//
//            self.insertPDFButton.state = .on
//            self.exportSelectFileButton.isEnabled = true
//        }
//
//        self.selectLanguageButton.title = self.data.OCRModel.languageDic[KMGOCRLanguageStringKey] as! String
//
//        self.exportSelectFileButton.title = self.data.insertFilePath
//
    }
    
    func updateButtonState() {
        switch type {
        case .size:
            self.cancelButtonRightConstraint.constant = 20
            
            self.savePDFButton.isHidden = true
            self.posterButton.isHidden = false
            self.multipleButton.isHidden = false
            self.bookletButton.isHidden = false
        case .poster, .multipage, .pamphlet:
            self.cancelButtonRightConstraint.constant = 109
            
            self.savePDFButton.isHidden = false
            self.posterButton.isHidden = true
            self.multipleButton.isHidden = true
            self.bookletButton.isHidden = true
        default:
            break
        }
    }
    
    
    
    @IBAction func printerAction(_ sender: Any) {
        if self.delegate != nil {
            self.delegate?.printerAction()
        }
    }
    
    @IBAction func cancelAction(_ sender: Any) {
        if self.delegate != nil {
            self.delegate?.cancelAction()
        }
    }
    
    @IBAction func printAction(_ sender: Any) {
        if self.delegate != nil {
            self.delegate?.printAction()
        }
    }
    
    @IBAction func savePDFAction(_ sender: Any) {
        if self.delegate != nil {
            self.delegate?.savePDFAction()
        }
    }
    
    @IBAction func bookletButtonAction(_ sender: Any) {
        self.delegate?.bookletAction()
    }
    
    @IBAction func multipleButtonAction(_ sender: Any) {
        self.delegate?.multipageAction()
    }
    
    @IBAction func poseterButtonAction(_ sender: Any) {
        self.delegate?.posterAction()
    }
}

protocol KMPrintBottomViewDelegate {
    func printerAction()
    func cancelAction()
    func printAction()
    func savePDFAction()
    
    func posterAction()
    func multipageAction()
    func bookletAction()
}