Berechtigungen zeigen ihren Zustand live, Dock-Symbol wird wählbar
Die Einstellungen zeigten weiter "Anfragen", obwohl die Ortung längst lief: authorizationStatus ist eine Abfrage, keine Beobachtung, und ich hatte sie einmalig beim Öffnen gelesen. Jetzt meldet locationManagerDidChangeAuthorization die Änderung, WeatherModel führt daraus einen beobachtbaren Wert, und die Einstellungen aktualisieren sich, während das Fenster offen steht. Nach der Zustimmung wird sofort geladen statt beim nächsten Anlauf. Der Knopf "Systemeinstellungen öffnen" ganz unten zeigte fest auf den Kalenderbereich — wer ihn beim Standort drückte, landete am falschen Ort. Es gibt ihn nicht mehr; stattdessen führt jede Berechtigung in ihren eigenen Bereich, und der Knopf erscheint nur im Zustand "abgelehnt". Bei "noch nie gefragt" steht dort Anfragen, bei "erteilt" gar nichts: drei Zustände, drei Antworten. Genau daran ist die erste Fassung gescheitert. Dock-Symbol ist jetzt eine Einstellung, standardmäßig aus. Onyx läuft als LSUIElement — das war Absicht und keine Auslassung: es hat kein Hauptfenster und wäre im Dock ein Symbol, das beim Anklicken nichts öffnet, und es stünde im Programmumschalter zwischen den Programmen, mit denen man arbeitet. Wer es trotzdem will, schaltet es ein; die Wahl wird beim Start wieder angewendet.
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import SwiftUI
|
||||
import AppKit
|
||||
import OnyxNotch
|
||||
import OnyxWidgetKit
|
||||
|
||||
@@ -39,9 +40,24 @@ final class AppModel {
|
||||
didSet { defaults.set(showsMenuBarIcon, forKey: Keys.showsMenuBarIcon) }
|
||||
}
|
||||
|
||||
/// Ob Onyx im Dock auftaucht.
|
||||
///
|
||||
/// Standardmäßig nicht: Onyx ist ein Werkzeug, das in der Notch und in der
|
||||
/// Menüleiste lebt, hat kein Hauptfenster und wäre im Dock ein Symbol, das
|
||||
/// beim Anklicken nichts öffnet. Es taucht dann auch im Programmumschalter
|
||||
/// auf und steht dort zwischen den Programmen, mit denen man arbeitet.
|
||||
var showsDockIcon: Bool {
|
||||
didSet {
|
||||
guard showsDockIcon != oldValue else { return }
|
||||
defaults.set(showsDockIcon, forKey: Keys.showsDockIcon)
|
||||
NSApp.setActivationPolicy(showsDockIcon ? .regular : .accessory)
|
||||
}
|
||||
}
|
||||
|
||||
private enum Keys {
|
||||
static let displayPolicy = "onyx.displayPolicy"
|
||||
static let showsMenuBarIcon = "onyx.showsMenuBarIcon"
|
||||
static let showsDockIcon = "onyx.showsDockIcon"
|
||||
}
|
||||
|
||||
init(store: LayoutStore = .standard(), defaults: UserDefaults = .standard) {
|
||||
@@ -57,6 +73,7 @@ final class AppModel {
|
||||
// Standardmäßig sichtbar: das Menüleistensymbol ist der einzige Weg
|
||||
// zurück, wenn die Notch einmal nicht reagiert.
|
||||
self.showsMenuBarIcon = defaults.object(forKey: Keys.showsMenuBarIcon) as? Bool ?? true
|
||||
self.showsDockIcon = defaults.object(forKey: Keys.showsDockIcon) as? Bool ?? false
|
||||
}
|
||||
|
||||
// MARK: - Widgets
|
||||
|
||||
Reference in New Issue
Block a user