case #keyPath(filterPredicate): return [#keyPath(showLevelOneShipInUpgradableList), #keyPath(showsExcludedShipInUpgradableList)]
default: return []
+
}
}
}
- @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 {
@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 {
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)
}
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) {
override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
- guard let action = menuItem.action else { return false }
+ guard let action = menuItem.action else {
+
+ return false
+ }
switch action {
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) {
return true
default: return false
+
}
}
}