//
//  KMConvertImageSettingView.swift
//  PDF Reader Pro
//
//  Created by tangchao on 2022/12/6.
//

class KMConvertImageSettingView: KMConvertSettingView {
    @IBOutlet weak var fileTypeTitleLabel: NSTextField!
    @IBOutlet weak var formatBox: NSBox!
    @IBOutlet weak var pageRangeBox: NSBox!
    
    @IBOutlet weak var dpiTitleLabel: NSTextField!
    @IBOutlet weak var dpiSelectBox: NSBox!
    
    private var formartView: KMDesignSelect?
    private var dpiVC: KMDesignSelect?
    
    var selectedFormatIndex = 0
    var selectedResolutionIndex = 3
    
    override func initSubViews() {
        super.initSubViews()
        
        self.formartView = KMDesignSelect.init(withType: .Combox)
        self.formatBox.contentView = self.formartView!.view
        
        self.formartView = KMDesignSelect.init(withType: .Combox)
        self.formatBox.contentView = self.formartView!.view
        self.formartView?.removeAllItems()
        self.formartView?.addItems(withObjectValues: ["JPEG","JPG","PNG","GIF","TIFF","TGA","BMP","JPEG-2000"])
        self.formartView?.selectItem(at: 0)
        self.formartView?.editable = false //默认属性,初始化可不设置
        self.formartView?.delete = self
        self.formartView?.updateUI()
        
        self.dpiVC = KMDesignSelect(withType: .Combox)
        self.dpiSelectBox.contentView = self.dpiVC?.view
        self.dpiVC?.removeAllItems()
        self.dpiVC?.addItems(withObjectValues:  ["50 dpi", "72 dpi", "96 dpi", "150 dpi", "300 dpi", "600 dpi"])
        self.dpiVC?.selectItem(at: self.selectedResolutionIndex)
        self.dpiVC?.delete = self
        self.dpiVC?.updateUI()
        
        self.tipView?.km_add_left_constraint(constant: 8)
        self.tipView?.km_add_top_constraint(equalTo: self.pageRangeBox, attribute: .bottom, constant: -5)
        self.tipView?.km_add_right_constraint()
        self.tipView?.km_add_height_constraint(constant: 16+20+16)
    }
    
    override func initDefaultVlaue() {
        self.formatBox.fillColor = .clear
        
        self.fileTypeTitleLabel.stringValue = NSLocalizedString("Format", comment: "")
        self.fileTypeTitleLabel.textColor = NSColor.km_init(hex: "#616469")
        self.fileTypeTitleLabel.font = .SFProTextSemiboldFont(12)
        
        self.formatBox.fillColor = .clear
        
        self.dpiTitleLabel.stringValue = NSLocalizedString("Resolution", comment: "")
        self.dpiTitleLabel.textColor = NSColor.km_init(hex: "#616469")
        self.dpiTitleLabel.font = .SFProTextBoldFont(12)
    }
    
    override func viewDidMoveToWindow() {
        super.viewDidMoveToWindow()
        
        if (self.pageRangeItemView == nil) {
            self.pageRangeItemView = KMConvertPageRangeSettingItemView.createFromNib()
            self.pageRangeBox.contentView = self.pageRangeItemView
            
//            self.tipView?.km_add_left_constraint(constant: 8)
//            self.tipView?.km_add_top_constraint(equalTo: self.pageRangeBox, attribute: .bottom, constant: -5)
//            self.tipView?.km_add_right_constraint()
//            self.tipView?.km_add_height_constraint(constant: 16+20+16)
        }
        self.pageRangeItemView?.pageCount = self.pageCount
    }
    
    override func getPageRangeString() -> String {
        if let view = self.pageRangeItemView {
            return view.pageRangeValue
        }
        return ""
    }
}

extension KMConvertImageSettingView: KMSelectPopButtonDelegate {    
    func km_comboBoxSelectionDidChange(_ obj: KMDesignSelect) {
        if (obj.isEqual(to: self.formartView)) {
            guard let index = self.formartView?.indexOfSelectedItem, index >= 0 else {
                self.selectedFormatIndex = 0
                return
            }
            self.selectedFormatIndex = index
            
            if (index == 0 || index == 2) { // JPEG & PNG
                self.dpiVC?.enabled = true
            } else {
                self.dpiVC?.enabled = false
            }
        } else if (obj.isEqual(to: self.dpiVC)) {
            if let index = self.dpiVC?.indexOfSelectedItem {
                self.selectedResolutionIndex = max(index, 0)
            }
        }
    }
}