Skip to content

Instantly share code, notes, and snippets.

@elnjensen
Created August 22, 2018 02:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save elnjensen/0728ff6e95939bdd07015c3571287016 to your computer and use it in GitHub Desktop.
Save elnjensen/0728ff6e95939bdd07015c3571287016 to your computer and use it in GitHub Desktop.
Swift code to add to ActionHUDController.swift in Loop to add a force-touch menu to the Watch to set workout mode for different durations
// Add this code inside the class definition for ActionHUDController.swift in WatchApp Extension --> Controllers
// Add force-touch menu items to set workout mode for certain fixed durations:
override init() {
super.init()
addMenuItem(withImageNamed: "workout", title: NSLocalizedString("Workout 30 minutes", comment: "Menu title for setting workout duration from watch"), action: #selector(ActionHUDController.setWorkout30Min))
addMenuItem(withImageNamed: "workout", title: NSLocalizedString("Workout 1 hour", comment: "Menu title for setting workout duration from watch"), action: #selector(ActionHUDController.setWorkout1Hour))
addMenuItem(withImageNamed: "workout", title: NSLocalizedString("Workout 2 hours", comment: "Menu title for setting workout duration from watch"), action: #selector(ActionHUDController.setWorkout2Hours))
}
private func setWorkoutMode(duration: Double) {
let endDate = Date().addingTimeInterval(TimeInterval(hours: duration))
let userInfo = GlucoseRangeScheduleOverrideUserInfo(context: .workout, startDate: Date(), endDate: endDate)
updateForOverrideContext(userInfo.context)
sendGlucoseRangeOverride(userInfo: userInfo)
}
@objc func setWorkout30Min() {
setWorkoutMode(duration: 0.5)
}
@objc func setWorkout1Hour() {
setWorkoutMode(duration: 1.0)
}
@objc func setWorkout2Hours() {
setWorkoutMode(duration: 2.0)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment