From ed0cdd123d00570b8bdeac186c3ea5d29b42c5a5 Mon Sep 17 00:00:00 2001 From: Ahmed Harmouche Date: Tue, 18 Aug 2026 13:23:21 +0200 Subject: [PATCH] [ios] UI fixes in Settings --- .../dashpilot/UI/DashboardSelectionView.swift | 27 +++++++---------- dashpilot-ios/dashpilot/UI/SettingsView.swift | 30 +++++++++---------- .../dashpilot/UI/ThemePickerView.swift | 22 +++++++------- 3 files changed, 35 insertions(+), 44 deletions(-) diff --git a/dashpilot-ios/dashpilot/UI/DashboardSelectionView.swift b/dashpilot-ios/dashpilot/UI/DashboardSelectionView.swift index c479604..c00c755 100644 --- a/dashpilot-ios/dashpilot/UI/DashboardSelectionView.swift +++ b/dashpilot-ios/dashpilot/UI/DashboardSelectionView.swift @@ -58,22 +58,17 @@ private struct DashboardCard: View { var body: some View { VStack(spacing: 0) { - if dashboard.type == .devRive { - RoundedRectangle(cornerRadius: 12) - .fill(Color(white: 0.16)) - .aspectRatio(16.0 / 9.0, contentMode: .fit) - } else if let name = dashboard.screenshotName, let _ = UIImage(named: name) { - Image(name) - .resizable() - .scaledToFill() - .aspectRatio(16.0 / 9.0, contentMode: .fit) - .clipped() - .clipShape(RoundedRectangle(cornerRadius: 12)) - } else { - RoundedRectangle(cornerRadius: 12) - .fill(Color(white: 0.16)) - .aspectRatio(16.0 / 9.0, contentMode: .fit) - } + Color(white: 0.16) + .aspectRatio(16.0 / 9.0, contentMode: .fit) + .overlay { + if dashboard.type != .devRive, + let name = dashboard.screenshotName, UIImage(named: name) != nil { + Image(name) + .resizable() + .scaledToFill() + } + } + .clipShape(RoundedRectangle(cornerRadius: 12)) Spacer().frame(height: 10) diff --git a/dashpilot-ios/dashpilot/UI/SettingsView.swift b/dashpilot-ios/dashpilot/UI/SettingsView.swift index 61e683e..af07d0d 100644 --- a/dashpilot-ios/dashpilot/UI/SettingsView.swift +++ b/dashpilot-ios/dashpilot/UI/SettingsView.swift @@ -44,7 +44,7 @@ struct SettingsView: View { private var showDarkModeToggle: Bool { hasSetting(.darkMode) } private var showRenderQualityControl: Bool { hasSetting(.renderQuality) } private var showVisualizerSettings: Bool { - showRenderQualityControl || showAlwaysOnBlindSpotMonitorToggle || showDarkModeToggle + showRenderQualityControl || showAlwaysOnBlindSpotMonitorToggle } private var showPhoneBatteryToggle: Bool { hasSetting(.showPhoneBattery) } private var showUseImperialToggle: Bool { hasSetting(.useImperial) } @@ -177,19 +177,17 @@ struct SettingsView: View { } } - @ViewBuilder private func dashboardThumbnail(for dashboard: DashboardConfig) -> some View { - if let name = dashboard.screenshotName, UIImage(named: name) != nil { - Image(name) - .resizable() - .scaledToFill() - .aspectRatio(16.0 / 9.0, contentMode: .fit) - .clipped() - } else { - Rectangle() - .fill(Color(white: 0.16)) - .aspectRatio(16.0 / 9.0, contentMode: .fit) - } + Color(white: 0.16) + .aspectRatio(16.0 / 9.0, contentMode: .fit) + .overlay { + if let name = dashboard.screenshotName, UIImage(named: name) != nil { + Image(name) + .resizable() + .scaledToFill() + } + } + .clipped() } // MARK: - Configuration Section @@ -220,6 +218,9 @@ struct SettingsView: View { if showPhoneBatteryToggle { SettingsToggleRow(label: "Show Phone Battery", isOn: $showPhoneBattery) } + if showDarkModeToggle { + SettingsToggleRow(label: "Dark Mode", isOn: $darkMode) + } Spacer().frame(height: 8) } .padding(.horizontal, 24) @@ -233,9 +234,6 @@ struct SettingsView: View { if showAlwaysOnBlindSpotMonitorToggle { SettingsToggleRow(label: "Always On Blind-Spot Monitor", isOn: $alwaysOnBlindSpotMonitor) } - if showDarkModeToggle { - SettingsToggleRow(label: "Dark Mode", isOn: $darkMode) - } if showRenderQualityControl { renderQualityRow } diff --git a/dashpilot-ios/dashpilot/UI/ThemePickerView.swift b/dashpilot-ios/dashpilot/UI/ThemePickerView.swift index ec4f0f8..08ca049 100644 --- a/dashpilot-ios/dashpilot/UI/ThemePickerView.swift +++ b/dashpilot-ios/dashpilot/UI/ThemePickerView.swift @@ -101,18 +101,16 @@ struct ThemePickerView: View { } } - @ViewBuilder private func thumbnail(for dashboard: DashboardConfig) -> some View { - if let name = dashboard.screenshotName, UIImage(named: name) != nil { - Image(name) - .resizable() - .scaledToFill() - .aspectRatio(16.0 / 9.0, contentMode: .fit) - .clipped() - } else { - Rectangle() - .fill(Color(white: 0.16)) - .aspectRatio(16.0 / 9.0, contentMode: .fit) - } + Color(white: 0.16) + .aspectRatio(16.0 / 9.0, contentMode: .fit) + .overlay { + if let name = dashboard.screenshotName, UIImage(named: name) != nil { + Image(name) + .resizable() + .scaledToFill() + } + } + .clipped() } }