diff --git a/Sources/SpeziMedicationSettings/ModifyMedication/AddMedicationSchedule.swift b/Sources/SpeziMedicationSettings/ModifyMedication/AddMedicationSchedule.swift index 5aec553..d19e6b7 100644 --- a/Sources/SpeziMedicationSettings/ModifyMedication/AddMedicationSchedule.swift +++ b/Sources/SpeziMedicationSettings/ModifyMedication/AddMedicationSchedule.swift @@ -24,42 +24,53 @@ struct AddMedicationSchedule: View { @State private var viewModel = CreateScheduleViewModel() // TODO: integrate this new model! + @FocusState private var hasFocus: Bool + var body: some View { VStack(spacing: 0) { Form { titleSection - .onTapGesture { - // TODO: we can do that with focus states! - UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil) + .onTapGesture { // TODO: should we use that? + hasFocus = false + } + + Section { + EditFrequencyButton(model: $viewModel) + + if case .interval = viewModel.selection { + ScheduleIntervalPicker(model: $viewModel) } - EditFrequency(frequency: $frequency, startDate: $startDate, model: $viewModel) + } header: { + Text("When will you take this?") + } + .headerProminence(.increased) // TODO: use that always? EditScheduleTime(times: $times, model: $viewModel) } + .focused($hasFocus) + VStack(alignment: .center) { - AsyncButton( - action: { - // TODO: restore! - /* - viewModel.medicationInstances.append( - viewModel.createMedicationInstance( - medicationOption, - dosage, - Schedule(frequency: frequency, times: times, startDate: startDate) - ) - )*/ - // TODO: viewModel.medicationInstances.sort() - dismiss() - }, - label: { - Text("Add Medication", bundle: .module) - .frame(maxWidth: .infinity, minHeight: 38) - } - ) + AsyncButton { + // TODO: restore! + /* + viewModel.medicationInstances.append( + viewModel.createMedicationInstance( + medicationOption, + dosage, + Schedule(frequency: frequency, times: times, startDate: startDate) + ) + )*/ + // TODO: viewModel.medicationInstances.sort() + dismiss() + } label: { + Text("Add Medication", bundle: .module) + .frame(maxWidth: .infinity, minHeight: 38) + } .buttonStyle(.borderedProminent) } .padding() .background { + // TODO: weird? Color(uiColor: .systemGroupedBackground) .edgesIgnoringSafeArea(.bottom) } diff --git a/Sources/SpeziMedicationSettings/ModifyMedication/EditFrequency.swift b/Sources/SpeziMedicationSettings/ModifyMedication/EditFrequency.swift index 0832b76..c4dd1c7 100644 --- a/Sources/SpeziMedicationSettings/ModifyMedication/EditFrequency.swift +++ b/Sources/SpeziMedicationSettings/ModifyMedication/EditFrequency.swift @@ -11,55 +11,25 @@ import SpeziViews import SwiftUI -struct EditFrequency: View { - @Binding private var frequency: Frequency - @Binding private var startDate: Date - @State private var showFrequencySheet = false +struct EditFrequency: View { // TODO: remove it! @Binding private var model: CreateScheduleViewModel var body: some View { Section { - Button { - showFrequencySheet.toggle() - } label: { - LabeledContent { - Text("Change") - .foregroundStyle(Color.accentColor) - } label: { - Text(frequency.description) - .foregroundStyle(Color.primary) - } - } + EditFrequencyButton(model: $model) if case .interval = model.selection { - Picker("Interval", selection: $model.dayInterval) { - ForEach(2..<366) { day in - Group { - if day == 2 { - Text("Every Other Day", bundle: .module) - } else { - Text("Every \(day) Days", bundle: .module) - } - } - .tag(day) - } - } - .tint(Color.accentColor) + ScheduleIntervalPicker(model: $model) } } header: { Text("When will you take this?") } .headerProminence(.increased) // TODO: bit weird? - .sheet(isPresented: $showFrequencySheet) { // TODO: does this sheet need to be placed outside the list? - ScheduleFrequencyView(frequency: $frequency, startDate: $startDate, model: $model) - } } - init(frequency: Binding, startDate: Binding, model: Binding) { - self._frequency = frequency - self._startDate = startDate + init(model: Binding) { self._model = model } } @@ -67,22 +37,10 @@ struct EditFrequency: View { #if DEBUG #Preview { - @Previewable @State var frequency: Frequency = .regularDayIntervals(1) - @Previewable @State var date: Date = .now @Previewable @State var model = CreateScheduleViewModel() List { - EditFrequency(frequency: $frequency, startDate: $date, model: $model) - } -} - -#Preview { - @Previewable @State var frequency: Frequency = .regularDayIntervals(1) - @Previewable @State var date: Date = .now - @Previewable @State var model = CreateScheduleViewModel(selection: .interval) - - List { - EditFrequency(frequency: $frequency, startDate: $date, model: $model) + EditFrequency(model: $model) } } #endif diff --git a/Sources/SpeziMedicationSettings/ModifyMedication/EditMedication.swift b/Sources/SpeziMedicationSettings/ModifyMedication/EditMedication.swift index 5229628..b6553ca 100644 --- a/Sources/SpeziMedicationSettings/ModifyMedication/EditMedication.swift +++ b/Sources/SpeziMedicationSettings/ModifyMedication/EditMedication.swift @@ -17,7 +17,8 @@ struct EditMedication: View { @Binding private var medicationInstance: MI - @State var model = CreateScheduleViewModel() // TODO: these needs to come from somewhere! + // TODO: (e.g., $medicationInstance.schedule.frequency) + @State var model = CreateScheduleViewModel() // TODO: these needs to come from somewhere! and update it back var body: some View { @@ -27,12 +28,8 @@ struct EditMedication: View { // TODO: EditDosage(dosage: $medicationInstance.dosage, medication: medicationInstance.type, initialDosage: medicationInstance.dosage) // TODO: .labelsHidden() } - Section(String(localized: "Schedule", bundle: .module)) { - EditFrequency( - frequency: $medicationInstance.schedule.frequency, - startDate: $medicationInstance.schedule.startDate, - model: $model - ) + Section(String(localized: "Schedule", bundle: .module)) { // TODO: e.g., double section! + EditFrequency(model: $model) } Section(String(localized: "Schedule Times", bundle: .module)) { EditScheduleTime(times: $medicationInstance.schedule.times, model: $model) diff --git a/Sources/SpeziMedicationSettings/ModifyMedication/EditScheduleTime.swift b/Sources/SpeziMedicationSettings/ModifyMedication/EditScheduleTime.swift index 88f2072..0918d4a 100644 --- a/Sources/SpeziMedicationSettings/ModifyMedication/EditScheduleTime.swift +++ b/Sources/SpeziMedicationSettings/ModifyMedication/EditScheduleTime.swift @@ -22,9 +22,8 @@ struct EditScheduleTime: View { var body: some View { Section { if case .weekdayBased = model.selection { - Section { - WeekdaysPicker(selection: $model.weekdays) - } + // TODO: disable days, if other day selection is already done. + WeekdaysPicker(selection: $model.weekdays) } if !model.times.isEmpty { /*ForEach($model.times) { time in @@ -42,19 +41,15 @@ struct EditScheduleTime: View { } private var addTimeButton: some View { - Button( - action: { - addNewTime() - }, - label: { - HStack { - Image(systemName: "plus.circle.fill") - .accessibilityHidden(true) - .foregroundStyle(Color.green) - Text("Add a time") - } + Button(action: addNewTime) { + Label { + Text("Add a time", bundle: .module) + } icon: { + Image(systemName: "plus.circle.fill") + .accessibilityHidden(true) + .foregroundStyle(Color.green) } - ) + } } diff --git a/Sources/SpeziMedicationSettings/ModifyMedication/EditScheduleTimeRow.swift b/Sources/SpeziMedicationSettings/ModifyMedication/EditScheduleTimeRow.swift index 06f527e..ed17079 100644 --- a/Sources/SpeziMedicationSettings/ModifyMedication/EditScheduleTimeRow.swift +++ b/Sources/SpeziMedicationSettings/ModifyMedication/EditScheduleTimeRow.swift @@ -33,16 +33,13 @@ struct EditScheduleTimeRow: View { var body: some View { HStack { - Button( - action: { - // TODO: times.removeAll(where: { $0.id == time.id }) - }, - label: { - Image(systemName: "minus.circle.fill") - .accessibilityLabel(Text("Delete", bundle: .module)) - .foregroundStyle(Color.red) - } - ) + Button { + // TODO: times.removeAll(where: { $0.id == time.id }) + } label: { + Image(systemName: "minus.circle.fill") + .accessibilityLabel(Text("Delete", bundle: .module)) + .foregroundStyle(Color.red) + } .buttonStyle(.borderless) ScheduledTimeDatePicker( diff --git a/Sources/SpeziMedicationSettings/ModifyMedication/ScheduleFrequencyView.swift b/Sources/SpeziMedicationSettings/ModifyMedication/ScheduleFrequencyView.swift deleted file mode 100644 index c3102fb..0000000 --- a/Sources/SpeziMedicationSettings/ModifyMedication/ScheduleFrequencyView.swift +++ /dev/null @@ -1,189 +0,0 @@ -// -// This source file is part of the Stanford Spezi open-source project -// -// SPDX-FileCopyrightText: 2022 Stanford University and the project authors (see CONTRIBUTORS.md) -// -// SPDX-License-Identifier: MIT -// - -import SpeziMedication -import SwiftUI - - -struct ScheduleFrequencyView: View { - @Environment(\.dismiss) - private var dismiss - - @Binding private var model: CreateScheduleViewModel - - @Binding private var outsideFrequency: Frequency - @Binding private var startDate: Date - - @State private var frequency: Frequency - @State private var regularInterval: Int = 1 - @State private var daysOfTheWeek: Weekdays = .all - - - var body: some View { - // TODO: remove swiftlint - NavigationStack { // swiftlint:disable:this closure_body_length - Form {// swiftlint:disable:this closure_body_length - // TODO: make this a reusable picker! - Picker("Schedule Options", selection: $model.selection) { - ForEach(ScheduleFrequencySelection.allCases, id: \.rawValue) { selection in - LabeledContent { - EmptyView() - } label: { - Text(selection.localizedStringResource) - if let explanation = selection.explanation { - Text("\"\(explanation)\"", bundle: .module) - .font(.footnote) - } - } - .tag(selection) - } - } - .pickerStyle(.inline) - - // TODO: remove olld stuff! - Section { - Picker("Frequency", selection: $frequency) { - Text("At Regular Intervals", bundle: .module) - .tag(Frequency.regularDayIntervals(regularInterval)) - Text("On Specific Days of the Week", bundle: .module) - .tag(Frequency.specificDaysOfWeek(daysOfTheWeek)) - Text("As Needed", bundle: .module) - .tag(Frequency.asNeeded) - } - .pickerStyle(.inline) - .labelsHidden() - } - if case .regularDayIntervals = frequency { - regularDayIntervalsSection - } - if case .specificDaysOfWeek = frequency { - specificDaysOfWeekSection - } - Section { - startDateSection - } - } - .toolbar { - toolbar - } - } - // TODO: inline navigation title for the topic! - } - - @ViewBuilder private var regularDayIntervalsSection: some View { - Section(String(localized: "Choose Interval", bundle: .module)) { - Picker("Every", selection: $regularInterval) { - ForEach(1..<366) { day in - Text(Frequency.regularDayIntervals(day).description) - .tag(day) - } - } - .pickerStyle(.wheel) - .onChange(of: regularInterval) { - updateSchedule() - } - } - } - - @ViewBuilder private var specificDaysOfWeekSection: some View { - Section(String(localized: "Choose Days", bundle: .module)) { - ForEach(Weekdays.allCases) { weekday in - if daysOfTheWeek.contains(weekday) { - HStack { - Button(weekday.localizedDescription) { - insert(dayOfTheWeek: weekday) - } - .foregroundStyle(Color.primary) - Spacer() - Image(systemName: "checkmark") - .accessibilityHidden(true) - .foregroundStyle(Color.accentColor) - } - } else { - Button(weekday.localizedDescription) { - remove(dayOfTheWeek: weekday) - } - .foregroundStyle(Color.primary) - } - } - } - } - - @ViewBuilder private var startDateSection: some View { - DatePicker( - selection: $startDate, - in: Date.distantPast...Date.now, - displayedComponents: .date - ) { - Text("Start Date", bundle: .module) - } - } - - @ToolbarContentBuilder private var toolbar: some ToolbarContent { - ToolbarItem(placement: .cancellationAction) { - Button(String(localized: "Cancel", bundle: .module)) { - dismiss() - } - } - ToolbarItem(placement: .primaryAction) { - Button(String(localized: "Done", bundle: .module)) { - outsideFrequency = frequency - dismiss() - } - .bold() - } - } - - - init(frequency: Binding, startDate: Binding, model: Binding) { - self._outsideFrequency = frequency - self._startDate = startDate - self._frequency = State(wrappedValue: frequency.wrappedValue) - - switch frequency.wrappedValue { - case let .specificDaysOfWeek(daysOfTheWeek): - self._daysOfTheWeek = State(wrappedValue: daysOfTheWeek) - case let .regularDayIntervals(regularDayIntervals): - self._regularInterval = State(wrappedValue: regularDayIntervals) - case .asNeeded: - break - } - - self._model = model - } - - - private func insert(dayOfTheWeek: Weekdays) { - daysOfTheWeek.subtract(dayOfTheWeek) - updateSchedule() - } - - private func remove(dayOfTheWeek: Weekdays) { - daysOfTheWeek.insert(dayOfTheWeek) - updateSchedule() - } - - private func updateSchedule() { - switch frequency { - case .regularDayIntervals: - self.frequency = .regularDayIntervals(regularInterval) - case .specificDaysOfWeek: - self.frequency = .specificDaysOfWeek(daysOfTheWeek) - case .asNeeded: - return - } - } -} - -#Preview { - @Previewable @State var frequency: Frequency = .specificDaysOfWeek(.all) - @Previewable @State var startDate: Date = .now - @Previewable @State var model = CreateScheduleViewModel() - - return ScheduleFrequencyView(frequency: $frequency, startDate: $startDate, model: $model) -} diff --git a/Sources/SpeziMedicationSettings/MoveToScheduler/CreateScheduleViewModel.swift b/Sources/SpeziMedicationSettings/MoveToScheduler/CreateScheduleViewModel.swift index fe9ff17..5918c61 100644 --- a/Sources/SpeziMedicationSettings/MoveToScheduler/CreateScheduleViewModel.swift +++ b/Sources/SpeziMedicationSettings/MoveToScheduler/CreateScheduleViewModel.swift @@ -48,7 +48,6 @@ public struct CreateScheduleViewModel { } ?? .never - let (hours, minutes) = times.reduce(into: ([Int](), [Int]())) { partialResult, date in partialResult.0.append(Calendar.current.component(.hour, from: date)) partialResult.1.append(Calendar.current.component(.minute, from: date)) diff --git a/Sources/SpeziMedicationSettings/MoveToScheduler/EditFrequencyButton.swift b/Sources/SpeziMedicationSettings/MoveToScheduler/EditFrequencyButton.swift new file mode 100644 index 0000000..ba3b259 --- /dev/null +++ b/Sources/SpeziMedicationSettings/MoveToScheduler/EditFrequencyButton.swift @@ -0,0 +1,48 @@ +// +// This source file is part of the Stanford Spezi open-source project +// +// SPDX-FileCopyrightText: 2022 Stanford University and the project authors (see CONTRIBUTORS.md) +// +// SPDX-License-Identifier: MIT +// + +import SpeziViews +import SwiftUI + + +public struct EditFrequencyButton: View { + @Binding private var model: CreateScheduleViewModel + @State private var showFrequencySheet = false + + public var body: some View { + Button { + showFrequencySheet = true + } label: { + LabeledContent { + Text("Change", bundle: .module) + .foregroundStyle(Color.accentColor) + } label: { + Text(model.selection.localizedStringResource) + .foregroundStyle(Color.primary) + } + } + .sheet(isPresented: $showFrequencySheet) { + ScheduleFrequencyPickerSheet("Frequency", model: $model) // TODO: title? + } + } + + public init(model: Binding) { + self._model = model + } +} + + +#if DEBUG +#Preview { + @Previewable @State var model = CreateScheduleViewModel() + + List { + EditFrequencyButton(model: $model) + } +} +#endif diff --git a/Sources/SpeziMedicationSettings/MoveToScheduler/ScheduleFrequencyPicker.swift b/Sources/SpeziMedicationSettings/MoveToScheduler/ScheduleFrequencyPicker.swift new file mode 100644 index 0000000..ef317c1 --- /dev/null +++ b/Sources/SpeziMedicationSettings/MoveToScheduler/ScheduleFrequencyPicker.swift @@ -0,0 +1,48 @@ +// +// This source file is part of the Stanford Spezi open-source project +// +// SPDX-FileCopyrightText: 2022 Stanford University and the project authors (see CONTRIBUTORS.md) +// +// SPDX-License-Identifier: MIT +// + +import SpeziMedication +import SwiftUI + + +public struct ScheduleFrequencyPicker: View { + @Binding private var model: CreateScheduleViewModel + + public var body: some View { + Picker(selection: $model.selection) { + ForEach(ScheduleFrequencySelection.allCases, id: \.rawValue) { selection in + LabeledContent { + EmptyView() + } label: { + Text(selection.localizedStringResource) + if let explanation = selection.explanation { + Text("\"\(explanation)\"", bundle: .module) + .font(.footnote) + } + } + .tag(selection) + } + } label: { + Text("Schedule Options", bundle: .module) + } + } + + public init(model: Binding) { + self._model = model + } +} + + +#if DEBUG +#Preview { + @Previewable @State var model = CreateScheduleViewModel() + List { + ScheduleFrequencyPicker(model: $model) + } +} +#endif diff --git a/Sources/SpeziMedicationSettings/MoveToScheduler/ScheduleFrequencyPickerSheet.swift b/Sources/SpeziMedicationSettings/MoveToScheduler/ScheduleFrequencyPickerSheet.swift new file mode 100644 index 0000000..1b6050d --- /dev/null +++ b/Sources/SpeziMedicationSettings/MoveToScheduler/ScheduleFrequencyPickerSheet.swift @@ -0,0 +1,63 @@ +// +// This source file is part of the Stanford Spezi open-source project +// +// SPDX-FileCopyrightText: 2022 Stanford University and the project authors (see CONTRIBUTORS.md) +// +// SPDX-License-Identifier: MIT +// + +import SpeziMedication +import SwiftUI + + +public struct ScheduleFrequencyPickerSheet: View { + private let title: Text + + @Environment(\.dismiss) + private var dismiss + + @Binding private var model: CreateScheduleViewModel + + + public var body: some View { + NavigationStack { + Form { + ScheduleFrequencyPicker(model: $model) + .pickerStyle(.inline) + } + .navigationTitle(title) + .navigationBarTitleDisplayMode(.inline) + .toolbar(content: toolbar) + } + } + + + public init(_ title: Text, model: Binding) { + self.title = title + self._model = model + } + + public init(_ titleKey: LocalizedStringResource, model: Binding) { + self.init(Text(titleKey), model: model) + } + + @ToolbarContentBuilder + private func toolbar() -> some ToolbarContent { + ToolbarItem { + Button { + dismiss() + } label: { + Text("Done", bundle: .module) + } + .bold() + } + } +} + + +#if DEBUG +#Preview { + @Previewable @State var model = CreateScheduleViewModel() + ScheduleFrequencyPickerSheet("Schedule", model: $model) +} +#endif diff --git a/Sources/SpeziMedicationSettings/MoveToScheduler/ScheduleIntervalPicker.swift b/Sources/SpeziMedicationSettings/MoveToScheduler/ScheduleIntervalPicker.swift new file mode 100644 index 0000000..58aa7e1 --- /dev/null +++ b/Sources/SpeziMedicationSettings/MoveToScheduler/ScheduleIntervalPicker.swift @@ -0,0 +1,46 @@ +// +// This source file is part of the Stanford Spezi open-source project +// +// SPDX-FileCopyrightText: 2022 Stanford University and the project authors (see CONTRIBUTORS.md) +// +// SPDX-License-Identifier: MIT +// + +import SpeziViews +import SwiftUI + + +struct ScheduleIntervalPicker: View { + @Binding private var model: CreateScheduleViewModel + + var body: some View { + Picker("Interval", selection: $model.dayInterval) { + ForEach(2..<366) { day in + Group { + if day == 2 { + Text("Every Other Day", bundle: .module) + } else { + Text("Every \(day) Days", bundle: .module) + } + } + .tag(day) + } + } + .tint(Color.accentColor) + } + + init(model: Binding) { + self._model = model + } +} + + +#if DEBUG +#Preview { + @Previewable @State var model = CreateScheduleViewModel(selection: .interval) + + List { + EditFrequency(model: $model) + } +} +#endif diff --git a/Sources/SpeziMedicationSettings/MoveToScheduler/WeekdayButton.swift b/Sources/SpeziMedicationSettings/MoveToScheduler/WeekdayButton.swift index db01b84..5632d2e 100644 --- a/Sources/SpeziMedicationSettings/MoveToScheduler/WeekdayButton.swift +++ b/Sources/SpeziMedicationSettings/MoveToScheduler/WeekdayButton.swift @@ -16,10 +16,13 @@ public struct WeekdayButton: View { private let selected: Bool private let action: () -> Void + @Environment(\.isEnabled) + private var isEnabled + public var body: some View { Button(action: action) { Text(Calendar.current.veryShortWeekdaySymbols[weekday.ordinal - 1]) - .foregroundStyle(selected ? .white : .primary) + .foregroundStyle(selected ? .white : (isEnabled ? .primary : .secondary)) .fontWeight(.semibold) .background { Group { @@ -62,4 +65,15 @@ public struct WeekdayButton: View { } } } + +#Preview { + @Previewable @State var selected = false + + List { + WeekdayButton(weekday: .friday, selected: selected) { + selected.toggle() + } + .disabled(true) + } +} #endif diff --git a/Sources/SpeziMedicationSettings/MoveToScheduler/WeekdayPicker.swift b/Sources/SpeziMedicationSettings/MoveToScheduler/WeekdaysPicker.swift similarity index 57% rename from Sources/SpeziMedicationSettings/MoveToScheduler/WeekdayPicker.swift rename to Sources/SpeziMedicationSettings/MoveToScheduler/WeekdaysPicker.swift index f1c148d..f63660a 100644 --- a/Sources/SpeziMedicationSettings/MoveToScheduler/WeekdayPicker.swift +++ b/Sources/SpeziMedicationSettings/MoveToScheduler/WeekdaysPicker.swift @@ -22,7 +22,10 @@ import SwiftUI /// } /// } /// ``` -public struct WeekdaysPicker: View { // TODO: could also be SpeziViews? +public struct WeekdaysPicker: View { + private let disabledWeekdays: Set + private let allowEmptySelection: Bool + @Binding private var weekdays: Set public var body: some View { @@ -30,11 +33,14 @@ public struct WeekdaysPicker: View { // TODO: could also be SpeziViews? ForEach(Locale.Weekday.allCases, id: \.self) { weekday in WeekdayButton(weekday: weekday, selected: weekdays.contains(weekday)) { if weekdays.contains(weekday) { - weekdays.remove(weekday) + if weekdays.count > 1 || allowEmptySelection { + weekdays.remove(weekday) + } } else { weekdays.insert(weekday) } } + .disabled(disabledWeekdays.contains(weekday)) if Locale.Weekday.allCases.last != weekday { Spacer() @@ -42,24 +48,35 @@ public struct WeekdaysPicker: View { // TODO: could also be SpeziViews? } } .frame(maxWidth: .infinity) + .onChange(of: disabledWeekdays, initial: true) { + weekdays.subtract(disabledWeekdays) + } } /// Create a new weekday picker. /// - Parameter weekdays: The weekday selection. - public init(selection weekdays: Binding>) { + /// - Parameter disabledWeekdays: The set of weekdays for which selection should be disabled. + /// - Parameter allowEmptySelection: If `true` user will be able to de-select the last weekday. + public init( + selection weekdays: Binding>, + disabled disabledWeekdays: Set = [], + allowEmptySelection: Bool = false + ) { self._weekdays = weekdays + self.disabledWeekdays = disabledWeekdays + self.allowEmptySelection = allowEmptySelection } } #if DEBUG #Preview { - @Previewable @State var weekdays: Set = [.monday, .tuesday] + @Previewable @State var weekdays: Set = [.monday, .tuesday, .friday] List { Section("Weekdays") { - WeekdaysPicker(selection: $weekdays) + WeekdaysPicker(selection: $weekdays, disabled: [.friday, .saturday]) } } } diff --git a/Sources/SpeziMedicationSettings/Resources/Localizable.xcstrings b/Sources/SpeziMedicationSettings/Resources/Localizable.xcstrings index 03c495e..e691d28 100644 --- a/Sources/SpeziMedicationSettings/Resources/Localizable.xcstrings +++ b/Sources/SpeziMedicationSettings/Resources/Localizable.xcstrings @@ -28,9 +28,6 @@ }, "As Needed" : { - }, - "At Regular Intervals" : { - }, "Cancel" : { "localizations" : { @@ -44,12 +41,6 @@ }, "Change" : { - }, - "Choose Days" : { - - }, - "Choose Interval" : { - }, "Close" : { "localizations" : { @@ -75,9 +66,6 @@ }, "Dosage Picker" : { - }, - "Every" : { - }, "Every %lld days" : { "extractionState" : "stale", @@ -167,9 +155,6 @@ }, "Set a Schedule" : { - }, - "Start Date" : { - }, "Use the \"+\" button at the top to add all the medications you take." : {