Skip to content

Commit 13cc30b

Browse files
committed
fix bugs:
text 2 speech exercise selection
1 parent 07a230f commit 13cc30b

File tree

5 files changed

+23
-25
lines changed

5 files changed

+23
-25
lines changed

FitCount/ContentView.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,16 @@
77

88
import SwiftUI
99

10+
11+
class SessionConfig: ObservableObject {
12+
@Published var nReps : Int = 1
13+
@Published var nMinutes : Int = 0
14+
@Published var nSeconds : Int = 1
15+
16+
@Published var useReps: Bool = true
17+
@Published var exercise: Exercise = exercises[0] // use first exercise by default but change in the ExerciseDetailsView
18+
}
19+
1020
struct ContentView: View {
1121
@StateObject var viewModel = ViewModel()
1222
@StateObject var sessionConfig: SessionConfig = SessionConfig()

FitCount/Workout/ExerciseDetailsView.swift

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,6 @@ struct TitleNavBarItem: View {
2121
}
2222
}
2323

24-
class SessionConfig: ObservableObject {
25-
@Published var nReps : Int = 1
26-
@Published var nMinutes : Int = 0
27-
@Published var nSeconds : Int = 1
28-
29-
@Published var useReps: Bool = true
30-
}
31-
32-
3324
struct ExerciseDetailsView: View {
3425
@EnvironmentObject var viewModel: ViewModel
3526
@EnvironmentObject var sessionConfig: SessionConfig
@@ -131,11 +122,15 @@ struct ExerciseDetailsView: View {
131122

132123
}
133124
.navigationDestination(for: String.self) { _ in
134-
WorkoutView(exercise: exercise).environmentObject(viewModel).environmentObject(sessionConfig)
125+
WorkoutView().environmentObject(viewModel).environmentObject(sessionConfig)
135126
}
136127

137128

138129
}
139130
.navigationBarTitle(Text(exercise.name))
131+
.onAppear() {
132+
sessionConfig.exercise = exercise
133+
sessionConfig.useReps = selection == 1
134+
}
140135
}
141136
}

FitCount/Workout/QuickPoseBasicView.swift

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import QuickPoseCore
1010
import QuickPoseSwiftUI
1111

1212
struct VoiceCommands {
13-
public static let standInsideBBox = Text2Speech(text: "Stand so that your whole body is inside the bounding box")
13+
public static let standInsideBBox = "Stand so that your whole body is inside the bounding box"
1414
}
1515

1616
class SessionData: ObservableObject {
@@ -30,8 +30,6 @@ struct QuickPoseBasicView: View {
3030
@EnvironmentObject var viewModel: ViewModel
3131
@EnvironmentObject var sessionConfig: SessionConfig
3232

33-
private var exercise: Exercise
34-
3533
@State private var overlayImage: UIImage?
3634

3735
@State private var feedbackText: String? = nil
@@ -55,10 +53,6 @@ struct QuickPoseBasicView: View {
5553

5654
let bboxTimer = TimerManager()
5755

58-
init(exercise: Exercise) {
59-
self.exercise = exercise
60-
}
61-
6256
func goToResults() {
6357
DispatchQueue.main.async {
6458
sessionData.seconds = Int(exerciseTimer.getTotalSeconds())
@@ -104,7 +98,7 @@ struct QuickPoseBasicView: View {
10498
InstructionsView().overlay(alignment: .bottom) {
10599
Button (action: {
106100
state = WorkoutState.bbox
107-
VoiceCommands.standInsideBBox.say()
101+
Text2Speech(text: VoiceCommands.standInsideBBox).say()
108102
}) {
109103
Text("Start Workout").foregroundColor(.white)
110104
.padding()
@@ -156,7 +150,7 @@ struct QuickPoseBasicView: View {
156150
}
157151
}
158152
.onAppear {
159-
quickPose.start(features: exercise.features, onFrame: { status, image, features, feedback, landmarks in
153+
quickPose.start(features: sessionConfig.exercise.features, onFrame: { status, image, features, feedback, landmarks in
160154

161155

162156

@@ -204,7 +198,7 @@ struct QuickPoseBasicView: View {
204198
}
205199

206200
if (state == WorkoutState.exercise && !exerciseTimer.isRunning()) {
207-
Text2Speech(text: "Now let's start the \(exercise.name) exercise").say()
201+
Text2Speech(text: "Now let's start the \(sessionConfig.exercise.name) exercise").say()
208202
exerciseTimer.start()
209203
}
210204

@@ -217,7 +211,7 @@ struct QuickPoseBasicView: View {
217211
feedbackText = nil
218212
}
219213

220-
if case .fitness = exercise.features.first, let result = features[exercise.features.first!]{
214+
if case .fitness = sessionConfig.exercise.features.first, let result = features[sessionConfig.exercise.features.first!]{
221215
counter.count(probability: result.value)
222216
if (counter.getCount() > count) {
223217
Text2Speech(text: String(counter.getCount())).say()
@@ -248,7 +242,7 @@ struct QuickPoseBasicView: View {
248242
UIApplication.shared.isIdleTimerDisabled = true
249243
}
250244
.onDisappear {
251-
let sessionDataDump = SessionDataModel(exercise: exercise.name, count: Int(counter.getCount()), seconds: Int(exerciseTimer.getTotalSeconds()), date: Date())
245+
let sessionDataDump = SessionDataModel(exercise: sessionConfig.exercise.name, count: Int(counter.getCount()), seconds: Int(exerciseTimer.getTotalSeconds()), date: Date())
252246
appendToJson(sessionData: sessionDataDump)
253247

254248
quickPose.stop()

FitCount/Workout/WorkoutView.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,11 @@ struct WorkoutView: View {
1313
@EnvironmentObject var sessionConfig: SessionConfig
1414

1515
@State var cameraPermissionGranted = false
16-
var exercise: Exercise
1716

1817
var body: some View {
1918
GeometryReader { geometry in
2019
if cameraPermissionGranted {
21-
QuickPoseBasicView(exercise: exercise).environmentObject(viewModel).environmentObject(sessionConfig)
20+
QuickPoseBasicView().environmentObject(viewModel).environmentObject(sessionConfig)
2221
}
2322
}.onAppear {
2423
AVCaptureDevice.requestAccess(for: .video) { accessGranted in

FitCounter by QuickPose.ai.xcodeproj/project.xcworkspace/contents.xcworkspacedata

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)