//
//  KMRedactPageRangeContentView.swift
//  PDF Reader Pro
//
//  Created by tangchao on 2023/1/19.
//

import Cocoa

class KMRedactPageRangeContentView: KMRedactContentBaseView {

    @IBOutlet weak var currentPageRadio: NSButton!
    @IBOutlet weak var allPageRadio: NSButton!
    @IBOutlet weak var oddPageRadio: NSButton!
    @IBOutlet weak var evenPageRadio: NSButton!
    @IBOutlet weak var customPageRadio: NSButton!
    @IBOutlet weak var inputView: NSView!
    @IBOutlet weak var inputTextField: NSTextField!
    @IBOutlet weak var totalNumberLabel: NSTextField!
    
    var pageCount: Int {
        get {
            -1
        }
        set {
            self.totalNumberLabel.stringValue = "/\(newValue)"
        }
    }
    
    override func awakeFromNib() {
        super.awakeFromNib()
        
        self.currentPageRadio.title = NSLocalizedString("Mark current page", comment: "")
        self.allPageRadio.title = NSLocalizedString("Mark all pages", comment: "")
        self.oddPageRadio.title = NSLocalizedString("Mark odd pages", comment: "")
        self.evenPageRadio.title = NSLocalizedString("Mark even pages", comment: "")
        self.customPageRadio.title = NSLocalizedString("Mark specific page range", comment: "")
        
        for radio in [self.currentPageRadio, self.allPageRadio, self.oddPageRadio, self.evenPageRadio, self.customPageRadio] {
            radio?.target = self
            radio?.action = #selector(radioAction)
        }
        
        selectRadio(self.currentPageRadio)
        
        self.inputView.wantsLayer = true
        self.inputView.layer?.backgroundColor = NSColor(white: 238.0/255.0, alpha: 1.0).cgColor
        self.inputTextField.placeholderString = NSLocalizedString("e.g. 1,3-5,10", comment: "")
        self.inputTextField.focusRingType = .none
        self.inputTextField.delegate = self
    }
    
    @objc private func radioAction(sender: NSButton) {
        selectRadio(sender)
        
        guard let callback = self.itemClick else {
            return
        }
        
        var index: Int = 1
        for radio in [self.currentPageRadio, self.allPageRadio, self.oddPageRadio, self.evenPageRadio, self.customPageRadio] {
            if ((radio?.isEqual(to: sender))!) {
                break
            }
            index += 1
        }
        
        callback(index, nil)
    }
    
    private func selectRadio(_ selectedRadio: NSButton) {
        for radio in [self.currentPageRadio, self.allPageRadio, self.oddPageRadio, self.evenPageRadio, self.customPageRadio] {
            if ((radio?.isEqual(to: selectedRadio))!) {
                radio?.state = .on
            } else {
                radio?.state = .off
            }
        }
        
        if (customPageRadio.state == .on) {
            self.inputTextField.isEditable = true
        } else {
            self.inputTextField.isEditable = false
        }
    }
}

extension KMRedactPageRangeContentView: NSTextFieldDelegate {
    func controlTextDidChange(_ obj: Notification) {
        if ((self.inputTextField.isEqual(to: obj.object)) == false) {
            return
        }
        
        guard let callback = self.itemClick else {
            return
        }
        callback(6, self.inputTextField.stringValue)
    }
}