OSDN Git Service

staticプロパティをインスタンスプロパティに変更
[kcd/KCD.git] / KCD / UpgradableShipsWindowController.swift
index 71883b3..e721e6c 100644 (file)
@@ -26,6 +26,7 @@ final class UpgradableShipsWindowController: NSWindowController {
         case #keyPath(filterPredicate): return [#keyPath(showLevelOneShipInUpgradableList), #keyPath(showsExcludedShipInUpgradableList)]
         
         default: return []
+            
         }
     }
     
@@ -41,9 +42,9 @@ final class UpgradableShipsWindowController: NSWindowController {
     }
     
     
-    @IBOutlet var contextualMenu: NSMenu!
-    @IBOutlet var tableView: NSTableView!
-    @IBOutlet var shipsController: NSArrayController!
+    @IBOutlet private var contextualMenu: NSMenu!
+    @IBOutlet private var tableView: NSTableView!
+    @IBOutlet private var shipsController: NSArrayController!
     
     override var windowNibName: NSNib.Name {
         
@@ -52,30 +53,30 @@ final class UpgradableShipsWindowController: NSWindowController {
     
     @objc dynamic var filterPredicate: NSPredicate? {
         
-        var filterPredicate: NSPredicate?
+        var levelOnePredicate: NSPredicate?
         var excludeShip: NSPredicate?
         
         if showLevelOneShipInUpgradableList == false {
             
-            filterPredicate = NSPredicate(#keyPath(Ship.lv), notEqual: 1)
+            levelOnePredicate = NSPredicate(#keyPath(Ship.lv), notEqual: 1)
         }
         
         if showsExcludedShipInUpgradableList == false,
-            excludeShiIDs.count != 0 {
+            excludeShiIDsCache.count != 0 {
             
-            excludeShip = .not(NSPredicate(#keyPath(Ship.id), valuesIn: excludeShiIDs))
+            excludeShip = .not(NSPredicate(#keyPath(Ship.id), valuesIn: excludeShiIDsCache))
         }
         
-        if let filterPredicate = filterPredicate,
-            let excludeShip = excludeShip {
+        switch (levelOnePredicate, excludeShip) {
+            
+        case let (p0?, p1?): return p0.and(p1)
+            
+        case let (p0?, _): return p0
             
-            return NSCompoundPredicate(andPredicateWithSubpredicates: [filterPredicate, excludeShip])
+        case let (_, p1?): return p1
+            
+        default: return nil
         }
-        
-        if let filterPredicate = filterPredicate { return filterPredicate }
-        if let excludeShip = excludeShip { return excludeShip }
-        
-        return nil
     }
     
     @objc var showLevelOneShipInUpgradableList: Bool {
@@ -104,19 +105,22 @@ final class UpgradableShipsWindowController: NSWindowController {
     
     private var excludeShipIDsSaveURL: URL {
         
-        return ApplicationDirecrories.support.appendingPathComponent("ExcludeShipIDs")
+        return ApplicationDirecrories.shared.support.appendingPathComponent("ExcludeShipIDs")
     }
     
-    override func windowDidLoad() {
+    override func windowWillLoad() {
         
-        super.windowDidLoad()
+        super.windowWillLoad()
         
         excludeShiIDsCache = excludeShiIDs
     }
     
     private func includeShip(shipID: Int) {
         
-        guard let index = excludeShiIDs.index(of: shipID) else { return }
+        guard let index = excludeShiIDs.index(of: shipID) else {
+            
+            return
+        }
         
         excludeShiIDs.remove(at: index)
     }
@@ -130,8 +134,14 @@ final class UpgradableShipsWindowController: NSWindowController {
         
         let row = tableView.clickedRow
         
-        guard let ships = shipsController.arrangedObjects as? [Ship] else { return }
-        guard case 0..<ships.count = row else { return }
+        guard let ships = shipsController.arrangedObjects as? [Ship] else {
+            
+            return
+        }
+        guard case 0..<ships.count = row else {
+            
+            return
+        }
         
         let shipID = ships[row].id
         if isExcludeShipID(shipID) {
@@ -146,7 +156,10 @@ final class UpgradableShipsWindowController: NSWindowController {
     
     override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
         
-        guard let action = menuItem.action else { return false }
+        guard let action = menuItem.action else {
+            
+            return false
+        }
         
         switch action {
             
@@ -154,8 +167,14 @@ final class UpgradableShipsWindowController: NSWindowController {
             
             let row = tableView.clickedRow
             
-            guard let ships = shipsController.arrangedObjects as? [Ship] else { return false }
-            guard case 0..<ships.count = row else { return false }
+            guard let ships = shipsController.arrangedObjects as? [Ship] else {
+                
+                return false
+            }
+            guard case 0..<ships.count = row else {
+                
+                return false
+            }
             
             if isExcludeShipID(ships[row].id) {
                 
@@ -169,6 +188,7 @@ final class UpgradableShipsWindowController: NSWindowController {
             return true
             
         default: return false
+            
         }
     }
 }