From a6b409868ac700fe54c2886491b3beb99d69c2d0 Mon Sep 17 00:00:00 2001 From: Auggie Fisher Date: Sun, 21 Apr 2024 10:43:42 -0400 Subject: [PATCH 1/4] Maximize real estate in Home view of Watch app * Bigger fonts in the Watch app Home view * Re-organize the sequence of info shown in the Watch app Home view * Include mm:ss format since last reading in the Watch app Home view --- .../LoopCaregiverWatchApp/HomeView.swift | 58 ++++++++++++++----- 1 file changed, 45 insertions(+), 13 deletions(-) diff --git a/LoopCaregiver/LoopCaregiverWatchApp/HomeView.swift b/LoopCaregiver/LoopCaregiverWatchApp/HomeView.swift index 735c42e0..699419f4 100644 --- a/LoopCaregiver/LoopCaregiverWatchApp/HomeView.swift +++ b/LoopCaregiver/LoopCaregiverWatchApp/HomeView.swift @@ -28,28 +28,38 @@ struct HomeView: View { } var body: some View { - VStack { + VStack (spacing: 0) { + //BG number HStack { Text(remoteDataSource.currentGlucoseSample?.presentableStringValue(displayUnits: settings.glucoseDisplayUnits) ?? " ") .strikethrough(egvIsOutdated()) - .font(.largeTitle) + .font(.custom("SF Compact", fixedSize:50)) .foregroundColor(egvValueColor()) + } + //Trend arrow + HStack { if let egv = remoteDataSource.currentGlucoseSample { Image(systemName: egv.arrowImageName()) .resizable() .aspectRatio(contentMode: .fit) - .frame(width: 15.0) - .foregroundColor(egvValueColor()) - } - VStack { - Text(lastEGVTimeFormatted()) - .font(.footnote) - .if(egvIsOutdated(), transform: { view in - view.foregroundColor(.red) - }) - Text(lastEGVDeltaFormatted()) - .font(.footnote) + .frame(width:35.0) + .offset(.init(width: 0.0, height: 4.0)) } + //BG delta + Text(lastEGVDeltaFormatted()) + .strikethrough(egvIsOutdated()) + .font(.custom("SF Compact", fixedSize:40)) + + } + //Time since last reading in mm:ss format + HStack { + Text(durSinceEGV()) + .font(.custom("SF Compact", fixedSize:30)) + Text("ago") + .font(.custom("SF Compact", fixedSize:30)) + .if(egvIsOutdated(), transform: { view in + view.foregroundColor(.red) + }) } } .navigationTitle(accountService.selectedLooper?.name ?? "Name?") @@ -102,6 +112,28 @@ struct HomeView: View { return currentEGV.date.formatted(.dateTime.hour().minute()) } + //Minutes since last BG reading + func minSinceEGV() -> String { + guard let currentEGV = remoteDataSource.currentGlucoseSample else { + return "0" + } + return String(Int(Date().timeIntervalSince(currentEGV.date)) / 60) + } + + //Seconds since last BG reading + func secSinceEGV() -> String { + guard let currentEGV = remoteDataSource.currentGlucoseSample else { + return "00" + } + let seconds = Int(Date().timeIntervalSince(currentEGV.date)) % 60 + return(String(format: "%02d", seconds)) + } + + //Time since last reading in mm:ss + func durSinceEGV() -> String { + return minSinceEGV() + ":" + secSinceEGV() + } + func egvIsOutdated() -> Bool { guard let currentEGV = remoteDataSource.currentGlucoseSample else { return true From 08f25e23680acec9b512b2876f67416aa93616eb Mon Sep 17 00:00:00 2001 From: Auggie Fisher Date: Sun, 21 Apr 2024 11:03:46 -0400 Subject: [PATCH 2/4] *Watch Home view height of trend arrow * Minor tweak to height of trend arrow in Watch Home view for better alignment --- LoopCaregiver/LoopCaregiverWatchApp/HomeView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LoopCaregiver/LoopCaregiverWatchApp/HomeView.swift b/LoopCaregiver/LoopCaregiverWatchApp/HomeView.swift index 699419f4..1cb1fa1c 100644 --- a/LoopCaregiver/LoopCaregiverWatchApp/HomeView.swift +++ b/LoopCaregiver/LoopCaregiverWatchApp/HomeView.swift @@ -43,7 +43,7 @@ struct HomeView: View { .resizable() .aspectRatio(contentMode: .fit) .frame(width:35.0) - .offset(.init(width: 0.0, height: 4.0)) + .offset(.init(width: 0.0, height: 3.0)) } //BG delta Text(lastEGVDeltaFormatted()) From e79811d46dd9bd12f08709e5e2089616bde3a511 Mon Sep 17 00:00:00 2001 From: Auggie Fisher Date: Sun, 21 Apr 2024 19:30:19 -0400 Subject: [PATCH 3/4] Make the trend arrow size a smidge smaller * Adjust the trend arrow size in the Watch Home view from 35.0 down to 25.0 * It was previously too large, particularly for diagonal arrows --- LoopCaregiver/LoopCaregiverWatchApp/HomeView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LoopCaregiver/LoopCaregiverWatchApp/HomeView.swift b/LoopCaregiver/LoopCaregiverWatchApp/HomeView.swift index 1cb1fa1c..cd2f5d51 100644 --- a/LoopCaregiver/LoopCaregiverWatchApp/HomeView.swift +++ b/LoopCaregiver/LoopCaregiverWatchApp/HomeView.swift @@ -42,7 +42,7 @@ struct HomeView: View { Image(systemName: egv.arrowImageName()) .resizable() .aspectRatio(contentMode: .fit) - .frame(width:35.0) + .frame(width:25.0) .offset(.init(width: 0.0, height: 3.0)) } //BG delta From 8b585bb18a45620a198d48ecd9589d5f313c1530 Mon Sep 17 00:00:00 2001 From: Auggie Fisher Date: Wed, 1 May 2024 21:55:55 -0400 Subject: [PATCH 4/4] Rework watchOS app Home view for design language consistency * Layout now mimics rectangle watchOS widget * Text sizes increased by 20% compared to widget * Includes seconds in counter * Stripped "ago" text for timer --- .../LoopCaregiverWatchApp/HomeView.swift | 51 +++++++++---------- 1 file changed, 24 insertions(+), 27 deletions(-) diff --git a/LoopCaregiver/LoopCaregiverWatchApp/HomeView.swift b/LoopCaregiver/LoopCaregiverWatchApp/HomeView.swift index cd2f5d51..05f93855 100644 --- a/LoopCaregiver/LoopCaregiverWatchApp/HomeView.swift +++ b/LoopCaregiver/LoopCaregiverWatchApp/HomeView.swift @@ -19,6 +19,8 @@ struct HomeView: View { @ObservedObject var looperService: LooperService @Environment(\.scenePhase) var scenePhase + var homeViewTextMultiplier = 1.20 + init(connectivityManager: WatchService, looperService: LooperService){ self.connectivityManager = connectivityManager self.looperService = looperService @@ -28,38 +30,33 @@ struct HomeView: View { } var body: some View { - VStack (spacing: 0) { - //BG number - HStack { - Text(remoteDataSource.currentGlucoseSample?.presentableStringValue(displayUnits: settings.glucoseDisplayUnits) ?? " ") + HStack (spacing: 10) { + VStack { + //BG number + Text(remoteDataSource.currentGlucoseSample?.presentableStringValue(displayUnits: settings.glucoseDisplayUnits) ?? "??") .strikethrough(egvIsOutdated()) - .font(.custom("SF Compact", fixedSize:50)) + .font(.system(size: 60.0 * homeViewTextMultiplier)) .foregroundColor(egvValueColor()) } - //Trend arrow - HStack { - if let egv = remoteDataSource.currentGlucoseSample { - Image(systemName: egv.arrowImageName()) - .resizable() - .aspectRatio(contentMode: .fit) - .frame(width:25.0) - .offset(.init(width: 0.0, height: 3.0)) + VStack (spacing: 0) { + HStack { + //Trend arrow + if let egv = remoteDataSource.currentGlucoseSample { + Image(systemName: egv.arrowImageName()) + .resizable() + .aspectRatio(contentMode: .fit) + .frame(maxWidth: 12 * homeViewTextMultiplier) + .offset(.init(width: 0.0, height: 1.5 * homeViewTextMultiplier)) + } + //BG delta + Text(lastEGVDeltaFormatted()) + .strikethrough(egvIsOutdated()) + .font(.system(size: 20.0 * homeViewTextMultiplier)) } - //BG delta - Text(lastEGVDeltaFormatted()) - .strikethrough(egvIsOutdated()) - .font(.custom("SF Compact", fixedSize:40)) - - } - //Time since last reading in mm:ss format - HStack { + //Minutes since update Text(durSinceEGV()) - .font(.custom("SF Compact", fixedSize:30)) - Text("ago") - .font(.custom("SF Compact", fixedSize:30)) - .if(egvIsOutdated(), transform: { view in - view.foregroundColor(.red) - }) + .strikethrough(egvIsOutdated()) + .font(.system(size: 20.0 * homeViewTextMultiplier)) } } .navigationTitle(accountService.selectedLooper?.name ?? "Name?")