make it so users can CHOOSE

This commit is contained in:
686udjie 2025-11-28 00:11:56 +02:00
parent 6baa8e658b
commit a58be1bdfa

View file

@ -156,7 +156,7 @@ fileprivate struct SettingsStepperRow: View {
let step: Double let step: Double
var formatter: (Double) -> String = { "\(Int($0))" } var formatter: (Double) -> String = { "\(Int($0))" }
var showDivider: Bool = true var showDivider: Bool = true
init(icon: String, title: String, value: Binding<Double>, range: ClosedRange<Double>, step: Double, formatter: @escaping (Double) -> String = { "\(Int($0))" }, showDivider: Bool = true) { init(icon: String, title: String, value: Binding<Double>, range: ClosedRange<Double>, step: Double, formatter: @escaping (Double) -> String = { "\(Int($0))" }, showDivider: Bool = true) {
self.icon = icon self.icon = icon
self.title = title self.title = title
@ -166,24 +166,77 @@ fileprivate struct SettingsStepperRow: View {
self.formatter = formatter self.formatter = formatter
self.showDivider = showDivider self.showDivider = showDivider
} }
var body: some View { var body: some View {
VStack(spacing: 0) { VStack(spacing: 0) {
HStack { HStack {
Image(systemName: icon) Image(systemName: icon)
.frame(width: 24, height: 24) .frame(width: 24, height: 24)
.foregroundStyle(.primary) .foregroundStyle(.primary)
Text(title) Text(title)
.foregroundStyle(.primary) .foregroundStyle(.primary)
Spacer() Spacer()
Stepper(formatter(value), value: $value, in: range, step: step) Stepper(formatter(value), value: $value, in: range, step: step)
} }
.padding(.horizontal, 16) .padding(.horizontal, 16)
.padding(.vertical, 12) .padding(.vertical, 12)
if showDivider {
Divider()
.padding(.horizontal, 16)
}
}
}
}
fileprivate struct SettingsTextFieldRow: View {
let icon: String
let title: String
@Binding var value: Double
let range: ClosedRange<Double>
var showDivider: Bool = true
init(icon: String, title: String, value: Binding<Double>, range: ClosedRange<Double>, showDivider: Bool = true) {
self.icon = icon
self.title = title
self._value = value
self.range = range
self.showDivider = showDivider
}
var body: some View {
VStack(spacing: 0) {
HStack {
Image(systemName: icon)
.frame(width: 24, height: 24)
.foregroundStyle(.primary)
Text(title)
.foregroundStyle(.primary)
Spacer()
TextField("", value: $value, format: .number)
.keyboardType(.decimalPad)
.multilineTextAlignment(.trailing)
.frame(width: 60)
.onChange(of: value) { newValue in
if newValue < range.lowerBound {
value = range.lowerBound
} else if newValue > range.upperBound {
value = range.upperBound
}
}
Text("%")
.foregroundStyle(.gray)
}
.padding(.horizontal, 16)
.padding(.vertical, 12)
if showDivider { if showDivider {
Divider() Divider()
.padding(.horizontal, 16) .padding(.horizontal, 16)
@ -247,12 +300,11 @@ struct SettingsViewPlayer: View {
showDivider: true showDivider: true
) )
SettingsPickerRow( SettingsTextFieldRow(
icon: "timer", icon: "timer",
title: NSLocalizedString("Completion Percentage", comment: ""), title: NSLocalizedString("Completion Percentage", comment: ""),
options: [60.0, 70.0, 80.0, 90.0, 95.0, 100.0], value: $remainingTimePercentage,
optionToString: { "\(Int($0))%" }, range: 0...100,
selection: $remainingTimePercentage,
showDivider: false showDivider: false
) )
} }