implement settings
This commit is contained in:
@@ -69,7 +69,7 @@ class Stopwatch: ObservableObject, Identifiable, Codable {
|
||||
}
|
||||
|
||||
private func startTimer() {
|
||||
timer = Timer.publish(every: 0.01, on: .main, in: .common)
|
||||
timer = Timer.publish(every: 0.001, on: .main, in: .common)
|
||||
.autoconnect()
|
||||
.sink { [weak self] _ in
|
||||
self?.tick()
|
||||
@@ -104,16 +104,44 @@ class Stopwatch: ObservableObject, Identifiable, Codable {
|
||||
elapsedTime = accumulatedTime + Date().timeIntervalSince(startTime)
|
||||
}
|
||||
|
||||
var formattedTime: String {
|
||||
func formattedTime(format: TimeFormat = .cents) -> String {
|
||||
let hours = Int(elapsedTime) / 3600
|
||||
let minutes = Int(elapsedTime) / 60 % 60
|
||||
let seconds = Int(elapsedTime) % 60
|
||||
let tenths = Int((elapsedTime.truncatingRemainder(dividingBy: 1)) * 100)
|
||||
|
||||
if hours > 0 {
|
||||
return String(format: "%02i:%02i:%02i.%02i", hours, minutes, seconds, tenths)
|
||||
} else {
|
||||
return String(format: "%02i:%02i.%02i", minutes, seconds, tenths)
|
||||
switch format {
|
||||
case .millis:
|
||||
let millis = Int((elapsedTime.truncatingRemainder(dividingBy: 1)) * 1000)
|
||||
if hours > 0 {
|
||||
return String(format: "%02i:%02i:%02i.%03i", hours, minutes, seconds, millis)
|
||||
} else {
|
||||
return String(format: "%02i:%02i.%03i", minutes, seconds, millis)
|
||||
}
|
||||
case .cents:
|
||||
let cents = Int((elapsedTime.truncatingRemainder(dividingBy: 1)) * 100)
|
||||
if hours > 0 {
|
||||
return String(format: "%02i:%02i:%02i.%02i", hours, minutes, seconds, cents)
|
||||
} else {
|
||||
return String(format: "%02i:%02i.%02i", minutes, seconds, cents)
|
||||
}
|
||||
case .tenths:
|
||||
let tenths = Int((elapsedTime.truncatingRemainder(dividingBy: 1)) * 10)
|
||||
if hours > 0 {
|
||||
return String(format: "%02i:%02i:%02i.%01i", hours, minutes, seconds, tenths)
|
||||
} else {
|
||||
return String(format: "%02i:%02i.%01i", minutes, seconds, tenths)
|
||||
}
|
||||
case .seconds:
|
||||
if hours > 0 {
|
||||
return String(format: "%02i:%02i:%02i", hours, minutes, seconds)
|
||||
} else {
|
||||
return String(format: "%02i:%02i", minutes, seconds)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Legacy support to avoid breaking existing code immediately
|
||||
var formattedTime: String {
|
||||
formattedTime(format: AppSettings.shared.timeFormat)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user