// // KMBaseWindowController.swift // PDF Reader Pro // // Created by tangchao on 2023/5/11. // import Cocoa class KMBaseWindowController: NSWindowController { var cancelAction: KMCommonBlock? var pdfDocument: CPDFDocument? var isBates: Bool = false var isBatch: Bool = false //是否批量模块进入 deinit { Swift.debugPrint(self.className + "已释放") self.removeNotification() } override func windowDidLoad() { super.windowDidLoad() // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file. self.initSubViews() self.initDefaultValue() self.initNotification() } func initSubViews() {} func initDefaultValue() { self.window?.appearance = NSApp.appearance } func initNotification() { DistributedNotificationCenter.default().addObserver(self, selector: #selector(_themeChanged), name: NSApplication.interfaceThemeChangedNotification, object: nil) } func removeNotification() { DistributedNotificationCenter.default().removeObserver(self) } func interfaceThemeDidChanged(_ appearance: NSAppearance.Name) { } } // MARK: - Private Methods extension KMBaseWindowController { @objc private func _themeChanged(_ sender: Notification) { let isDarkModel = KMAdvertisementConfig.isDarkModel() if isDarkModel { self.window?.appearance = .init(named: .darkAqua) } else { self.window?.appearance = .init(named: .aqua) } Task { @MainActor in self.interfaceThemeDidChanged(self.window?.appearance?.name ?? .aqua) } } }