//
//  KMCloudNoNetworkView.swift
//  PDF Master
//
//  Created by tangchao on 2023/2/14.
//

import Cocoa

typealias KMCloudNoNetworkViewItemClick = (Int) -> ()
class KMCloudNoNetworkView: NSView {
    var imageView = NSImageView()
    var titleLabel = NSTextField(labelWithString: "")
    var despLabel = NSTextField(labelWithString: "")
    var funcButton = NSButton()
    
    var itemClick: KMCloudNoNetworkViewItemClick?
    
    override var isFlipped: Bool {
        return true
    }
    
    override init(frame frameRect: NSRect) {
        super.init(frame: frameRect)
        
        initSubViews()
    }
    
    required init?(coder: NSCoder) {
        super.init(coder: coder)
        
        initSubViews()
    }
    
    public func initSubViews() {
        self.addSubview(self.imageView)
        self.addSubview(self.titleLabel)
        self.addSubview(self.despLabel)
        self.addSubview(self.funcButton)
        
        self.titleLabel.alignment = .center
        self.titleLabel.stringValue = NSLocalizedString("No network detected", comment: "")
        self.despLabel.alignment = .center
        self.despLabel.stringValue = NSLocalizedString("To access your files, please connect to the Internet and try again.", comment: "")
        self.funcButton.isBordered = false
        self.funcButton.wantsLayer = true
        self.funcButton.title = NSLocalizedString("Retry", comment: "")
        self.funcButton.target = self
        self.funcButton.action = #selector(funcButtonAction)
    }
    
    override func layout() {
        super.layout()
        let width: CGFloat = NSWidth(self.bounds)
        
        let imageSize: NSSize = NSMakeSize(80, 80)
        self.imageView.frame = NSMakeRect((width-imageSize.width)*0.5, 20, imageSize.width, imageSize.height)
        
        self.titleLabel.frame = NSMakeRect(0, self.imageView.frame.maxY+20, width, 22)
        self.despLabel.frame = NSMakeRect(0, self.titleLabel.frame.maxY+2, width, 20)
        
        let buttonSize: NSSize = NSMakeSize(68, 32)
        self.funcButton.frame = NSMakeRect((width-buttonSize.width)*0.5, self.despLabel.frame.maxY+8, buttonSize.width, buttonSize.height)
    }
    
    @objc func funcButtonAction() {
        guard let callback = self.itemClick else {
            return
        }
        callback(1)
    }
}