OSDN Git Service

不要となっていたプロパティを削除
[kcd/KCD.git] / KCD / SlotItemWindowController.swift
1 //
2 //  SlotItemWindowController.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2016/12/21.
6 //  Copyright © 2016年 Hori,Masaki. All rights reserved.
7 //
8
9 import Cocoa
10
11 final class SlotItemWindowController: NSWindowController {
12     
13     enum ShowType: Int {
14         
15         case all = -1
16         
17         case nonEquiped = 0
18         
19         case equiped = 1
20     }
21     
22     @objc let managedObjectContext = ServerDataStore.default.context
23     
24     @IBOutlet private var slotItemController: NSArrayController!
25     @IBOutlet private var searchField: NSSearchField!
26     
27     override var windowNibName: NSNib.Name {
28         
29         return .nibName(instanceOf: self)
30     }
31     
32     @objc var showEquipmentType: Int {
33         
34         get { return UserDefaults.standard[.showEquipmentType].rawValue }
35         set {
36             
37             notifyChangeValue(forKey: #keyPath(showEquipmentTypeTitle)) {
38                 
39                 UserDefaults.standard[.showEquipmentType] = ShowType(rawValue: newValue) ?? .all
40             }
41             slotItemController.fetchPredicate = filterPredicate
42         }
43     }
44     
45     var filterPredicate: NSPredicate? {
46         
47         switch UserDefaults.standard[.showEquipmentType] {
48             
49         case .all:
50             
51             return nil
52             
53         case .nonEquiped:
54             
55             return NSPredicate.isNil(#keyPath(SlotItem.equippedShip.lv))
56                 .and(.isNil(#keyPath(SlotItem.extraEquippedShip.lv)))
57             
58         case .equiped:
59             
60             return NSPredicate.empty
61                 .and(.isNotNil(#keyPath(SlotItem.equippedShip.lv)))
62                 .or(.isNotNil(#keyPath(SlotItem.extraEquippedShip.lv)))
63             
64         }
65     }
66     
67     @objc var showEquipmentTypeTitle: String {
68         
69         switch UserDefaults.standard[.showEquipmentType] {
70             
71         case .all: return LocalizedStrings.allEquipment.string
72             
73         case .nonEquiped: return LocalizedStrings.unequiped.string
74             
75         case .equiped: return LocalizedStrings.equiped.string
76             
77         }
78     }
79     
80     override func windowDidLoad() {
81         
82         super.windowDidLoad()
83         
84         // refresh filter
85         let type = showEquipmentType
86         showEquipmentType = type
87     }
88 }
89
90
91 @available(OSX 10.12.2, *)
92 private var objectForTouchBar: [Int: NSTouchBar] = [:]
93
94 @available(OSX 10.12.2, *)
95 extension SlotItemWindowController {
96     
97     @IBOutlet private var myTouchBar: NSTouchBar? {
98         
99         get { return objectForTouchBar[hash] }
100         set { objectForTouchBar[hash] = newValue }
101     }
102
103     override var touchBar: NSTouchBar? {
104         
105         get {
106             
107             if let _ = myTouchBar {
108                 
109                 return myTouchBar
110             }
111             
112             var topLevel: NSArray?
113             Bundle.main.loadNibNamed(NSNib.Name("SlotItemWindowTouchBar"),
114                                      owner: self,
115                                      topLevelObjects: &topLevel)
116             
117             return myTouchBar
118         }
119         set {}
120     }
121     
122     @IBAction func nextShowType(_ sender: AnyObject?) {
123         
124         let next = (showEquipmentType + 2) % 3 - 1
125         showEquipmentType = next
126     }
127     @IBAction func selectSearchField(_ sender: AnyObject?) {
128         
129         window!.makeFirstResponder(searchField)
130     }
131 }