add UserDefaults-backed Settings storage
Settings enum holds all upcoming settings-window preferences. Booleans default to false (disabled by default); includeGreedyCasks and confirmBeforeUpgradeAll default to true via register(defaults:), which provides fallbacks without writing to disk. Launch-at-login is not stored here — SMAppService will be its source of truth. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
9f848be875
commit
be49480732
|
|
@ -43,6 +43,8 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||||
// MARK: - Menu
|
// MARK: - Menu
|
||||||
|
|
||||||
func applicationDidFinishLaunching(_: Notification) {
|
func applicationDidFinishLaunching(_: Notification) {
|
||||||
|
Settings.registerDefaults()
|
||||||
|
|
||||||
statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
|
statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
|
||||||
setMenuBarIcon("brewbar-uptodate")
|
setMenuBarIcon("brewbar-uptodate")
|
||||||
|
|
||||||
|
|
|
||||||
47
BrewBar/Settings.swift
Normal file
47
BrewBar/Settings.swift
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
/// UserDefaults-backed app settings. Booleans read false for unset keys,
|
||||||
|
/// which covers the disabled-by-default settings; enabled-by-default ones
|
||||||
|
/// get their fallback via registerDefaults() (consulted only when the user
|
||||||
|
/// has never changed the value — nothing is written to disk).
|
||||||
|
///
|
||||||
|
/// Launch-at-login is intentionally absent: SMAppService is its source of
|
||||||
|
/// truth, so storing a copy here could only drift out of sync.
|
||||||
|
enum Settings {
|
||||||
|
static func registerDefaults() {
|
||||||
|
UserDefaults.standard.register(defaults: [
|
||||||
|
"includeGreedyCasks": true,
|
||||||
|
"confirmBeforeUpgradeAll": true,
|
||||||
|
])
|
||||||
|
}
|
||||||
|
|
||||||
|
static var autoUpgradeFormulae: Bool {
|
||||||
|
get { UserDefaults.standard.bool(forKey: "autoUpgradeFormulae") }
|
||||||
|
set { UserDefaults.standard.set(newValue, forKey: "autoUpgradeFormulae") }
|
||||||
|
}
|
||||||
|
|
||||||
|
static var autoUpgradeCasks: Bool {
|
||||||
|
get { UserDefaults.standard.bool(forKey: "autoUpgradeCasks") }
|
||||||
|
set { UserDefaults.standard.set(newValue, forKey: "autoUpgradeCasks") }
|
||||||
|
}
|
||||||
|
|
||||||
|
static var notifyOnNewUpdates: Bool {
|
||||||
|
get { UserDefaults.standard.bool(forKey: "notifyOnNewUpdates") }
|
||||||
|
set { UserDefaults.standard.set(newValue, forKey: "notifyOnNewUpdates") }
|
||||||
|
}
|
||||||
|
|
||||||
|
static var showCountInMenuBar: Bool {
|
||||||
|
get { UserDefaults.standard.bool(forKey: "showCountInMenuBar") }
|
||||||
|
set { UserDefaults.standard.set(newValue, forKey: "showCountInMenuBar") }
|
||||||
|
}
|
||||||
|
|
||||||
|
static var includeGreedyCasks: Bool {
|
||||||
|
get { UserDefaults.standard.bool(forKey: "includeGreedyCasks") }
|
||||||
|
set { UserDefaults.standard.set(newValue, forKey: "includeGreedyCasks") }
|
||||||
|
}
|
||||||
|
|
||||||
|
static var confirmBeforeUpgradeAll: Bool {
|
||||||
|
get { UserDefaults.standard.bool(forKey: "confirmBeforeUpgradeAll") }
|
||||||
|
set { UserDefaults.standard.set(newValue, forKey: "confirmBeforeUpgradeAll") }
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue