fixed no color selected when having no settings

fix helpview always orange
This commit is contained in:
neon443
2025-05-06 10:05:01 +01:00
parent 4157520ff4
commit 5877f3b525
3 changed files with 25 additions and 18 deletions

View File

@@ -74,7 +74,7 @@ struct HelpView: View {
var body: some View {
List {
ZStack {
Color(.accent)
Color(.tintColor)
.opacity(0.4)
.padding(.horizontal, -15)
.blur(radius: 5)

View File

@@ -45,6 +45,13 @@ struct ColorCodable: Codable, Equatable {
self.green = Double(g)
self.blue = Double(b)
}
init(uiColor: UIColor) {
var r: CGFloat = 0, g: CGFloat = 0, b: CGFloat = 0, a: CGFloat = 1.0
uiColor.getRed(&r, green: &g, blue: &b, alpha: &a)
self.red = Double(r)
self.green = Double(g)
self.blue = Double(b)
}
init(red: Double, green: Double, blue: Double) {
self.red = red
self.green = green
@@ -104,9 +111,19 @@ struct Settings: Codable, Equatable {
class SettingsViewModel: ObservableObject {
@Published var settings: Settings = Settings(
showCompletedInHome: false,
tint: ColorCodable(.blue)
tint: ColorCodable(uiColor: UIColor(named: "AccentColor")!)
)
@Published var accentChoices: [Color] = [
Color(UIColor(named: "uiColors/red")!),
Color(UIColor(named: "uiColors/orange")!),
Color(UIColor(named: "uiColors/yellow")!),
Color(UIColor(named: "uiColors/green")!),
Color(UIColor(named: "uiColors/blue")!),
Color(UIColor(named: "uiColors/indigo")!),
Color(UIColor(named: "uiColors/basic")!)
]
init(load: Bool = true) {
if load {
loadSettings()

View File

@@ -39,16 +39,6 @@ struct SettingsView: View {
return .red
}
}
let rainbow: [Color] = [
Color.UiColors.red,
Color.UiColors.orange,
Color.UiColors.yellow,
Color.UiColors.green,
Color.UiColors.blue,
Color.UiColors.indigo,
Color.UiColors.basic
]
@State private var selectedIndex: Int = 1
var body: some View {
NavigationStack {
@@ -57,20 +47,20 @@ struct SettingsView: View {
List {
ScrollView(.horizontal) {
HStack {
ForEach(0..<rainbow.count, id: \.self) { index in
ForEach(settingsModel.accentChoices, id: \.self) { color in
ZStack {
Button() {
selectedIndex = index
settingsModel.settings.tint.colorBind = rainbow[index]
settingsModel.settings.tint.colorBind = color
settingsModel.saveSettings()
} label: {
Circle()
.foregroundStyle(rainbow[index])
.foregroundStyle(color)
.frame(width: 30)
}
if selectedIndex == index {
if ColorCodable(color) == settingsModel.settings.tint {
let needContrast: Bool = ColorCodable(color) == settingsModel.settings.tint
Circle()
.foregroundStyle(index == rainbow.count-1 ? .two : .one)
.foregroundStyle(needContrast ? .two : .one)
.frame(width: 10)
}
}