Implement handling exercise timer and statistics.
[profile/iot/apps/dotnet/fitness.git] / Fitness / Views / ExercisingView.xaml.cs
index a81eadc..bb55f45 100644 (file)
@@ -201,7 +201,9 @@ namespace Fitness.Views
             switch (oldState)
             {
                 case WorkoutState.Loading:
+                    break;
                 case WorkoutState.OnHold:
+                    StartWorkout();
                     break;
 
                 case WorkoutState.Paused:
@@ -216,6 +218,7 @@ namespace Fitness.Views
                     if (!source.IsCancellationRequested)
                     {
                         SetPositionAndSize(WorkoutState.Playing);
+                        StartWorkout();
                     }
 
                     break;
@@ -234,6 +237,7 @@ namespace Fitness.Views
             {
                 case WorkoutState.Playing:
                     Preview.Pause();
+                    StopWorkout();
                     break;
 
                 default:
@@ -251,6 +255,7 @@ namespace Fitness.Views
                     Preview.Pause();
                     PlayingView.Hide();
                     PauseView.Show();
+                    StopWorkout();
 
                     (Task scalePreview, Task movePreview) = Animate(Preview, playing.Preview, pause.Preview, source.Token);
                     (Task scaleCamera, Task moveCamera) = Animate(cameraOverlayView, playing.Camera, pause.Camera, source.Token);
@@ -285,6 +290,23 @@ namespace Fitness.Views
             }
 
             LoadingView.Loaded -= OnLoaded;
+            StartWorkout();
+        }
+
+        private void StartWorkout()
+        {
+            if (BindingContext is ViewModels.ExercisingViewModel viewModel)
+            {
+                viewModel.SquatService.StartWorkout();
+            }
+        }
+
+        private void StopWorkout()
+        {
+            if (BindingContext is ViewModels.ExercisingViewModel viewModel)
+            {
+                viewModel.SquatService.StopWorkout();
+            }
         }
 
         private void SetPositionAndSize()