//
//  KMPageEditInsertCustomPageWindowController.swift
//  PDF Master
//
//  Created by tangchao on 2023/1/11.
//

import Cocoa

typealias KMPageEditInsertCustomPageItemClick = (_ index: Int) -> ()
class KMPageEditInsertCustomPageWindowController: NSWindowController {
    
    @IBOutlet weak var titleLabel: NSTextField!
    
    @IBOutlet weak var typeBox: NSBox!
    @IBOutlet weak var pageSizeBox: NSBox!
    @IBOutlet weak var directionBox: NSBox!
    
    var typeView = KMPageEditInsertTypeItemView()
    var pageSizeView = KMPageEditInsertPageSizeItemView()
    var directionView = KMPageEditInsertDirectionItemView()
    
    @IBOutlet weak var cancelButton: NSButton!
    @IBOutlet weak var insertButton: NSButton!
    
    var selectedPageSize: NSSize = NSZeroSize
    
    var itemClick: KMPageEditInsertCustomPageItemClick!
    
    var typeIndex: Int {
        get {
            self.typeView.selectedIndex
        }
    }
    
    var pageSize: NSSize {
        get {
            self.pageSizeView.getPageSize
        }
    }
    
    var direction: Int {
        get {
            return self.directionView.getDirection()
        }
    }
    
    override func windowDidLoad() {
        super.windowDidLoad()

        self.titleLabel.stringValue = NSLocalizedString("Insert Custom Page", comment: "")
        
        self.typeBox.contentView?.addSubview(self.typeView)
        self.typeView.frame = self.typeBox.contentView!.bounds
        self.typeView.autoresizingMask = [.width, .height]
        self.typeView.items = [(NSLocalizedString("Blank page", comment: ""), ""),
                               (NSLocalizedString("Line page", comment: ""), "horizontal_line"),
                               (NSLocalizedString("Five line score", comment: ""), "five_line_score"),
                               (NSLocalizedString("Plaid page", comment: ""), "plaid")]
        
        self.pageSizeBox.contentView?.addSubview(self.pageSizeView)
        self.pageSizeView.frame = self.pageSizeBox.contentView!.bounds
        self.pageSizeView.autoresizingMask = [.width, .height]
        self.pageSizeView.selectedPageSize = self.selectedPageSize
        self.pageSizeView.itemClick = { [weak self] (index: Int, value: Any) in
            if (index == 1) { /// 当前页
                let radioIndex: Int = value as! Int
                if (radioIndex == 1) { // 当前页
                    
                } else if (radioIndex == 2) { /// 标准
                    
                } else if (radioIndex == 3) { /// 自定义
                    
                }
            } else if (index == 2) { /// 标准[下拉框]
                
            } else if (index == 3) { /// 自定义[宽度]
                let size = self?.pageSizeView.getCustomSize
                if (size!.width > size!.height) {
                    self?.directionView.switchDirection(isHor: true)
                } else {
                    self?.directionView.switchDirection(isHor: false)
                }
            } else if (index == 4) { /// 自定义[高度]
                let size = self?.pageSizeView.getCustomSize
                if (size!.height > size!.width) {
                    self?.directionView.switchDirection(isHor: false)
                } else {
                    self?.directionView.switchDirection(isHor: true)
                }
            } else if (index == 5) { /// 自定义[下拉框]
                
            }
        }
        
        self.directionBox.contentView?.addSubview(self.directionView)
        self.directionView.frame = self.directionBox.contentView!.bounds
        self.directionView.autoresizingMask = [.width, .height]
        self.directionView.itemClick = { [weak self] (index: Int, value: Any) in
            if (index == 1) { /// 横向页面
                self?.pageSizeView.changeDirection(isHor: true)
            } else if (index == 2) { /// 纵向页面
                self?.pageSizeView.changeDirection(isHor: false)
            }
        }
        
        cancelButton.title = NSLocalizedString("Cancel", 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)
        
        insertButton.title = NSLocalizedString("Insert", comment: "")
        insertButton.isBordered = false
        insertButton.wantsLayer = true
        insertButton.layer?.cornerRadius = 4
        insertButton.target = self
        insertButton.action = #selector(insertButtonAction)
        insertButton.layer?.backgroundColor = NSColor.black.cgColor
        insertButton.attributedTitle = NSMutableAttributedString(string: insertButton.title, attributes: [NSAttributedString.Key.foregroundColor : NSColor.white])
    }
    
    @objc func cancelButtonAction() {
        guard let callback = self.itemClick else {
            return
        }
        
        callback(1)
    }
    
    @objc func insertButtonAction() {
        guard let callback = self.itemClick else {
            return
        }
        
        callback(2)
    }
    
}