OSDN Git Service

不要となっていたプロパティを削除
[kcd/KCD.git] / KCD / AppDelegate.swift
index fefe865..f4fba39 100644 (file)
@@ -8,25 +8,18 @@
 
 import Cocoa
 
-fileprivate extension Selector {
-    static let fireInAppDelegate = #selector(AppDelegate.fire(_:))
-    
-    static let saveLocalData = #selector(AppDelegate.saveLocalData(_:))
-    static let loadLocalData = #selector(AppDelegate.loadLocalData(_:))
-    
-    static let removeDatabaseFile = #selector(AppDelegate.removeDatabaseFile(_:))
-}
-
 @NSApplicationMain
-class AppDelegate: NSObject {
+final class AppDelegate: NSObject {
+    
     static var shared: AppDelegate {
-        // swiftlint:disable force_cast
-        return NSApplication.shared().delegate as! AppDelegate
+        
+        return NSApplication.shared.delegate as! AppDelegate    // swiftlint:disable:this force_cast
     }
-    let appNameForUserAgent: String = "Version/10.0.3 Safari/602.4.8"
-    let fleetManager: FleetManager = FleetManager()
+        
+    let appNameForUserAgent: String = "KCD(1.9b36) is not Safari/604.4.7"
+    private(set) var fleetManager: FleetManager?
     
-    let windowManager = WindowManager()
+    private let windowManager = WindowManager()
     
     private let historyCleanNotifer = PeriodicNotifier(hour: 0, minutes: 7)
     private let jsonTracker = JSONTracker()
@@ -34,196 +27,299 @@ class AppDelegate: NSObject {
     private let resourceHistory = ResourceHistoryManager()
     
     // MARK: - Variable
-    @IBOutlet var debugMenuItem: NSMenuItem!
-    @IBOutlet var billingWindowMenuItem: NSMenuItem!
+    @IBOutlet private var debugMenuItem: NSMenuItem!
+    @IBOutlet private var billingWindowMenuItem: NSMenuItem!
     
     var jsonViewWindowController: JSONViewWindowController? {
+        
         return windowManager.jsonViewWindowController
     }
     
     private var browserWindowControllers: [ExternalBrowserWindowController] = []
     private var updaters: [() -> Void] = []
-    fileprivate var logedJSONViewWindowController: JSONViewWindowController?
-    private var isLoadedMainMenu = false
+    private var logedJSONViewWindowController: JSONViewWindowController?
+    private var didLoadedMainMenu = false
     
     var screenShotSaveDirectory: String {
+        
         get {
-            return UserDefaults.standard.screenShotSaveDirectory ?? ApplicationDirecrories.pictures.path
+            
+            return UserDefaults.standard[.screenShotSaveDirectory] ?? ApplicationDirecrories.pictures.path
+        }
+        set {
+            
+            UserDefaults.standard[.screenShotSaveDirectory] = newValue
         }
-        set { UserDefaults.standard.screenShotSaveDirectory = newValue }
     }
+    
     var screenShotSaveDirectoryURL: URL {
+        
         return URL(fileURLWithPath: screenShotSaveDirectory)
     }
-    dynamic var monospaceSystemFont11: NSFont {
-        return NSFont.monospacedDigitSystemFont(ofSize: 11, weight: NSFontWeightRegular)
+    
+    @objc dynamic var monospaceSystemFont11: NSFont {
+        
+        return NSFont.monospacedDigitSystemFont(ofSize: 11, weight: .regular)
     }
-    dynamic var monospaceSystemFont12: NSFont {
-        return NSFont.monospacedDigitSystemFont(ofSize: 12, weight: NSFontWeightRegular)
+    
+    @objc dynamic var monospaceSystemFont12: NSFont {
+        
+        return NSFont.monospacedDigitSystemFont(ofSize: 12, weight: .regular)
     }
-    dynamic var monospaceSystemFont13: NSFont {
-        return NSFont.monospacedDigitSystemFont(ofSize: 13, weight: NSFontWeightRegular)
+    
+    @objc dynamic var monospaceSystemFont13: NSFont {
+        
+        return NSFont.monospacedDigitSystemFont(ofSize: 13, weight: .regular)
     }
     
     // MARK: - Function
     override func awakeFromNib() {
-        if isLoadedMainMenu { return }
-        isLoadedMainMenu = true
+        
+        if didLoadedMainMenu {
+            
+            return
+        }
+        
+        didLoadedMainMenu = true
+        
+        fleetManager = FleetManager()
         
         ValueTransformerRegister.registerAll()
-        UserDefaults.registerAllDefaults()
+        UserDefaults.standard.register(defaults: DefaultKeys.defaults)
         CustomHTTPProtocol.start()
         CommandRegister.register()
         
         windowManager.prepair()
         
-        if !UserDefaults.standard.showsDebugMenu { debugMenuItem.isHidden = true }
+        if !UserDefaults.standard[.showsDebugMenu] {
+            
+            debugMenuItem.isHidden = true
+        }
+        
         NotificationCenter.default
             .addObserver(forName: .Periodic, object: historyCleanNotifer, queue: nil) { _ in
+                
                 HistoryItemCleaner().cleanOldHistoryItems()
         }
     }
     
     func addCounterUpdate(_ updater: @escaping () -> Void) {
+        
         updaters.append(updater)
     }
+    
     func clearCache() {
+        
         CustomHTTPProtocol.clearCache()
     }
+    
     func createNewBrowser() -> ExternalBrowserWindowController {
+        
         return windowManager.createNewBrowser()
     }
-    
-    func registerScreenshot(_ image: NSBitmapImageRep, fromOnScreen: NSRect) {
-        windowManager.registerScreenshot(image, fromOnScreen: fromOnScreen)
-    }
-    
-    func fire(_ timer: Timer) {
-        updaters.forEach { $0() }
-    }
 }
+
 // MARK: - IBActions
 extension AppDelegate {
+    
     @IBAction func showHideHistory(_ sender: AnyObject?) {
+        
         windowManager.showHideHistory(sender)
     }
+    
     @IBAction func showHideSlotItemWindow(_ sender: AnyObject?) {
+        
         windowManager.showHideSlotItemWindow(sender)
     }
+    
     @IBAction func showHideUpgradableShipWindow(_ sender: AnyObject?) {
+        
         windowManager.showHideUpgradableShipWindow(sender)
     }
+    
     @IBAction func showHideScreenshotListWindow(_ sender: AnyObject?) {
+        
         windowManager.showHideScreenshotListWindow(sender)
     }
+    
     @IBAction func showHideAirBaseInfoWindow(_ sender: AnyObject?) {
+        
         windowManager.showHideAirBaseInfoWindow(sender)
     }
+    
     @IBAction func showHidePreferencePanle(_ sender: AnyObject?) {
+        
         windowManager.showHidePreferencePanle(sender)
     }
+    
     @IBAction func showWindowAduster(_ sender: AnyObject?) {
+        
         windowManager.showWindowAduster(sender)
     }
+    
     @IBAction func openNewBrowser(_ sender: AnyObject?) {
+        
         windowManager.openNewBrowser(sender)
     }
+    
     @IBAction func selectBookmark(_ sender: AnyObject?) {
+        
         windowManager.selectBookmark(sender)
     }
+    
     @IBAction func removeDatabaseFile(_ sender: AnyObject?) {
-        guard let path = Bundle.main.path(forResource: "RemoveDatabaseFileAndRestart", ofType: "app")
-            else { return print("Can not find RemoveDatabaseFileAndRestart.app") }
+        
+        guard let path = Bundle.main.path(forResource: "RemoveDatabaseFileAndRestart", ofType: "app") else {
+            
+            Logger.shared.log("Can not find RemoveDatabaseFileAndRestart.app")
+            
+            return
+        }
+        
         let process = Process()
         process.launchPath = "/usr/bin/open"
         process.arguments = [path]
         process.launch()
     }
+    
     @IBAction func showMainBrowser(_ sender: AnyObject?) {
+        
         windowManager.showMainBrowser(sender)
     }
     
     @IBAction func showShipWindow(_ sender: AnyObject?) {
+        
         windowManager.showShipWindow(sender)
     }
+    
     @IBAction func showEquipmentWindow(_ sender: AnyObject?) {
+        
         windowManager.showEquipmentWindow(sender)
     }
+    
     @IBAction func showMapWindow(_ sender: AnyObject?) {
+        
         windowManager.showMapWindow(sender)
     }
+    
     @IBAction func showOwnershipShipWindow(_ sender: AnyObject?) {
+        
         windowManager.showOwnershipShipWindow(sender)
     }
     
     @IBAction func saveLocalData(_ sender: AnyObject?) {
+        
         TSVSupport().save()
     }
+    
     @IBAction func loadLocalData(_ sender: AnyObject?) {
+        
         TSVSupport().load()
     }
     
     @IBAction func saveDocument(_ sender: AnyObject?) {
+        
         windowManager.saveDocument(sender)
     }
+    
     @IBAction func openDocument(_ sender: AnyObject?) {
+        
         windowManager.openDocument(sender)
     }
     
+    @IBAction func openInDeckBuilder(_ sender: Any?) {
+        
+        DeckBuilder().openDeckBuilder()
+    }
+    
     override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
-        guard let action = menuItem.action else { return false }
+        
+        guard let action = menuItem.action else {
+            
+            return false
+        }
+        
         switch action {
-        case Selector.saveLocalData, Selector.loadLocalData:
+            
+        case #selector(AppDelegate.saveLocalData(_:)),
+             #selector(AppDelegate.loadLocalData(_:)):
+            
+            return true
+            
+        case #selector(AppDelegate.removeDatabaseFile(_:)):
+            
             return true
-        case Selector.removeDatabaseFile:
+            
+        case #selector(openInDeckBuilder(_:)):
+            
             return true
+            
         default:
+            
             return windowManager.validateMenuItem(menuItem)
         }
     }
 }
 
 extension AppDelegate: NSApplicationDelegate {
+    
     func applicationWillFinishLaunching(_ notification: Notification) {
-        NSUserNotificationCenter.default.delegate = self
-        Timer.scheduledTimer(timeInterval: 0.33,
-                             target: self,
-                             selector: .fireInAppDelegate,
-                             userInfo: nil,
-                             repeats: true)
+        
+        if NSEvent.modifierFlags == .option {
+            
+            removeDatabaseFile(nil)
+            
+            exit(0)
+        }
+        
+        Timer.scheduledTimer(withTimeInterval: 0.33, repeats: true) { [weak self] _ in
+            
+            self?.updaters.forEach { $0() }
+        }
     }
+    
     func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
+        
         return true
     }
 }
 
 extension AppDelegate: NSUserNotificationCenterDelegate {
-    func userNotificationCenter(_ center: NSUserNotificationCenter,
-                                shouldPresent notification: NSUserNotification) -> Bool {
+    
+    func userNotificationCenter(_ center: NSUserNotificationCenter, shouldPresent notification: NSUserNotification) -> Bool {
+        
         return true
     }
 }
 
 @available(OSX 10.12.2, *)
-fileprivate var objectForTouchBar: [Int: NSTouchBar] = [:]
+private var objectForTouchBar: [Int: NSTouchBar] = [:]
 
 @available(OSX 10.12.2, *)
 extension AppDelegate: NSTouchBarProvider {
-    @IBOutlet var mainTouchBar: NSTouchBar? {
+    
+    @IBOutlet private var mainTouchBar: NSTouchBar? {
+        
         get { return objectForTouchBar[hash] }
         set { objectForTouchBar[hash] = newValue }
     }
     
     var touchBar: NSTouchBar? {
+        
         get {
-            if windowManager.isMainWindowMostFront { return nil }
+            
+            if windowManager.isMainWindowMostFront {
+                
+                return nil
+            }
             if let _ = mainTouchBar {
+                
                 return mainTouchBar
             }
-            var topLevel: NSArray = []
-            Bundle.main.loadNibNamed("MainTouchBar",
-                                     owner: self,
-                                     topLevelObjects: &topLevel)
+            
+            var topLevel: NSArray?
+            Bundle.main.loadNibNamed(NSNib.Name("MainTouchBar"), owner: self, topLevelObjects: &topLevel)
+            
             return mainTouchBar
         }
         set {}