diff --git a/DynamicIsland/components/Settings/SettingsView.swift b/DynamicIsland/components/Settings/SettingsView.swift index 6e6936e..3355f4e 100644 --- a/DynamicIsland/components/Settings/SettingsView.swift +++ b/DynamicIsland/components/Settings/SettingsView.swift @@ -3084,8 +3084,8 @@ struct LockScreenSettings: View { @Default(.lockScreenWeatherWidgetStyle) private var lockScreenWeatherWidgetStyle @Default(.lockScreenWeatherProviderSource) private var lockScreenWeatherProviderSource @Default(.lockScreenWeatherTemperatureUnit) private var lockScreenWeatherTemperatureUnit - @Default(.lockScreenWeatherShowsCharging) private var lockScreenWeatherShowsCharging - @Default(.lockScreenWeatherShowsBatteryGauge) private var lockScreenWeatherShowsBatteryGauge + @Default(.lockScreenBatteryShowsCharging) private var lockScreenWeatherShowsCharging + @Default(.lockScreenBatteryShowsBatteryGauge) private var lockScreenWeatherShowsBatteryGauge @Default(.lockScreenWeatherShowsAQI) private var lockScreenWeatherShowsAQI @Default(.lockScreenWeatherShowsSunrise) private var lockScreenWeatherShowsSunrise @Default(.lockScreenWeatherAQIScale) private var lockScreenWeatherAQIScale @@ -3230,22 +3230,22 @@ struct LockScreenSettings: View { if BatteryActivityManager.shared.hasBattery() { Section { - Defaults.Toggle("Show battery indicator", key: .lockScreenWeatherShowsBatteryGauge) + Defaults.Toggle("Show battery indicator", key: .lockScreenBatteryShowsBatteryGauge) .settingsHighlight(id: highlightID("Show battery indicator")) if lockScreenWeatherShowsBatteryGauge { - Defaults.Toggle("Use MacBook icon when on battery", key: .lockScreenWeatherBatteryUsesLaptopSymbol) + Defaults.Toggle("Use MacBook icon when on battery", key: .lockScreenBatteryUsesLaptopSymbol) .settingsHighlight(id: highlightID("Use MacBook icon when on battery")) - Defaults.Toggle("Show charging status", key: .lockScreenWeatherShowsCharging) + Defaults.Toggle("Show charging status", key: .lockScreenBatteryShowsCharging) .settingsHighlight(id: highlightID("Show charging status")) if lockScreenWeatherShowsCharging { - Defaults.Toggle("Show charging percentage", key: .lockScreenWeatherShowsChargingPercentage) + Defaults.Toggle("Show charging percentage", key: .lockScreenBatteryShowsChargingPercentage) .settingsHighlight(id: highlightID("Show charging percentage")) } - Defaults.Toggle("Show Bluetooth battery", key: .lockScreenWeatherShowsBluetooth) + Defaults.Toggle("Show Bluetooth battery", key: .lockScreenBatteryShowsBluetooth) .settingsHighlight(id: highlightID("Show Bluetooth battery")) } } header: { diff --git a/DynamicIsland/managers/LockScreenWeatherManager.swift b/DynamicIsland/managers/LockScreenWeatherManager.swift index 209f0d9..e238f7b 100644 --- a/DynamicIsland/managers/LockScreenWeatherManager.swift +++ b/DynamicIsland/managers/LockScreenWeatherManager.swift @@ -65,7 +65,7 @@ final class LockScreenWeatherManager: ObservableObject { let remaining = interval - Date().timeIntervalSince(lastFetchDate) NSLog("LockScreenWeatherManager: skipping refresh (%.0f s remaining until next fetch)", max(remaining, 0)) if let payload = latestWeatherPayload { - if Defaults[.lockScreenWeatherShowsBluetooth] { + if Defaults[.lockScreenBatteryShowsBluetooth] { BluetoothAudioManager.shared.refreshConnectedDeviceBatteries() } let snapshot = makeSnapshot(from: payload) @@ -89,7 +89,7 @@ final class LockScreenWeatherManager: ObservableObject { ) let payload = try await fetchWeatherPayload(location: location) latestWeatherPayload = payload - if Defaults[.lockScreenWeatherShowsBluetooth] { + if Defaults[.lockScreenBatteryShowsBluetooth] { BluetoothAudioManager.shared.refreshConnectedDeviceBatteries() } let snapshot = makeSnapshot(from: payload) @@ -102,9 +102,9 @@ final class LockScreenWeatherManager: ObservableObject { NSLog("LockScreenWeatherManager: failed to fetch weather - \(error.localizedDescription)") let providerSource = Defaults[.lockScreenWeatherProviderSource] - let showsCharging = Defaults[.lockScreenWeatherShowsCharging] + let showsCharging = Defaults[.lockScreenBatteryShowsCharging] let chargingInfo = showsCharging ? makeChargingInfo() : nil - let showsBatteryGauge = Defaults[.lockScreenWeatherShowsBatteryGauge] + let showsBatteryGauge = Defaults[.lockScreenBatteryShowsBatteryGauge] let widgetStyle = Defaults[.lockScreenWeatherWidgetStyle] let batteryInfo = showsBatteryGauge ? makeBatteryGaugeInfo(isCharging: chargingInfo != nil, widgetStyle: widgetStyle) : nil let showsSunriseSetting = Defaults[.lockScreenWeatherShowsSunrise] @@ -116,12 +116,12 @@ final class LockScreenWeatherManager: ObservableObject { description: snapshot?.description ?? "", locationName: snapshot?.locationName, charging: chargingInfo, - bluetooth: Defaults[.lockScreenWeatherShowsBluetooth] ? makeBluetoothInfo() : nil, + bluetooth: Defaults[.lockScreenBatteryShowsBluetooth] ? makeBluetoothInfo() : nil, battery: batteryInfo, showsLocation: snapshot?.showsLocation ?? false, airQuality: (providerSource.supportsAirQuality && Defaults[.lockScreenWeatherShowsAQI]) ? snapshot?.airQuality : nil, widgetStyle: widgetStyle, - showsChargingPercentage: Defaults[.lockScreenWeatherShowsChargingPercentage], + showsChargingPercentage: Defaults[.lockScreenBatteryShowsChargingPercentage], temperatureInfo: snapshot?.temperatureInfo, usesGaugeTint: Defaults[.lockScreenWeatherUsesGaugeTint], sunCycle: sunCycle, @@ -187,15 +187,15 @@ final class LockScreenWeatherManager: ObservableObject { let defaultsPublishers: [AnyPublisher] = [ Defaults.publisher(.lockScreenWeatherShowsLocation, options: []) .map { _ in () }.eraseToAnyPublisher(), - Defaults.publisher(.lockScreenWeatherShowsCharging, options: []) + Defaults.publisher(.lockScreenBatteryShowsCharging, options: []) .map { _ in () }.eraseToAnyPublisher(), - Defaults.publisher(.lockScreenWeatherShowsChargingPercentage, options: []) + Defaults.publisher(.lockScreenBatteryShowsChargingPercentage, options: []) .map { _ in () }.eraseToAnyPublisher(), - Defaults.publisher(.lockScreenWeatherShowsBluetooth, options: []) + Defaults.publisher(.lockScreenBatteryShowsBluetooth, options: []) .map { _ in () }.eraseToAnyPublisher(), - Defaults.publisher(.lockScreenWeatherShowsBatteryGauge, options: []) + Defaults.publisher(.lockScreenBatteryShowsBatteryGauge, options: []) .map { _ in () }.eraseToAnyPublisher(), - Defaults.publisher(.lockScreenWeatherBatteryUsesLaptopSymbol, options: []) + Defaults.publisher(.lockScreenBatteryUsesLaptopSymbol, options: []) .map { _ in () }.eraseToAnyPublisher(), Defaults.publisher(.lockScreenWeatherShowsSunrise, options: []) .map { _ in () }.eraseToAnyPublisher(), @@ -292,14 +292,14 @@ final class LockScreenWeatherManager: ObservableObject { private func makeSnapshot(from payload: LockScreenWeatherSnapshot) -> LockScreenWeatherSnapshot { let locationName = payload.locationName - let chargingInfo = Defaults[.lockScreenWeatherShowsCharging] ? makeChargingInfo() : nil - let bluetoothInfo = Defaults[.lockScreenWeatherShowsBluetooth] ? makeBluetoothInfo() : nil + let chargingInfo = Defaults[.lockScreenBatteryShowsCharging] ? makeChargingInfo() : nil + let bluetoothInfo = Defaults[.lockScreenBatteryShowsBluetooth] ? makeBluetoothInfo() : nil let widgetStyle = Defaults[.lockScreenWeatherWidgetStyle] let shouldShowLocation = widgetStyle == .inline && Defaults[.lockScreenWeatherShowsLocation] && !(locationName?.isEmpty ?? true) - let showsChargingPercentage = Defaults[.lockScreenWeatherShowsChargingPercentage] + let showsChargingPercentage = Defaults[.lockScreenBatteryShowsChargingPercentage] let providerSource = Defaults[.lockScreenWeatherProviderSource] let airQualityInfo = (Defaults[.lockScreenWeatherShowsAQI] && providerSource.supportsAirQuality) ? payload.airQuality : nil - let batteryInfo = Defaults[.lockScreenWeatherShowsBatteryGauge] ? makeBatteryGaugeInfo(isCharging: chargingInfo != nil, widgetStyle: widgetStyle) : nil + let batteryInfo = Defaults[.lockScreenBatteryShowsBatteryGauge] ? makeBatteryGaugeInfo(isCharging: chargingInfo != nil, widgetStyle: widgetStyle) : nil let usesGaugeTint = Defaults[.lockScreenWeatherUsesGaugeTint] let showsSunriseSetting = Defaults[.lockScreenWeatherShowsSunrise] let shouldShowSunrise = showsSunriseSetting && widgetStyle == .inline && payload.sunCycle?.sunrise != nil @@ -357,7 +357,7 @@ final class LockScreenWeatherManager: ObservableObject { guard clampedLevel >= 0 else { return nil } - let usesLaptopSymbol = Defaults[.lockScreenWeatherBatteryUsesLaptopSymbol] + let usesLaptopSymbol = Defaults[.lockScreenBatteryUsesLaptopSymbol] return LockScreenWeatherSnapshot.BatteryInfo( batteryLevel: clampedLevel, diff --git a/DynamicIsland/models/Constants.swift b/DynamicIsland/models/Constants.swift index 4f00e16..6b2d169 100644 --- a/DynamicIsland/models/Constants.swift +++ b/DynamicIsland/models/Constants.swift @@ -548,11 +548,6 @@ extension Defaults.Keys { static let enableLockScreenTimerWidget = Key("enableLockScreenTimerWidget", default: true) static let lockScreenWeatherRefreshInterval = Key("lockScreenWeatherRefreshInterval", default: 30 * 60) static let lockScreenWeatherShowsLocation = Key("lockScreenWeatherShowsLocation", default: true) - static let lockScreenWeatherShowsCharging = Key("lockScreenWeatherShowsCharging", default: true) - static let lockScreenWeatherShowsChargingPercentage = Key("lockScreenWeatherShowsChargingPercentage", default: true) - static let lockScreenWeatherShowsBluetooth = Key("lockScreenWeatherShowsBluetooth", default: true) - static let lockScreenWeatherShowsBatteryGauge = Key("lockScreenWeatherShowsBatteryGauge", default: true) - static let lockScreenWeatherBatteryUsesLaptopSymbol = Key("lockScreenWeatherBatteryUsesLaptopSymbol", default: true) static let lockScreenWeatherShowsSunrise = Key("lockScreenWeatherShowsSunrise", default: true) static let lockScreenWeatherWidgetStyle = Key("lockScreenWeatherWidgetStyle", default: .circular) static let lockScreenWeatherTemperatureUnit = Key("lockScreenWeatherTemperatureUnit", default: .celsius) @@ -578,6 +573,12 @@ extension Defaults.Keys { static let showPowerStatusIcons = Key("showPowerStatusIcons", default: true) static let playLowBatteryAlertSound = Key("playLowBatteryAlertSound", default: true) + static let lockScreenBatteryShowsBatteryGauge = Key("lockScreenWeatherShowsBatteryGauge", default: true) + static let lockScreenBatteryUsesLaptopSymbol = Key("lockScreenWeatherBatteryUsesLaptopSymbol", default: true) + static let lockScreenBatteryShowsCharging = Key("lockScreenWeatherShowsCharging", default: true) + static let lockScreenBatteryShowsChargingPercentage = Key("lockScreenWeatherShowsChargingPercentage", default: true) + static let lockScreenBatteryShowsBluetooth = Key("lockScreenWeatherShowsBluetooth", default: true) + // MARK: Downloads static let enableDownloadListener = Key("enableDownloadListener", default: true) static let enableSafariDownloads = Key("enableSafariDownloads", default: true)