|
|
|
|
@ -51,10 +51,12 @@ struct CountdownEditView : View { |
|
|
|
|
var preset: Preset? = nil |
|
|
|
|
|
|
|
|
|
@Binding var isPresented: Bool |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@State var nameString: String = "" |
|
|
|
|
|
|
|
|
|
@State var secondsString: String = "" |
|
|
|
|
@State var minutesString: String = "" |
|
|
|
|
@State var nameString: String = "" |
|
|
|
|
@State var hoursString: String = "" |
|
|
|
|
|
|
|
|
|
@State var soundRepeatCount: Int16 = 0 |
|
|
|
|
@State var image: CoolPic = .pic1 |
|
|
|
|
@ -115,9 +117,10 @@ struct CountdownEditView : View { |
|
|
|
|
|
|
|
|
|
CountdownFormView( |
|
|
|
|
focusedField: _focusedField, |
|
|
|
|
nameBinding: $nameString, |
|
|
|
|
secondsBinding: $secondsString, |
|
|
|
|
minutesBinding: $minutesString, |
|
|
|
|
nameBinding: $nameString, |
|
|
|
|
hoursBinding: $hoursString, |
|
|
|
|
imageBinding: $image, |
|
|
|
|
repeatCountBinding: $soundRepeatCount) |
|
|
|
|
.environmentObject(self.model) |
|
|
|
|
@ -250,13 +253,16 @@ struct CountdownEditView : View { |
|
|
|
|
|
|
|
|
|
fileprivate func _loadCountdown(_ countdown: Countdown) { |
|
|
|
|
|
|
|
|
|
let minutes = Int(countdown.duration / 60.0) |
|
|
|
|
let seconds = countdown.duration - Double(minutes * 60) |
|
|
|
|
let hours = Int(countdown.duration / 3600.0) |
|
|
|
|
let minutes = countdown.duration - Double(hours * 3600) |
|
|
|
|
let seconds = countdown.duration - Double(hours * 3600) - Double(minutes * 60) |
|
|
|
|
|
|
|
|
|
if hours > 0 { |
|
|
|
|
self.hoursString = self._numberFormatter.string(from: NSNumber(value: hours)) ?? "" |
|
|
|
|
} |
|
|
|
|
if minutes > 0 { |
|
|
|
|
self.minutesString = self._numberFormatter.string(from: NSNumber(value: minutes)) ?? "" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if seconds > 0 { |
|
|
|
|
self.secondsString = self._numberFormatter.string(from: NSNumber(value: seconds)) ?? "" |
|
|
|
|
} |
|
|
|
|
@ -285,6 +291,10 @@ struct CountdownEditView : View { |
|
|
|
|
return self._numberFormatter.number(from: self.minutesString)?.doubleValue ?? 0.0 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fileprivate var _hours: Double { |
|
|
|
|
return self._numberFormatter.number(from: self.hoursString)?.doubleValue ?? 0.0 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fileprivate func _cancel() { |
|
|
|
|
self.viewContext.rollback() |
|
|
|
|
self.isPresented = false |
|
|
|
|
@ -299,10 +309,9 @@ struct CountdownEditView : View { |
|
|
|
|
cd = Countdown(context: viewContext) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
cd.duration = self._minutes * 60.0 + self._seconds |
|
|
|
|
cd.duration = self._hours * 3600.0 + self._minutes * 60.0 + self._seconds |
|
|
|
|
if self._isNewCountdown { |
|
|
|
|
let max: Int16 |
|
|
|
|
|
|
|
|
|
do { |
|
|
|
|
let request = AbstractTimer.fetchRequest() |
|
|
|
|
let timers = try viewContext.fetch(request) |
|
|
|
|
@ -312,7 +321,6 @@ struct CountdownEditView : View { |
|
|
|
|
} else { |
|
|
|
|
max = 0 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} catch { |
|
|
|
|
max = 0 |
|
|
|
|
} |
|
|
|
|
@ -346,7 +354,6 @@ struct CountdownEditView : View { |
|
|
|
|
} else { |
|
|
|
|
cd.activity = CoreDataRequests.getOrCreateActivity(name: trimmed) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
self._saveContext() |
|
|
|
|
|