mirror of
https://github.com/MonitorControl/MonitorControl.git
synced 2026-05-21 06:46:18 -06:00
Merge pull request #1716 from pmarell/main
This commit is contained in:
commit
8382a60708
3 changed files with 33 additions and 5 deletions
|
|
@ -11,11 +11,17 @@ import SimplyCoreAudio
|
||||||
import Sparkle
|
import Sparkle
|
||||||
|
|
||||||
class AppDelegate: NSObject, NSApplicationDelegate {
|
class AppDelegate: NSObject, NSApplicationDelegate {
|
||||||
let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
|
let statusItem: NSStatusItem = {
|
||||||
|
let item = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
|
||||||
|
item.behavior = .removalAllowed
|
||||||
|
return item
|
||||||
|
}()
|
||||||
var mediaKeyTap = MediaKeyTapManager()
|
var mediaKeyTap = MediaKeyTapManager()
|
||||||
var keyboardShortcuts = KeyboardShortcutsManager()
|
var keyboardShortcuts = KeyboardShortcutsManager()
|
||||||
let coreAudio = SimplyCoreAudio()
|
let coreAudio = SimplyCoreAudio()
|
||||||
var accessibilityObserver: NSObjectProtocol!
|
var accessibilityObserver: NSObjectProtocol!
|
||||||
|
var statusItemObserver: NSObjectProtocol!
|
||||||
|
var statusItemVisibilityChangedByUser = true
|
||||||
var reconfigureID: Int = 0 // dispatched reconfigure command ID
|
var reconfigureID: Int = 0 // dispatched reconfigure command ID
|
||||||
var sleepID: Int = 0 // sleep event ID
|
var sleepID: Int = 0 // sleep event ID
|
||||||
var safeMode = false
|
var safeMode = false
|
||||||
|
|
@ -83,7 +89,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||||
func applicationWillTerminate(_: Notification) {
|
func applicationWillTerminate(_: Notification) {
|
||||||
os_log("Goodbye!", type: .info)
|
os_log("Goodbye!", type: .info)
|
||||||
DisplayManager.shared.resetSwBrightnessForAllDisplays(noPrefSave: true)
|
DisplayManager.shared.resetSwBrightnessForAllDisplays(noPrefSave: true)
|
||||||
self.statusItem.isVisible = true
|
self.updateStatusItemVisibility(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
private func setPrefsBuildNumber() {
|
private func setPrefsBuildNumber() {
|
||||||
|
|
@ -169,6 +175,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||||
NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(self.sleepNotification), name: NSWorkspace.willSleepNotification, object: nil)
|
NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(self.sleepNotification), name: NSWorkspace.willSleepNotification, object: nil)
|
||||||
NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(self.wakeNotification), name: NSWorkspace.didWakeNotification, object: nil)
|
NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(self.wakeNotification), name: NSWorkspace.didWakeNotification, object: nil)
|
||||||
_ = DistributedNotificationCenter.default().addObserver(forName: NSNotification.Name(rawValue: NSNotification.Name.accessibilityApi.rawValue), object: nil, queue: nil) { _ in DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { self.updateMediaKeyTap() } } // listen for accessibility status changes
|
_ = DistributedNotificationCenter.default().addObserver(forName: NSNotification.Name(rawValue: NSNotification.Name.accessibilityApi.rawValue), object: nil, queue: nil) { _ in DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { self.updateMediaKeyTap() } } // listen for accessibility status changes
|
||||||
|
self.statusItemObserver = statusItem.observe(\.isVisible, options: [.old, .new]) { _, _ in self.statusItemVisibilityChanged() }
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc private func sleepNotification() {
|
@objc private func sleepNotification() {
|
||||||
|
|
@ -270,7 +277,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||||
if let bundleID = Bundle.main.bundleIdentifier {
|
if let bundleID = Bundle.main.bundleIdentifier {
|
||||||
prefs.removePersistentDomain(forName: bundleID)
|
prefs.removePersistentDomain(forName: bundleID)
|
||||||
}
|
}
|
||||||
app.statusItem.isVisible = true
|
app.updateStatusItemVisibility(true)
|
||||||
self.setDefaultPrefs()
|
self.setDefaultPrefs()
|
||||||
self.checkPermissions()
|
self.checkPermissions()
|
||||||
self.updateMediaKeyTap()
|
self.updateMediaKeyTap()
|
||||||
|
|
@ -352,4 +359,16 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||||
onboardingVc?.window?.center()
|
onboardingVc?.window?.center()
|
||||||
NSApp.activate(ignoringOtherApps: true)
|
NSApp.activate(ignoringOtherApps: true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func statusItemVisibilityChanged() {
|
||||||
|
if !self.statusItem.isVisible, self.statusItemVisibilityChangedByUser {
|
||||||
|
prefs.set(MenuIcon.hide.rawValue, forKey: PrefKey.menuIcon.rawValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func updateStatusItemVisibility(_ visible: Bool) {
|
||||||
|
statusItemVisibilityChangedByUser = false
|
||||||
|
statusItem.isVisible = visible
|
||||||
|
statusItemVisibilityChangedByUser = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ class MenuHandler: NSMenu, NSMenuDelegate {
|
||||||
if !dontClose {
|
if !dontClose {
|
||||||
self.cancelTrackingWithoutAnimation()
|
self.cancelTrackingWithoutAnimation()
|
||||||
}
|
}
|
||||||
app.statusItem.isVisible = prefs.integer(forKey: PrefKey.menuIcon.rawValue) == MenuIcon.show.rawValue ? true : false
|
app.updateStatusItemVisibility(prefs.integer(forKey: PrefKey.menuIcon.rawValue) == MenuIcon.show.rawValue ? true : false)
|
||||||
self.clearMenu()
|
self.clearMenu()
|
||||||
let currentDisplay = DisplayManager.shared.getCurrentDisplay()
|
let currentDisplay = DisplayManager.shared.getCurrentDisplay()
|
||||||
var displays: [Display] = []
|
var displays: [Display] = []
|
||||||
|
|
@ -185,7 +185,7 @@ class MenuHandler: NSMenu, NSMenuDelegate {
|
||||||
self.addDisplayMenuBlock(addedSliderHandlers: addedSliderHandlers, blockName: display.readPrefAsString(key: .friendlyName) != "" ? display.readPrefAsString(key: .friendlyName) : display.name, monitorSubMenu: monitorSubMenu, numOfDisplays: numOfDisplays, asSubMenu: asSubMenu)
|
self.addDisplayMenuBlock(addedSliderHandlers: addedSliderHandlers, blockName: display.readPrefAsString(key: .friendlyName) != "" ? display.readPrefAsString(key: .friendlyName) : display.name, monitorSubMenu: monitorSubMenu, numOfDisplays: numOfDisplays, asSubMenu: asSubMenu)
|
||||||
}
|
}
|
||||||
if addedSliderHandlers.count > 0, prefs.integer(forKey: PrefKey.menuIcon.rawValue) == MenuIcon.sliderOnly.rawValue {
|
if addedSliderHandlers.count > 0, prefs.integer(forKey: PrefKey.menuIcon.rawValue) == MenuIcon.sliderOnly.rawValue {
|
||||||
app.statusItem.isVisible = true
|
app.updateStatusItemVisibility(true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -80,6 +80,7 @@ class MenuslidersPrefsViewController: NSViewController, SettingsPane {
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
self.populateSettings()
|
self.populateSettings()
|
||||||
|
prefs.addObserver(self, forKeyPath: PrefKey.menuIcon.rawValue, context: nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func populateSettings() {
|
func populateSettings() {
|
||||||
|
|
@ -210,4 +211,12 @@ class MenuslidersPrefsViewController: NSViewController, SettingsPane {
|
||||||
app.updateMenusAndKeys()
|
app.updateMenusAndKeys()
|
||||||
self.updateGridLayout()
|
self.updateGridLayout()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
|
||||||
|
guard let object = object as? AnyObject else { return }
|
||||||
|
if object === prefs, keyPath == PrefKey.menuIcon.rawValue {
|
||||||
|
self.populateSettings()
|
||||||
|
self.updateGridLayout()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue