2 // SlotItemWindowController.swift
5 // Created by Hori,Masaki on 2016/12/21.
6 // Copyright © 2016年 Hori,Masaki. All rights reserved.
11 final class SlotItemWindowController: NSWindowController {
22 @objc let managedObjectContext = ServerDataStore.default.context
24 @IBOutlet private var slotItemController: NSArrayController!
25 @IBOutlet private var searchField: NSSearchField!
27 override var windowNibName: NSNib.Name {
29 return .nibName(instanceOf: self)
32 @objc var showEquipmentType: Int {
34 get { return UserDefaults.standard[.showEquipmentType].rawValue }
37 notifyChangeValue(forKey: #keyPath(showEquipmentTypeTitle)) {
39 UserDefaults.standard[.showEquipmentType] = ShowType(rawValue: newValue) ?? .all
41 slotItemController.fetchPredicate = filterPredicate
45 var filterPredicate: NSPredicate? {
47 switch UserDefaults.standard[.showEquipmentType] {
55 return NSPredicate.isNil(#keyPath(SlotItem.equippedShip.lv))
56 .and(.isNil(#keyPath(SlotItem.extraEquippedShip.lv)))
60 return NSPredicate.empty
61 .and(.isNotNil(#keyPath(SlotItem.equippedShip.lv)))
62 .or(.isNotNil(#keyPath(SlotItem.extraEquippedShip.lv)))
67 @objc var showEquipmentTypeTitle: String {
69 switch UserDefaults.standard[.showEquipmentType] {
71 case .all: return LocalizedStrings.allEquipment.string
73 case .nonEquiped: return LocalizedStrings.unequiped.string
75 case .equiped: return LocalizedStrings.equiped.string
80 override func windowDidLoad() {
85 let type = showEquipmentType
86 showEquipmentType = type
91 @available(OSX 10.12.2, *)
92 private var objectForTouchBar: [Int: NSTouchBar] = [:]
94 @available(OSX 10.12.2, *)
95 extension SlotItemWindowController {
97 @IBOutlet private var myTouchBar: NSTouchBar? {
99 get { return objectForTouchBar[hash] }
100 set { objectForTouchBar[hash] = newValue }
103 override var touchBar: NSTouchBar? {
107 if let _ = myTouchBar {
112 var topLevel: NSArray?
113 Bundle.main.loadNibNamed(NSNib.Name("SlotItemWindowTouchBar"),
115 topLevelObjects: &topLevel)
122 @IBAction func nextShowType(_ sender: AnyObject?) {
124 let next = (showEquipmentType + 2) % 3 - 1
125 showEquipmentType = next
127 @IBAction func selectSearchField(_ sender: AnyObject?) {
129 window!.makeFirstResponder(searchField)