//
//  KMHomeContentView.swift
//  PDF Master
//
//  Created by lizhe on 2023/10/27.
//

import Cocoa

typealias KMHomeContentViewHistoryDidSelect = (_ view: KMHomeContentView, _ url: URL) -> Void
typealias KMHomeContentViewQucikToolsDidSelect = (_ view: KMHomeContentView, _ item: KMQucikToolsModel) -> Void

class KMHomeContentView: KMBaseXibView {
    @IBOutlet weak var qucikToolsLabel: NSTextField!
    @IBOutlet weak var qucikToolsView: KMQucikToolsView!
    @IBOutlet weak var leftButton: NSButton!
    @IBOutlet weak var pageLabel: NSTextField!
    @IBOutlet weak var rightButton: NSButton!
    @IBOutlet weak var moreButton: KMButton!
    
    
    @IBOutlet weak var recentlyLabel: NSTextField!
    @IBOutlet weak var historyListView: KMHomeHistoryListView!
    @IBOutlet weak var horizontalButton: NSButton!
    @IBOutlet weak var verticalButton: NSButton!
    @IBOutlet weak var cleanButton: KMButton!
    
    var historyDidSelect: KMHomeContentViewHistoryDidSelect?
    var qucikToolsDidSelect: KMHomeContentViewQucikToolsDidSelect?
    
    override func draw(_ dirtyRect: NSRect) {
        super.draw(dirtyRect)

        // Drawing code here.
        self.setup()
    }
    
    override func setup() {
        self.pageLabel.textColor = KMAppearance.Layout.h0Color()
        self.qucikToolsView.didSelect = { [unowned self] view, item in
            guard let callBack = qucikToolsDidSelect else { return }
            
            callBack(self, item)
        }
        
        self.qucikToolsView.pageChange = { [unowned self] view in
            self.updatePageLabel()
        }
        
        self.historyListView.didSelect = { [unowned self] view, url in
            guard let callBack = historyDidSelect else { return }
            
            callBack(self, url)
        }
        
        self.updatePageLabel()
    }
    
    func updatePageLabel() {
        self.pageLabel.stringValue = "\(qucikToolsView.currentPage()) / \(qucikToolsView.pageCount())"
    }
    
}

//MARK: Action
extension KMHomeContentView {
    @IBAction func leftButtonAction(_ sender: Any) {
        self.qucikToolsView.previousPage()
    }
    
    @IBAction func rightButtonAction(_ sender: Any) {
        self.qucikToolsView.nextPage()
    }
    
    @IBAction func moreButtonAction(_ sender: Any) {
        let homeQuickToolsWindowController: KMHomeQuickToolsWindowController = KMHomeQuickToolsWindowController.sharedHomeQuickTools
        homeQuickToolsWindowController.window?.center()
        NSWindow.currentWindow().addChildWindow(homeQuickToolsWindowController.window!, ordered: NSWindow.OrderingMode.above)

        homeQuickToolsWindowController.dataChange = { [unowned self] controller in
            self.qucikToolsView.reloadData()
        }
    }
    
    @IBAction func horizontalButtonAction(_ sender: Any) {
        self.historyListView.showType = .horizontal
    }
    
    @IBAction func verticalButtonAction(_ sender: Any) {
        self.historyListView.showType = .vertical
    }
    
    @IBAction func cleanButtonAction(_ sender: Any) {
        
    }
}