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
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 = "KCD(1.9b36) is not Safari/604.4.7"
+ private(set) var fleetManager: FleetManager?
- let appNameForUserAgent: String = "KCD(1.9b11) is not Safari/603.2.4"
- let fleetManager: FleetManager = FleetManager()
-
- let windowManager = WindowManager()
+ private let windowManager = WindowManager()
private let historyCleanNotifer = PeriodicNotifier(hour: 0, minutes: 7)
private let jsonTracker = JSONTracker()
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? {
private var browserWindowControllers: [ExternalBrowserWindowController] = []
private var updaters: [() -> Void] = []
- fileprivate var logedJSONViewWindowController: JSONViewWindowController?
+ private var logedJSONViewWindowController: JSONViewWindowController?
private var didLoadedMainMenu = false
var screenShotSaveDirectory: String {
get {
+
return UserDefaults.standard[.screenShotSaveDirectory] ?? ApplicationDirecrories.pictures.path
}
set {
+
UserDefaults.standard[.screenShotSaveDirectory] = newValue
}
}
return URL(fileURLWithPath: screenShotSaveDirectory)
}
- dynamic var monospaceSystemFont11: NSFont {
+ @objc dynamic var monospaceSystemFont11: NSFont {
- return NSFont.monospacedDigitSystemFont(ofSize: 11, weight: NSFontWeightRegular)
+ return NSFont.monospacedDigitSystemFont(ofSize: 11, weight: .regular)
}
- dynamic var monospaceSystemFont12: NSFont {
+ @objc dynamic var monospaceSystemFont12: NSFont {
- return NSFont.monospacedDigitSystemFont(ofSize: 12, weight: NSFontWeightRegular)
+ return NSFont.monospacedDigitSystemFont(ofSize: 12, weight: .regular)
}
- dynamic var monospaceSystemFont13: NSFont {
+ @objc dynamic var monospaceSystemFont13: NSFont {
- return NSFont.monospacedDigitSystemFont(ofSize: 13, weight: NSFontWeightRegular)
+ return NSFont.monospacedDigitSystemFont(ofSize: 13, weight: .regular)
}
// MARK: - Function
override func awakeFromNib() {
- if didLoadedMainMenu { return }
+ if didLoadedMainMenu {
+
+ return
+ }
didLoadedMainMenu = true
+ fleetManager = FleetManager()
+
ValueTransformerRegister.registerAll()
UserDefaults.standard.register(defaults: DefaultKeys.defaults)
CustomHTTPProtocol.start()
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
return windowManager.createNewBrowser()
}
-
- func registerScreenshot(_ image: NSBitmapImageRep, fromOnScreen: NSRect) {
-
- windowManager.registerScreenshot(image, fromOnScreen: fromOnScreen)
- }
-
- func fire(_ timer: Timer) {
-
- updaters.forEach { $0() }
- }
}
// MARK: - IBActions
@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]
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.removeDatabaseFile:
+ case #selector(AppDelegate.removeDatabaseFile(_:)):
+
return true
case #selector(openInDeckBuilder(_:)):
+
return true
default:
+
return windowManager.validateMenuItem(menuItem)
}
}
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 {
}
@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 let _ = mainTouchBar { return mainTouchBar }
- var topLevel: NSArray = []
- Bundle.main.loadNibNamed("MainTouchBar", owner: self, topLevelObjects: &topLevel)
+ if windowManager.isMainWindowMostFront {
+
+ return nil
+ }
+ if let _ = mainTouchBar {
+
+ return mainTouchBar
+ }
+
+ var topLevel: NSArray?
+ Bundle.main.loadNibNamed(NSNib.Name("MainTouchBar"), owner: self, topLevelObjects: &topLevel)
return mainTouchBar
}