From c31a47515e9fb427db7025d2b25f076a46256e41 Mon Sep 17 00:00:00 2001 From: Pantelis Giazitsis Date: Fri, 28 Nov 2025 16:42:22 +0200 Subject: [PATCH 1/3] Handle case of tinted state --- station-widget/Views/StationWidgetView.swift | 48 ++++++++++++-------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/station-widget/Views/StationWidgetView.swift b/station-widget/Views/StationWidgetView.swift index dd754ef58..e8da4df74 100644 --- a/station-widget/Views/StationWidgetView.swift +++ b/station-widget/Views/StationWidgetView.swift @@ -12,24 +12,34 @@ import WidgetKit struct StationWidgetView: View { let entry: StationTimelineEntry @Environment(\.widgetFamily) var family: WidgetFamily - - var body: some View { - Group { - switch entry.timelineCase { - case .station(let device, let followState): - stationView(device: device, followState: followState, uiMode: entry.weatherOverViewMode) - case .loggedOut: - LoggedOutView() - case .empty: - emptyView - case .error(let info): - errorView(info: info) - case .selectStation: - selectStationView - } - } - .widgetURL(entry.timelineCase.widgetUrl) - } + @Environment(\.widgetRenderingMode) var renderingMode + + var body: some View { + Group { + switch entry.timelineCase { + case .station(let device, let followState): + stationView(device: device, followState: followState, uiMode: entry.weatherOverViewMode) + .modify { view in + if renderingMode == .accented { + view + .luminanceToAlpha() + .widgetAccentable() + } else { + view + } + } + case .loggedOut: + LoggedOutView() + case .empty: + emptyView + case .error(let info): + errorView(info: info) + case .selectStation: + selectStationView + } + } + .widgetURL(entry.timelineCase.widgetUrl) + } } private extension StationWidgetView { @@ -290,7 +300,7 @@ struct StationWidgetView_Preview: PreviewProvider { errorInfo: nil, // .init(title: "This is an error title", // description: LocalizableString.Error.noInternetAccess.localized), isLoggedIn: true)) - .previewContext(WidgetPreviewContext(family: .systemMedium)) + .previewContext(WidgetPreviewContext(family: .systemLarge)) } .containerBackground(for: .widget) { Color(colorEnum: .top) From 69459f7ca1186949fd7083f5f100a268d76f9ba5 Mon Sep 17 00:00:00 2001 From: Pantelis Giazitsis Date: Fri, 28 Nov 2025 17:14:24 +0200 Subject: [PATCH 2/3] Fixed colors for tinted state --- .../WeatherOverview/WeatherOverviewView.swift | 6 ++++-- station-widget/Views/StationWidgetView.swift | 20 ++++++++++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/PresentationLayer/UIComponents/BaseComponents/WeatherOverview/WeatherOverviewView.swift b/PresentationLayer/UIComponents/BaseComponents/WeatherOverview/WeatherOverviewView.swift index 33989764b..67543e77d 100644 --- a/PresentationLayer/UIComponents/BaseComponents/WeatherOverview/WeatherOverviewView.swift +++ b/PresentationLayer/UIComponents/BaseComponents/WeatherOverview/WeatherOverviewView.swift @@ -14,6 +14,8 @@ struct WeatherOverviewView: View { var showSecondaryFields: Bool = false let noDataText: LocalizableString var lastUpdatedText: String? + var dataViewBackground: ColorEnum = .top + var secondaryFieldsViewBackground: ColorEnum = .layer1 var buttonTitle: String? var isButtonEnabled: Bool = true var buttonAction: (() -> Void)? @@ -41,14 +43,14 @@ struct WeatherOverviewView: View { noDataView } } - .WXMCardStyle(backgroundColor: Color(colorEnum: .top), + .WXMCardStyle(backgroundColor: Color(colorEnum: dataViewBackground), insideHorizontalPadding: CGFloat(.defaultSidePadding), insideVerticalPadding: mainViewVerticalPadding, cornerRadius: CGFloat(.cardCornerRadius)) if showSecondaryFields { secondaryFieldsView - .WXMCardStyle(backgroundColor: Color(colorEnum: .layer1), + .WXMCardStyle(backgroundColor: Color(colorEnum: secondaryFieldsViewBackground), insideHorizontalPadding: CGFloat(.defaultSidePadding), insideVerticalPadding: 0.0, cornerRadius: CGFloat(.cardCornerRadius)) diff --git a/station-widget/Views/StationWidgetView.swift b/station-widget/Views/StationWidgetView.swift index e8da4df74..a027d4142 100644 --- a/station-widget/Views/StationWidgetView.swift +++ b/station-widget/Views/StationWidgetView.swift @@ -13,6 +13,9 @@ struct StationWidgetView: View { let entry: StationTimelineEntry @Environment(\.widgetFamily) var family: WidgetFamily @Environment(\.widgetRenderingMode) var renderingMode + private var isTinted: Bool { + renderingMode == .accented + } var body: some View { Group { @@ -121,7 +124,10 @@ private extension StationWidgetView { Spacer() - WeatherOverviewView(mode: .minimal, weather: device.weather, noDataText: followState.weatherNoDataText) + WeatherOverviewView(mode: .minimal, + weather: device.weather, + noDataText: followState.weatherNoDataText, + dataViewBackground: isTinted ? .noColor : .top) } .padding(.vertical, CGFloat(.smallSidePadding)) .widgetBackground { @@ -137,7 +143,10 @@ private extension StationWidgetView { titleView(device: device, followState: followState) .padding(.horizontal, CGFloat(.mediumSidePadding)) - WeatherOverviewView(mode: uiMode, weather: device.weather, noDataText: followState.weatherNoDataText) + WeatherOverviewView(mode: uiMode, + weather: device.weather, + noDataText: followState.weatherNoDataText, + dataViewBackground: isTinted ? .noColor : .top) Spacer(minLength: 0.0) } @@ -153,7 +162,12 @@ private extension StationWidgetView { titleView(device: device, followState: followState) .padding(.horizontal, CGFloat(.mediumSidePadding)) - WeatherOverviewView(mode: .large, weather: device.weather, showSecondaryFields: true, noDataText: followState.weatherNoDataText) + WeatherOverviewView(mode: .large, + weather: device.weather, + showSecondaryFields: true, + noDataText: followState.weatherNoDataText, + dataViewBackground: isTinted ? .noColor : .top, + secondaryFieldsViewBackground: isTinted ? .noColor : .layer1) .cornerRadius(CGFloat(.cardCornerRadius)) } From cf5dcfc1b9dee37790e757f0d34664a517892d36 Mon Sep 17 00:00:00 2001 From: Pantelis Giazitsis Date: Fri, 28 Nov 2025 17:37:36 +0200 Subject: [PATCH 3/3] Minor --- station-widget/Views/StationWidgetView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/station-widget/Views/StationWidgetView.swift b/station-widget/Views/StationWidgetView.swift index a027d4142..419c10037 100644 --- a/station-widget/Views/StationWidgetView.swift +++ b/station-widget/Views/StationWidgetView.swift @@ -23,7 +23,7 @@ struct StationWidgetView: View { case .station(let device, let followState): stationView(device: device, followState: followState, uiMode: entry.weatherOverViewMode) .modify { view in - if renderingMode == .accented { + if isTinted { view .luminanceToAlpha() .widgetAccentable()