|
@@ -7,16 +7,30 @@
|
|
|
|
|
|
import Cocoa
|
|
|
|
|
|
-class KMBackgroundManager: NSObject {
|
|
|
+class KMBackgroundManager: NSObject, NSCoding {
|
|
|
let kBackgroundFolderPath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.applicationSupportDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last?.stringByAppendingPathComponent(Bundle.main.bundleIdentifier!).stringByAppendingPathComponent("background")
|
|
|
let kBackgroundPlistPath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.applicationSupportDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last?.stringByAppendingPathComponent(Bundle.main.bundleIdentifier!).stringByAppendingPathComponent("background").stringByAppendingPathComponent("background.plist")
|
|
|
|
|
|
var datas: Array<KMBackgroundModel> = []
|
|
|
|
|
|
+ var backgroundObjects: [KMBackgroundObject] = []
|
|
|
+
|
|
|
static let defaultManager = KMBackgroundManager()
|
|
|
|
|
|
override init() {
|
|
|
super.init()
|
|
|
+
|
|
|
+ if let storedData = UserDefaults.standard.value(forKey: "kBackgroundInfoSaveKey") as? Data {
|
|
|
+ NSKeyedUnarchiver.setClass(KMBackgroundObject.self, forClassName: "KMBackgroundObject")
|
|
|
+ NSKeyedUnarchiver.setClass(KMBackgroundManager.self, forClassName: "KMBackgroundManager")
|
|
|
+ if let man = NSKeyedUnarchiver.unarchiveObject(with: storedData) as? KMBackgroundManager {
|
|
|
+ for object in man.backgroundObjects {
|
|
|
+ let model = self.parseObject(object: object)
|
|
|
+ self.datas.append(model)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (FileManager.default.fileExists(atPath: kBackgroundPlistPath!)) {
|
|
|
let dataDict = NSDictionary(contentsOfFile: kBackgroundPlistPath!)
|
|
|
if (dataDict == nil) {
|
|
@@ -51,6 +65,16 @@ class KMBackgroundManager: NSObject {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ required init?(coder: NSCoder) {
|
|
|
+ if let data = coder.decodeObject(forKey: "backgroundObjects") {
|
|
|
+ self.backgroundObjects = data as? [KMBackgroundObject] ?? []
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ func encode(with coder: NSCoder) {
|
|
|
+ coder.encode(self.backgroundObjects, forKey: "backgroundObjects")
|
|
|
+ }
|
|
|
+
|
|
|
func addTemplate(model: KMBackgroundModel) -> Bool {
|
|
|
if (!FileManager.default.fileExists(atPath: kBackgroundFolderPath!)) {
|
|
|
let create: ()? = try?FileManager.default.createDirectory(atPath: kBackgroundFolderPath!, withIntermediateDirectories: false)
|
|
@@ -367,6 +391,30 @@ class KMBackgroundManager: NSObject {
|
|
|
return model
|
|
|
}
|
|
|
|
|
|
+ private func parseObject(object: KMBackgroundObject) -> KMBackgroundModel {
|
|
|
+ let model = KMBackgroundModel()
|
|
|
+
|
|
|
+ model.type = object.type
|
|
|
+ if (model.type == .file) {
|
|
|
+ model.image = object.image
|
|
|
+ model.imagePath = object.imagePath ?? ""
|
|
|
+ } else {
|
|
|
+ model.color = object.color
|
|
|
+ }
|
|
|
+
|
|
|
+ model.scale = object.scale
|
|
|
+ model.rotation = object.rotation.cgFloat
|
|
|
+ model.opacity = object.opacity
|
|
|
+ model.verticalMode = object.verticalMode
|
|
|
+ model.verticalSpace = object.verticalSpace.cgFloat
|
|
|
+ model.horizontalMode = object.horizontalMode
|
|
|
+ model.horizontalSpace = object.horizontalSpace.cgFloat
|
|
|
+ model.pageRangeType = KMWatermarkeModelPageRangeType.init(rawValue: object.pageRangeType.rawValue) ?? .all
|
|
|
+ model.pagesString = object.pagesString
|
|
|
+
|
|
|
+ return model
|
|
|
+ }
|
|
|
+
|
|
|
private func tagString() -> String {
|
|
|
var result: String = ""
|
|
|
|