//
//  KMCropSettingWindowController.swift
//  PDF Reader Pro
//
//  Created by tangchao on 2022/12/30.
//

import Cocoa

typealias KMCropSettingWindowControllerItemClick = (_ index: Int) -> ()
class KMCropSettingWindowController: NSWindowController {

    @IBOutlet weak var titleLabel: NSTextField!
    @IBOutlet weak var pageRangeBox: NSBox!
    @IBOutlet weak var pageSizeBox: NSBox!
    @IBOutlet weak var applyButton: NSButton!
    @IBOutlet weak var cancelButton: NSButton!
    
    private var pagePageView = KMConvertPageRangeSettingItemView.createFromNib()
    private var pageSizeView = KMCropSettingPageSizeView()
    
    var itemClick: KMCropSettingWindowControllerItemClick!
    
    var pageCount: Int = 0
    var pageRangeIndex: Int = 0
    var pageRangePages: Array<Int> = []
    var pageSize: String = "None"
    
    override func windowDidLoad() {
        super.windowDidLoad()

        self.titleLabel.stringValue = "裁剪设置"
        
        let pageRangeView = self.pagePageView
        pageRangeView?.frame = self.pageRangeBox.contentView!.bounds
        pageRangeView?.autoresizingMask = NSView.AutoresizingMask(rawValue: 18)
        self.pageRangeBox.contentView?.addSubview(pageRangeView!)
        pageRangeView!.pageSizeComboBox.removeAllItems()
        pageRangeView!.pageSizeComboBox.addItems(withObjectValues: ["当前页面","全部页面", "奇数页面", "偶数页面", "自定义页面"])
        pageRangeView!.pageSizeComboBox.selectItem(at: 0)
        
        pageRangeView?.isTextDidEndCallback = true
        
        pageRangeView?.itemClick = { [weak self] index, _ in
            
            self?.pageRangeIndex = index
        }
        
        pageRangeView?.textDidEndEditingCallback = {
            [self] (textString: String) in

            let array = KMPageRangeTools.findSelectPage(pageRangeString: textString, pageCount: self.pageCount)
            if (array.count <= 0) {
                let alert = NSAlert()
                alert.alertStyle = .warning
                alert.messageText = NSLocalizedString("Invalid page range or the page number is out of range. Please try again.", comment: "")
                alert.runModal()
                return
            }

            self.pageRangePages.removeAll()
            for i in array {
                self.pageRangePages.append(i)
            }
        }
        
        let pageSizeView = self.pageSizeView
        pageSizeView.frame = self.pageSizeBox.contentView!.bounds
        pageSizeView.autoresizingMask = NSView.AutoresizingMask(rawValue: 18)
        self.pageSizeBox.contentView?.addSubview(pageSizeView)
        pageSizeView.itemClick = {
            (index: Int, value: Any) in
            
            self.pageSize = value as! String
        }
        
        cancelButton.title = NSLocalizedString("取消", comment: "")
        cancelButton.isBordered = false
        cancelButton.wantsLayer = true
        cancelButton.layer?.borderWidth = 1
        cancelButton.layer?.borderColor = NSColor.black.cgColor
        cancelButton.layer?.cornerRadius = 4
        cancelButton.target = self
        cancelButton.action = #selector(cancelButtonAction)
        
        applyButton.title = NSLocalizedString("应用", comment: "")
        applyButton.isBordered = false
        applyButton.wantsLayer = true
        applyButton.layer?.cornerRadius = 4
        applyButton.target = self
        applyButton.action = #selector(applyButtonAction)
        applyButton.layer?.backgroundColor = NSColor.black.cgColor
        applyButton.attributedTitle = NSMutableAttributedString(string: applyButton.title, attributes: [NSAttributedString.Key.foregroundColor : NSColor.white])
        
    }
    
    @objc func cancelButtonAction() {
        guard let callback = self.itemClick else {
            return
        }
        
        callback(1)
    }
    
    @objc func applyButtonAction() {
        guard let callback = self.itemClick else {
            return
        }
        
        callback(2)
    }
    
}