OSDN Git Service

Doutaku を 1.0 にアップデート
[kcd/KCD.git] / KCD / Bookmark.swift
1 //
2 //  BookmarkItem.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2017/01/28.
6 //  Copyright © 2017年 Hori,Masaki. All rights reserved.
7 //
8
9 import Cocoa
10
11 final class Bookmark: NSManagedObject {
12     
13     @NSManaged var identifier: String
14     @NSManaged var name: String
15     @NSManaged var urlString: String
16     @NSManaged var canScroll: Bool
17     @NSManaged var canResize: Bool
18     @NSManaged var windowContentSizeString: String
19     @NSManaged var contentVisibleRectString: String
20     @NSManaged var order: Int
21     @NSManaged var scrollDelayValue: Float
22 }
23
24 extension Bookmark {
25     
26     var windowContentSize: NSSize {
27         
28         get { return NSSizeFromString(windowContentSizeString) }
29         set { windowContentSizeString = NSStringFromSize(newValue) }
30     }
31     
32     var contentVisibleRect: NSRect {
33         
34         get { return NSRectFromString(contentVisibleRectString) }
35         set { contentVisibleRectString = NSStringFromRect(newValue) }
36     }
37     
38     var scrollDelay: TimeInterval {
39         
40         get { return TimeInterval(scrollDelayValue) }
41         set { scrollDelayValue = Float(newValue) }
42     }
43 }
44
45 extension Bookmark: NSPasteboardWriting {
46     
47     func writableTypes(for pasteboard: NSPasteboard) -> [NSPasteboard.PasteboardType] {
48         
49         return [NSPasteboard.PasteboardType("com.masakih.KCD.BookmarkItem")]
50     }
51     
52     func pasteboardPropertyList(forType type: NSPasteboard.PasteboardType) -> Any? {
53         
54         let uri = objectID.uriRepresentation()
55         
56         return NSKeyedArchiver.archivedData(withRootObject: uri)
57     }
58 }