Skip to content

Commit 8e7aac4

Browse files
committed
Fix a bunch of display bugs when teh user switches between Light and Dark Mode. Took hard-coded colors out of the clock code amd moved them into the presentation layer. Cleaner way to pass info betwen the computation and presentation layers on whether numbers need to be highlighted as prime.
Dark mode/light mode work now.
1 parent baf70da commit 8e7aac4

File tree

4 files changed

+37
-32
lines changed

4 files changed

+37
-32
lines changed

MultiClock.xcodeproj/project.pbxproj

+2
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,7 @@
463463
INFOPLIST_KEY_UIRequiredDeviceCapabilities = "location-services";
464464
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
465465
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
466+
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
466467
LD_RUNPATH_SEARCH_PATHS = (
467468
"$(inherited)",
468469
"@executable_path/Frameworks",
@@ -497,6 +498,7 @@
497498
INFOPLIST_KEY_UIRequiredDeviceCapabilities = "location-services";
498499
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
499500
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
501+
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
500502
LD_RUNPATH_SEARCH_PATHS = (
501503
"$(inherited)",
502504
"@executable_path/Frameworks",

MultiClock/CivilClockView.swift

+4-2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import SwiftUI
3434

3535
struct CivilClockView: View {
3636
@EnvironmentObject var mc: MultiClock
37+
@Environment(\.colorScheme) private var colorScheme
3738

3839
var body: some View {
3940
VStack {
@@ -92,22 +93,23 @@ struct CivilClockView: View {
9293
VStack(alignment: .trailing, spacing: 6) {
9394
Text(mc.civil_metric)
9495
.font(.largeTitle)
96+
.foregroundColor(mc.civil_metric_prime ? .red : (colorScheme == .dark ? .white : .black))
9597
HStack {
9698
Image(systemName: "sunrise")
9799
.resizable()
98100
.aspectRatio(contentMode: .fit)
99101
.frame(width: 30, height: 30)
100102
Text(" ")
101103
Text(mc.civil_metric_sunrise)
102-
.foregroundColor(mc.civil_metric_sunrise_color)
104+
.foregroundColor(mc.civil_metric_sunrise_prime ? .red : (colorScheme == .dark ? .white : .black))
103105
Text(" ")
104106
Image(systemName: "sunset")
105107
.resizable()
106108
.aspectRatio(contentMode: .fit)
107109
.frame(width: 30, height: 30)
108110
Text(" ")
109111
Text(mc.civil_metric_sunset)
110-
.foregroundColor(mc.civil_metric_sunset_color)
112+
.foregroundColor(mc.civil_metric_sunset_prime ? .red : (colorScheme == .dark ? .white : .black))
111113
}
112114
}
113115
}

MultiClock/MultiClockApp.swift

+27-27
Original file line numberDiff line numberDiff line change
@@ -95,26 +95,26 @@ class MultiClock: ObservableObject {
9595

9696
// These are all strings to simplify their display in ContentView
9797
// clock times for the civil and metric views
98-
@Published var solar_hhmm = ""
99-
@Published var solar_metric = ""
100-
@Published var solar_metric_color: Color = .black
101-
@Published var civil_hhmm = ""
102-
@Published var civil_metric = ""
103-
@Published var civil_metric_color: Color = .black
98+
@Published var solar_hhmm = "---"
99+
@Published var solar_metric = "---"
100+
@Published var solar_metric_prime: Bool = false
101+
@Published var civil_hhmm = "---"
102+
@Published var civil_metric = "---"
103+
@Published var civil_metric_prime: Bool = false
104104

105105
// sunrise/sunset times for the hh:mm and metric time views
106-
@Published var solar_metric_sunrise = ""
107-
@Published var solar_metric_sunset = ""
108-
@Published var solar_hhmm_sunrise = ""
109-
@Published var solar_hhmm_sunset = ""
110-
@Published var civil_metric_sunrise = ""
111-
@Published var civil_metric_sunrise_color: Color = .black // assume not a prime time
112-
@Published var civil_metric_sunset = ""
113-
@Published var civil_metric_sunset_color: Color = .black // assume not a prime time
114-
@Published var civil_hhmm_sunrise = ""
115-
@Published var solar_metric_sunrise_color: Color = .black // assume not a prime time
116-
@Published var civil_hhmm_sunset = ""
117-
@Published var solar_metric_sunset_color: Color = .black // assume not a prime time
106+
@Published var solar_metric_sunrise = "---"
107+
@Published var solar_metric_sunset = "---"
108+
@Published var solar_hhmm_sunrise = "---"
109+
@Published var solar_hhmm_sunset = "---"
110+
@Published var civil_metric_sunrise = "---"
111+
@Published var civil_metric_sunrise_prime: Bool = false
112+
@Published var civil_metric_sunset = "---"
113+
@Published var civil_metric_sunset_prime: Bool = false
114+
@Published var civil_hhmm_sunrise = "---"
115+
@Published var solar_metric_sunrise_prime: Bool = false
116+
@Published var civil_hhmm_sunset = "---"
117+
@Published var solar_metric_sunset_prime: Bool = false
118118

119119
// These are used in the day progress view
120120
@Published var civil_day_progress = 0.0
@@ -154,14 +154,14 @@ class MultiClock: ObservableObject {
154154
return (dateFormatter.string(from: d))
155155
}
156156

157-
private func primeColor(number: String) -> Color {
157+
private func checkPrime(number: String) -> Bool {
158158
if let d = Int(number) {
159159
if (d.isPrime && mc_primetime) {
160-
return (.red)
160+
return (true)
161161
}
162162
}
163163

164-
return (.black)
164+
return (false)
165165
}
166166

167167
private func updateTimes() -> Void {
@@ -278,13 +278,13 @@ class MultiClock: ObservableObject {
278278
}
279279

280280
// Color any prime numbers, if needed
281-
civil_metric_color = primeColor(number: civil_metric)
282-
civil_metric_sunrise_color = primeColor(number: civil_metric_sunrise)
283-
civil_metric_sunset_color = primeColor(number: civil_metric_sunset)
281+
civil_metric_prime = checkPrime(number: civil_metric)
282+
civil_metric_sunrise_prime = checkPrime(number: civil_metric_sunrise)
283+
civil_metric_sunset_prime = checkPrime(number: civil_metric_sunset)
284284

285-
solar_metric_color = primeColor(number: solar_metric)
286-
solar_metric_sunrise_color = primeColor(number: solar_metric_sunrise)
287-
solar_metric_sunset_color = primeColor(number: solar_metric_sunset)
285+
solar_metric_prime = checkPrime(number: solar_metric)
286+
solar_metric_sunrise_prime = checkPrime(number: solar_metric_sunrise)
287+
solar_metric_sunset_prime = checkPrime(number: solar_metric_sunset)
288288
}
289289

290290
func start() {

MultiClock/SolarClockView.swift

+4-3
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import SwiftUI
3434

3535
struct SolarClockView: View {
3636
@EnvironmentObject var mc: MultiClock
37+
@Environment(\.colorScheme) private var colorScheme
3738

3839
var body: some View {
3940
VStack {
@@ -92,23 +93,23 @@ struct SolarClockView: View {
9293
VStack(alignment: .trailing, spacing: 6) {
9394
Text(mc.solar_metric)
9495
.font(.largeTitle)
95-
.foregroundColor(mc.solar_metric_color)
96+
.foregroundColor(mc.solar_metric_prime ? .red : (colorScheme == .dark ? .white : .black))
9697
HStack {
9798
Image(systemName: "sunrise")
9899
.resizable()
99100
.aspectRatio(contentMode: .fit)
100101
.frame(width: 30, height: 30)
101102
Text(" ")
102103
Text(mc.solar_metric_sunrise)
103-
.foregroundColor(mc.solar_metric_sunrise_color)
104+
.foregroundColor(mc.solar_metric_sunrise_prime ? .red : (colorScheme == .dark ? .white : .black))
104105
Text(" ")
105106
Image(systemName: "sunset")
106107
.resizable()
107108
.aspectRatio(contentMode: .fit)
108109
.frame(width: 30, height: 30)
109110
Text(" ")
110111
Text(mc.solar_metric_sunset)
111-
.foregroundColor(mc.solar_metric_sunset_color)
112+
.foregroundColor(mc.solar_metric_sunset_prime ? .red : (colorScheme == .dark ? .white : .black))
112113
}
113114
}
114115
}

0 commit comments

Comments
 (0)