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 {
20 @objc let managedObjectContext = ServerDataStore.default.context
22 @IBOutlet var slotItemController: NSArrayController!
23 @IBOutlet var searchField: NSSearchField!
25 override var windowNibName: NSNib.Name {
27 return .nibName(instanceOf: self)
30 @objc var showEquipmentType: Int {
32 get { return UserDefaults.standard[.showEquipmentType].rawValue }
34 notifyChangeValue(forKey: #keyPath(showEquipmentTypeTitle)) {
36 UserDefaults.standard[.showEquipmentType] = ShowType(rawValue: newValue) ?? .all
38 slotItemController.fetchPredicate = filterPredicate
42 var filterPredicate: NSPredicate? {
44 switch UserDefaults.standard[.showEquipmentType] {
49 return NSPredicate.isNil(#keyPath(SlotItem.equippedShip.lv))
50 .and(.isNil(#keyPath(SlotItem.extraEquippedShip.lv)))
53 return NSPredicate.empty
54 .and(.isNotNil(#keyPath(SlotItem.equippedShip.lv)))
55 .or(.isNotNil(#keyPath(SlotItem.extraEquippedShip.lv)))
59 @objc var showEquipmentTypeTitle: String {
61 switch UserDefaults.standard[.showEquipmentType] {
63 case .all: return LocalizedStrings.allEquipment.string
65 case .nonEquiped: return LocalizedStrings.unequiped.string
67 case .equiped: return LocalizedStrings.equiped.string
71 override func windowDidLoad() {
76 let type = showEquipmentType
77 showEquipmentType = type
82 @available(OSX 10.12.2, *)
83 private var objectForTouchBar: [Int: NSTouchBar] = [:]
85 @available(OSX 10.12.2, *)
86 extension SlotItemWindowController {
88 @IBOutlet var myTouchBar: NSTouchBar? {
90 get { return objectForTouchBar[hash] }
91 set { objectForTouchBar[hash] = newValue }
94 override var touchBar: NSTouchBar? {
97 if let _ = myTouchBar {
102 var topLevel: NSArray?
103 Bundle.main.loadNibNamed(NSNib.Name("SlotItemWindowTouchBar"),
105 topLevelObjects: &topLevel)
111 @IBAction func nextShowType(_ sender: AnyObject?) {
113 let next = (showEquipmentType + 2) % 3 - 1
114 showEquipmentType = next
116 @IBAction func selectSearchField(_ sender: AnyObject?) {
118 window!.makeFirstResponder(searchField)