//
//  KMHeaderFooterObject.swift
//  PDF Reader Pro
//
//  Created by tangchao on 2022/12/27.
//

import Cocoa

class KMHeaderFooterObject: KMHeaderFooterAdjectiveModel, NSCopying {
    
    var dateFormatString: String = KMWatermarkAdjectiveTools.getDateFormats().first!
    var pageFormatString: String = KMWatermarkAdjectiveTools.getPageFormats().first!
    var batesPrefixString: String = ""
    var batesSuffixString: String = ""
    var batesDigits: Int = 1
    var isBates: Bool = false
    
    override init() {
        super.init()
        
        self.name = ""
    }
    
    required init?(coder: NSCoder) {
        super.init(coder: coder)
        
        dateFormatString = coder.decodeObject(forKey: "dateFormatString") as? String ?? "m/d"
        pageFormatString = coder.decodeObject(forKey: "pageFormatString") as? String ?? "1"
        isBates = coder.decodeBool(forKey: "isBates")
        batesPrefixString = coder.decodeObject(forKey: "batesPrefixString") as? String ?? ""
        batesSuffixString = coder.decodeObject(forKey: "batesSuffixString") as? String ?? ""
        batesDigits = coder.decodeInteger(forKey: "batesDigits")
    }
    
    override func encode(with coder: NSCoder) {
        super.encode(with: coder)
        
        coder.encode(dateFormatString, forKey: "dateFormatString")
        coder.encode(pageFormatString, forKey: "pageFormatString")
        coder.encode(isBates, forKey: "isBates")
        coder.encode(batesPrefixString, forKey: "batesPrefixString")
        coder.encode(batesSuffixString, forKey: "batesSuffixString")
        coder.encode(batesDigits, forKey: "batesDigits")
    }
    
    func copy(with zone: NSZone? = nil) -> Any {
        let obj = KMHeaderFooterObject()
        obj.type = type
        obj.pageRangeType = pageRangeType
        obj.leftMargin = leftMargin
        obj.rightMargin = rightMargin
        obj.bottomMargin = bottomMargin
        obj.topMargin = topMargin
        obj.topLeftString = topLeftString
        obj.topCenterString = topCenterString
        obj.topRightString = topRightString
        obj.bottomLeftString = bottomLeftString
        obj.bottomCenterString = bottomCenterString
        obj.bottomRightString = bottomRightString
        obj.startString = startString
        obj.fontSize = fontSize
        obj.textColor = textColor
//        obj.hasHeader = hasHeader
//        obj.hasFooter = hasFooter
//        obj.cellHeight = cellHeight
        obj.id = id
        obj.pageCount = pageCount
        obj.pageRangeString = pageRangeString
        
        obj.dateFormatString = dateFormatString
        obj.pageFormatString = pageFormatString
        obj.isBates = isBates
        obj.batesPrefixString = batesPrefixString
        obj.batesSuffixString = batesSuffixString
        obj.batesDigits = batesDigits
        return obj
    }
}