OSDN Git Service

staticプロパティをインスタンスプロパティに変更
[kcd/KCD.git] / KCD / BridgeViewController.swift
index 4125512..608b2e2 100644 (file)
@@ -15,29 +15,29 @@ protocol ScreenshotSharingProvider {
 
 class BridgeViewController: NSViewController {
     
-    @IBOutlet var arrayController: NSArrayController!
+    @IBOutlet private(set) var arrayController: NSArrayController!
     
     deinit {
         
-        [NSContentArrayBinding, NSSortDescriptorsBinding,
-         NSSelectionIndexesBinding, NSFilterPredicateBinding]
-            .forEach { arrayController.unbind($0) }
+        arrayController.unbind(.contentArray)
+        arrayController.unbind(.sortDescriptors)
+        arrayController.unbind(.selectionIndexes)
+        arrayController.unbind(.filterPredicate)
     }
     
     override var representedObject: Any? {
         
         didSet {
-            guard let representedObject = representedObject else { return }
             
-            [
-                (NSContentArrayBinding, #keyPath(ScreenshotModel.screenshots)),
-                (NSSortDescriptorsBinding, #keyPath(ScreenshotModel.sortDescriptors)),
-                (NSSelectionIndexesBinding, #keyPath(ScreenshotModel.selectedIndexes)),
-                (NSFilterPredicateBinding, #keyPath(ScreenshotModel.filterPredicate))
-                ]
-                .forEach {
-                    arrayController.bind($0.0, to: representedObject, withKeyPath: $0.1, options: nil)
+            guard let representedObject = representedObject as? ScreenshotModel else {
+                
+                return
             }
+            
+            arrayController.bind(.contentArray, to: representedObject, withKeyPath: #keyPath(ScreenshotModel.screenshots))
+            arrayController.bind(.sortDescriptors, to: representedObject, withKeyPath: #keyPath(ScreenshotModel.sortDescriptors))
+            arrayController.bind(.selectionIndexes, to: representedObject, withKeyPath: #keyPath(ScreenshotModel.selectedIndexes))
+            arrayController.bind(.filterPredicate, to: representedObject, withKeyPath: #keyPath(ScreenshotModel.filterPredicate))
         }
     }
     
@@ -50,41 +50,51 @@ class BridgeViewController: NSViewController {
 
 extension BridgeViewController: NSSharingServicePickerDelegate, ScreenshotSharingProvider {
     
-    var contentRect: NSRect {
+    @objc var contentRect: NSRect {
         
         fatalError("Must implemente")
     }
     
     private var appendKanColleTag: Bool {
         
-        return UserDefaults.standard.appendKanColleTag
+        return UserDefaults.standard[.appendKanColleTag]
     }
     
     private var tagString: String? {
         
-        let tag = NSLocalizedString("kancolle", comment: "kancolle twitter hash tag")
-        if tag == "" { return "" }
+        let tag = LocalizedStrings.tweetTag.string
+        if tag == "" {
+            
+            return ""
+        }
         
         return "#\(tag)"
     }
     
     @IBAction func share(_ sender: AnyObject?) {
         
-        guard let view = sender as? NSView
-            else { return }
+        guard let view = sender as? NSView else {
+            
+            return
+        }
         
         let picker = NSSharingServicePicker(items: itemsForShareingServicePicker())
         picker.delegate = self
         picker.show(relativeTo: view.bounds, of: view, preferredEdge: .minX)
     }
     
-    fileprivate func itemsForShareingServicePicker() -> [AnyObject] {
+    private func itemsForShareingServicePicker() -> [AnyObject] {
         
-        guard let informations = arrayController.selectedObjects as? [ScreenshotInformation]
-            else { return [] }
+        guard let informations = arrayController.selectedObjects as? [ScreenshotInformation] else {
+            
+            return []
+        }
         
-        let images: [NSImage] = informations.flatMap { NSImage(contentsOf: $0.url) }
-        if !appendKanColleTag { return images }
+        let images: [NSImage] = informations.compactMap { NSImage(contentsOf: $0.url) }
+        if !appendKanColleTag {
+            
+            return images
+        }
         if let tag = tagString {
             
             return ["\n\(tag)" as AnyObject] + images
@@ -116,7 +126,7 @@ extension BridgeViewController: NSSharingServiceDelegate {
     
     func sharingService(_ sharingService: NSSharingService,
                         sourceWindowForShareItems items: [Any],
-                        sharingContentScope: UnsafeMutablePointer<NSSharingContentScope>) -> NSWindow? {
+                        sharingContentScope: UnsafeMutablePointer<NSSharingService.SharingContentScope>) -> NSWindow? {
         
         return view.window
     }