diff --git a/DynamicIsland/Localizable.xcstrings b/DynamicIsland/Localizable.xcstrings index 2a1f7c1..2aeef68 100644 --- a/DynamicIsland/Localizable.xcstrings +++ b/DynamicIsland/Localizable.xcstrings @@ -18644,10 +18644,6 @@ }, "Temperature unit" : { - }, - "The MacBook icon is available only in the circular layout." : { - "comment" : "A message displayed below a toggle that lets the user choose whether to show a MacBook icon in the battery gauge of the weather widget. The message explains that the MacBook icon is only available when the weather widget is in a", - "isCommentAutoGenerated" : true }, "TheDynamicIsland" : { diff --git a/DynamicIsland/components/LockScreen/LockScreenWeatherWidget.swift b/DynamicIsland/components/LockScreen/LockScreenWeatherWidget.swift index 5d486b0..59af845 100644 --- a/DynamicIsland/components/LockScreen/LockScreenWeatherWidget.swift +++ b/DynamicIsland/components/LockScreen/LockScreenWeatherWidget.swift @@ -25,7 +25,7 @@ struct LockScreenWeatherWidget: View { chargingSegment(for: charging) } - if !isInline, let battery = snapshot.battery { + if let battery = snapshot.battery { batterySegment(for: battery) } @@ -101,7 +101,7 @@ struct LockScreenWeatherWidget: View { private func batterySegment(for info: LockScreenWeatherSnapshot.BatteryInfo) -> some View { switch snapshot.widgetStyle { case .inline: - EmptyView() + inlineBatterySegment(for: info) case .circular: circularBatterySegment(for: info) } @@ -205,6 +205,24 @@ struct LockScreenWeatherWidget: View { } .layoutPriority(1) } + + private func inlineBatterySegment(for info: LockScreenWeatherSnapshot.BatteryInfo) -> some View { + let level = clampedBatteryLevel(info.batteryLevel) + + return HStack(alignment: .firstTextBaseline, spacing: 6) { + // Optional icon (laptop vs battery glyph) + Image(systemName: info.usesLaptopSymbol ? "laptopcomputer" : batteryIconName(for: level)) + .font(.system(size: 20, weight: .semibold)) + .symbolRenderingMode(.hierarchical) + + // ✅ The actual percentage text you want in inline style + Text("\(level)%") + .font(inlinePrimaryFont) + .lineLimit(1) + .minimumScaleFactor(0.85) + } + .layoutPriority(1) + } private func circularBluetoothSegment(for info: LockScreenWeatherSnapshot.BluetoothInfo) -> some View { let clamped = clampedBatteryLevel(info.batteryLevel) diff --git a/DynamicIsland/components/Settings/SettingsView.swift b/DynamicIsland/components/Settings/SettingsView.swift index fa58da5..c193d4c 100644 --- a/DynamicIsland/components/Settings/SettingsView.swift +++ b/DynamicIsland/components/Settings/SettingsView.swift @@ -2696,14 +2696,7 @@ struct LockScreenSettings: View { if lockScreenWeatherShowsBatteryGauge { Defaults.Toggle("Use MacBook icon when on battery", key: .lockScreenWeatherBatteryUsesLaptopSymbol) - .disabled(lockScreenWeatherWidgetStyle != .circular) .settingsHighlight(id: highlightID("Use MacBook icon when on battery")) - - if lockScreenWeatherWidgetStyle != .circular { - Text("The MacBook icon is available only in the circular layout.") - .font(.caption) - .foregroundStyle(.secondary) - } } Defaults.Toggle("Show Bluetooth battery", key: .lockScreenWeatherShowsBluetooth) diff --git a/DynamicIsland/managers/LockScreenWeatherManager.swift b/DynamicIsland/managers/LockScreenWeatherManager.swift index a9f1626..580f677 100644 --- a/DynamicIsland/managers/LockScreenWeatherManager.swift +++ b/DynamicIsland/managers/LockScreenWeatherManager.swift @@ -346,7 +346,7 @@ final class LockScreenWeatherManager: ObservableObject { guard clampedLevel >= 0 else { return nil } - let usesLaptopSymbol = widgetStyle == .circular && Defaults[.lockScreenWeatherBatteryUsesLaptopSymbol] + let usesLaptopSymbol = Defaults[.lockScreenWeatherBatteryUsesLaptopSymbol] return LockScreenWeatherSnapshot.BatteryInfo( batteryLevel: clampedLevel,