OSDN Git Service

関数名を変更
[kcd/KCD.git] / KCD / BroserWindowController.swift
index 28278f7..23da7d2 100644 (file)
@@ -8,28 +8,6 @@
 
 import Cocoa
 
-
-private extension Selector {
-    
-    static let reloadContent = #selector(BroserWindowController.reloadContent(_:))
-    static let deleteCacheAndReload = #selector(BroserWindowController.deleteCacheAndReload(_:))
-    static let clearQuestList = #selector(BroserWindowController.clearQuestList(_:))
-    static let selectView = #selector(BroserWindowController.selectView(_:))
-    static let changeMainTab = #selector(BroserWindowController.changeMainTab(_:))
-    static let screenShot = #selector(BroserWindowController.screenShot(_:))
-    static let toggleAnchorageSize = #selector(BroserWindowController.toggleAnchorageSize(_:))
-    static let showHideCombinedView = #selector(BroserWindowController.showHideCombinedView(_:))
-    static let fleetListAbove = #selector(BroserWindowController.fleetListAbove(_:))
-    static let fleetListBelow = #selector(BroserWindowController.fleetListBelow(_:))
-    static let fleetListDivide = #selector(BroserWindowController.fleetListDivide(_:))
-    static let fleetListSimple = #selector(BroserWindowController.fleetListSimple(_:))
-    static let reorderToDoubleLine = #selector(BroserWindowController.reorderToDoubleLine(_:))
-    static let reorderToLeftToRight = #selector(BroserWindowController.reorderToLeftToRight(_:))
-    static let selectNextFleet = #selector(BroserWindowController.selectNextFleet(_:))
-    static let selectPreviousFleet = #selector(BroserWindowController.selectPreviousFleet(_:))
-    static let changeSakutekiCalculator = #selector(BroserWindowController.changeSakutekiCalculator(_:))
-}
-
 final class BroserWindowController: NSWindowController {
     
     enum FleetViewPosition: Int {
@@ -40,9 +18,14 @@ final class BroserWindowController: NSWindowController {
         case oldStyle = 0xffffffff
     }
     
-    @objc class func keyPathsForValuesAffectingFlagShipName() -> Set<String> {
+    @objc override class func keyPathsForValuesAffectingValue(forKey key: String) -> Set<String> {
         
-        return [#keyPath(flagShipID)]
+        switch key {
+            
+        case #keyPath(flagShipName): return [#keyPath(flagShipID)]
+            
+        default: return []
+        }
     }
     
     @objc let managedObjectContext = ServerDataStore.default.context
@@ -55,6 +38,7 @@ final class BroserWindowController: NSWindowController {
     @IBOutlet weak var placeholder: NSView!
     @IBOutlet weak var combinedViewPlaceholder: NSView!
     @IBOutlet weak var deckPlaceholder: NSView!
+    @IBOutlet weak var stokerContainer: NSView!
     @IBOutlet weak var resourcePlaceholder: NSView!
     @IBOutlet weak var ancherageRepariTimerPlaceholder: NSView!
     @IBOutlet weak var informations: NSTabView!
@@ -91,6 +75,7 @@ final class BroserWindowController: NSWindowController {
     
     private var fleetViewPosition: FleetViewPosition = .above
     private var isCombinedMode = false
+    private var isExtShpMode = false
     
     // MARK: - Function
     override func windowDidLoad() {
@@ -127,6 +112,7 @@ final class BroserWindowController: NSWindowController {
         fleetViewController.enableAnimation = false
         fleetViewController.shipOrder = UserDefaults.standard[.fleetViewShipOrder]
         fleetViewController.enableAnimation = true
+        fleetViewController.delegate = self
         
         bind(NSBindingName(rawValue: #keyPath(flagShipID)), to: deckContoller, withKeyPath: "selection.ship_0", options: nil)
         
@@ -160,13 +146,11 @@ final class BroserWindowController: NSWindowController {
         if event.deltaX > 0 {
             
             showCombinedView()
-            
         }
         
         if event.deltaX < 0 {
             
             hideCombinedView()
-            
         }
     }
     
@@ -179,7 +163,7 @@ final class BroserWindowController: NSWindowController {
         
         viewController.view.frame = view.frame
         viewController.view.autoresizingMask = view.autoresizingMask
-        self.window?.contentView?.replaceSubview(view, with: viewController.view)
+        view.superview?.replaceSubview(view, with: viewController.view)
     }
     
     private func showCombinedView() {
@@ -241,7 +225,7 @@ extension BroserWindowController {
     @IBAction func clearQuestList(_ sender: AnyObject?) {
         
         let store = ServerDataStore.oneTimeEditor()
-        store.quests().forEach { store.delete($0) }
+        store.quests().forEach(store.delete)
     }
     
     @IBAction func selectView(_ sender: AnyObject?) {
@@ -345,57 +329,64 @@ extension BroserWindowController {
         guard let action: Selector = menuItem.action else { return false }
         
         switch action {
-        case Selector.reloadContent, Selector.screenShot, Selector.deleteCacheAndReload:
+            
+        case #selector(BroserWindowController.reloadContent(_:)),
+             #selector(BroserWindowController.screenShot(_:)),
+             #selector(BroserWindowController.deleteCacheAndReload(_:)):
+            
             return gameViewController.validateMenuItem(menuItem)
             
-        case Selector.selectView, Selector.selectNextFleet, Selector.selectPreviousFleet:
+        case #selector(BroserWindowController.selectView(_:)),
+             #selector(BroserWindowController.selectNextFleet(_:)),
+             #selector(BroserWindowController.selectPreviousFleet(_:)):
+            
             return true
             
-        case Selector.fleetListAbove:
+        case #selector(BroserWindowController.fleetListAbove(_:)):
             menuItem.state = (fleetViewPosition == .above ? .on : .off)
             return true
             
-        case Selector.fleetListBelow:
+        case #selector(BroserWindowController.fleetListBelow(_:)):
             menuItem.state = (fleetViewPosition == .below ? .on : .off)
             return true
             
-        case Selector.fleetListDivide:
+        case #selector(BroserWindowController.fleetListDivide(_:)):
             menuItem.state = (fleetViewPosition == .divided ? .on : .off)
             return true
             
-        case Selector.fleetListSimple:
+        case #selector(BroserWindowController.fleetListSimple(_:)):
             menuItem.state = (fleetViewPosition == .oldStyle ? .on : .off)
             return true
             
-        case Selector.reorderToDoubleLine:
+        case #selector(BroserWindowController.reorderToDoubleLine(_:)):
             menuItem.state = (fleetViewController.shipOrder == .doubleLine ? .on : .off)
             return true
             
-        case Selector.reorderToLeftToRight:
+        case #selector(BroserWindowController.reorderToLeftToRight(_:)):
             menuItem.state = (fleetViewController.shipOrder == .leftToRight ? .on: .off)
             return true
             
-        case Selector.clearQuestList:
+        case #selector(BroserWindowController.clearQuestList(_:)):
             return true
             
-        case Selector.showHideCombinedView:
+        case #selector(BroserWindowController.showHideCombinedView(_:)):
             if isCombinedMode {
                 
-                menuItem.title = NSLocalizedString("Hide Combined View", comment: "View menu, hide combined view")
+                menuItem.title = LocalizedStrings.hideCombinedView.string
                 
             } else {
                 
-                menuItem.title = NSLocalizedString("Show Combined View", comment: "View menu, show combined view")
+                menuItem.title = LocalizedStrings.showCombinedView.string
                 
             }
             if fleetViewPosition == .oldStyle { return false }
             
             return true
             
-        case Selector.toggleAnchorageSize:
+        case #selector(BroserWindowController.toggleAnchorageSize(_:)):
             return true
             
-        case Selector.changeSakutekiCalculator:
+        case #selector(BroserWindowController.changeSakutekiCalculator(_:)):
             return fleetViewController.validateMenuItem(menuItem)
             
         default:
@@ -423,6 +414,7 @@ extension BroserWindowController {
         newController.shipOrder = fleetViewController.shipOrder
         replace(fleetViewController.view, with: newController)
         fleetViewController = newController
+        fleetViewController.delegate = self
     }
     
     private func windowHeightForFleetViewPosition(position newPosition: FleetViewPosition) -> CGFloat {
@@ -554,6 +546,47 @@ extension BroserWindowController {
     
 }
 
+extension BroserWindowController: FleetViewControllerDelegate {
+    
+    func changeShowsExtShip(_ fleetViewController: FleetViewController, showsExtShip: Bool) {
+        
+        guard self.fleetViewController == fleetViewController else { return }
+        
+        if isExtShpMode && !showsExtShip {
+            
+            // hide
+            let diffHeight = fleetViewController.shipViewSize.height
+            
+            var iFrame = informations.frame
+            iFrame.origin.y -= diffHeight
+            iFrame.size.height += diffHeight
+            informations.animator().frame = iFrame
+            
+            var sFrame = stokerContainer.frame
+            sFrame.origin.y -= diffHeight
+            stokerContainer.animator().frame = sFrame
+            
+            isExtShpMode = false
+            
+        } else if !isExtShpMode && showsExtShip {
+            
+            //show
+            let diffHeight = fleetViewController.shipViewSize.height
+            
+            var iFrame = informations.frame
+            iFrame.origin.y += diffHeight
+            iFrame.size.height -= diffHeight
+            informations.animator().frame = iFrame
+            
+            var sFrame = stokerContainer.frame
+            sFrame.origin.y += diffHeight
+            stokerContainer.animator().frame = sFrame
+
+            isExtShpMode = true
+        }
+    }
+}
+
 @available(OSX 10.12.2, *)
 private var mainTouchBars: [Int: NSTouchBar] = [:]
 @available(OSX 10.12.2, *)
@@ -586,8 +619,7 @@ extension BroserWindowController {
         
         if let mainTouchBar = mainTouchBar { return mainTouchBar }
         
-        var array: NSArray?
-        Bundle.main.loadNibNamed(NSNib.Name("BroswerTouchBar"), owner: self, topLevelObjects: &array)
+        Bundle.main.loadNibNamed(NSNib.Name("BroswerTouchBar"), owner: self, topLevelObjects: nil)
         
         shipTypeSegment.bind(.selectedIndex,
                              to: tabViewItemViewControllers[0],