This commit is contained in:
Trey t
2023-07-08 10:21:53 -05:00
parent aec8696f62
commit 5ca99cf832
7 changed files with 197 additions and 57 deletions

View File

@@ -6,60 +6,17 @@
//
import SwiftUI
import WatchKit
struct ContentView: View {
let exercise = PreviewData.parseEquipment()[2]
@StateObject var vm = WatchMainViewModel()
var body: some View {
VStack {
HStack {
if let model = vm.watchPackageModel {
Text(model.currentExerciseName)
.font(Font.system(size: 55))
.scaledToFit()
.minimumScaleFactor(0.01)
.lineLimit(1)
.foregroundColor(.white)
Divider()
Text("\(model.currentTimeLeft )")
.font(Font.system(size: 55))
.scaledToFit()
.minimumScaleFactor(0.01)
.lineLimit(1)
.foregroundColor(.white)
}
}
HStack {
if let heartValue = vm.heartValue {
VStack {
Image(systemName: "heart.fill")
.font(Font.system(size: 22))
.scaledToFit()
.minimumScaleFactor(0.01)
.lineLimit(1)
.foregroundColor(.red)
Text("\(heartValue)")
.font(Font.system(size: 55))
.scaledToFit()
.minimumScaleFactor(0.01)
.lineLimit(1)
.foregroundColor(.red)
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
Button(action: {
vm.nextExercise()
}, label: {
Image(systemName: "arrow.forward")
.font(.title)
.frame(maxWidth: .infinity, maxHeight: .infinity)
})
.buttonStyle(BorderedButtonStyle(tint: .blue))
}
TabView {
MainWatchView()
WatchControlView()
NowPlayingView()
}
.padding()
.tabViewStyle(PageTabViewStyle())
}
}

View File

@@ -0,0 +1,68 @@
//
// MainView.swift
// Werkout_watch Watch App
//
// Created by Trey Tartt on 7/8/23.
//
import SwiftUI
struct MainWatchView: View {
@StateObject var vm = WatchMainViewModel()
var body: some View {
VStack {
HStack {
if let model = vm.watchPackageModel {
Text(model.currentExerciseName)
.font(Font.system(size: 55))
.scaledToFit()
.minimumScaleFactor(0.01)
.lineLimit(1)
.foregroundColor(.white)
Divider()
Text("\(model.currentTimeLeft )")
.font(Font.system(size: 55))
.scaledToFit()
.minimumScaleFactor(0.01)
.lineLimit(1)
.foregroundColor(.white)
}
}
HStack {
if let heartValue = vm.heartValue {
VStack {
Image(systemName: "heart.fill")
.font(Font.system(size: 22))
.scaledToFit()
.minimumScaleFactor(0.01)
.lineLimit(1)
.foregroundColor(.red)
Text("\(heartValue)")
.font(Font.system(size: 55))
.scaledToFit()
.minimumScaleFactor(0.01)
.lineLimit(1)
.foregroundColor(.red)
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
Button(action: {
vm.nextExercise()
}, label: {
Image(systemName: "arrow.forward")
.font(.title)
.frame(maxWidth: .infinity, maxHeight: .infinity)
})
.buttonStyle(BorderedButtonStyle(tint: .green))
}
}
}
}
//struct MainView_Previews: PreviewProvider {
// static var previews: some View {
// MainView()
// }
//}

View File

@@ -0,0 +1,61 @@
//
// WatchControlView.swift
// Werkout_watch Watch App
//
// Created by Trey Tartt on 7/8/23.
//
import SwiftUI
struct WatchControlView: View {
@StateObject var vm = WatchMainViewModel()
var body: some View {
HStack {
VStack {
Button(action: {
vm.completeWorkout()
}, label: {
Image(systemName: "stop.circle")
.font(.title)
.frame(maxWidth: .infinity, maxHeight: .infinity)
})
.buttonStyle(BorderedButtonStyle(tint: .red))
Button(action: {
vm.restartExercise()
}, label: {
Image(systemName: "arrow.counterclockwise.circle")
.font(.title)
.frame(maxWidth: .infinity, maxHeight: .infinity)
})
.buttonStyle(BorderedButtonStyle(tint: .yellow))
}
VStack {
Button(action: {
vm.previousExercise()
}, label: {
Image(systemName: "arrow.backward")
.font(.title)
.frame(maxWidth: .infinity, maxHeight: .infinity)
})
.buttonStyle(BorderedButtonStyle(tint: .blue))
Button(action: {
vm.nextExercise()
}, label: {
Image(systemName: "arrow.forward")
.font(.title)
.frame(maxWidth: .infinity, maxHeight: .infinity)
})
.buttonStyle(BorderedButtonStyle(tint: .green))
}
}
}
}
struct WatchControlView_Previews: PreviewProvider {
static var previews: some View {
WatchControlView(vm: WatchMainViewModel())
}
}

View File

@@ -62,6 +62,24 @@ class WatchMainViewModel: NSObject, ObservableObject {
let data = try! JSONEncoder().encode(nextExerciseAction)
send(data)
}
func restartExercise() {
let nextExerciseAction = WatchActions.restartExercise
let data = try! JSONEncoder().encode(nextExerciseAction)
send(data)
}
func previousExercise() {
let nextExerciseAction = WatchActions.previousExercise
let data = try! JSONEncoder().encode(nextExerciseAction)
send(data)
}
func completeWorkout() {
let nextExerciseAction = WatchActions.stopWorkout
let data = try! JSONEncoder().encode(nextExerciseAction)
send(data)
}
}
extension WatchMainViewModel: WCSessionDelegate {