Navigate using Id parameter
authorLukasz Stanislawski <l.stanislaws@samsung.com>
Mon, 14 Dec 2020 15:21:42 +0000 (16:21 +0100)
committerPiotr Czaja <p.czaja@samsung.com>
Tue, 14 Sep 2021 11:01:34 +0000 (13:01 +0200)
Fitness/Services/NavigationService.cs
Fitness/ViewModels/ExercisePreviewViewModel.cs
Fitness/ViewModels/MainViewModel.cs
Fitness/ViewModels/WorkoutViewModel.cs
Fitness/Views/ExercisePreviewView.cs

index 386575cf249ecd4c2d1bc4a18cce45e82dc4b28e..9eea2d3de59fbd413f658fd1a943a491be2bc13d 100644 (file)
@@ -38,9 +38,9 @@ namespace Fitness.Services
             navigation.Push(new ExercisingView());
         }
 
-        public void NavigateToExercisePreviewView()
+        public void NavigateToExercisePreviewView(string workoutId)
         {
-            navigation.Push(new ExercisePreviewView());
+            navigation.Push(new ExercisePreviewView(workoutId));
         }
 
         public void NavigateToScanningView()
index 873f908a2e13c90e1bd87d7b61e86d8c2b47f73f..6396cea2370cc4a0f00c704f05048a5fa63b7360 100644 (file)
@@ -12,7 +12,6 @@ namespace Fitness.ViewModels
 {
     public class ExercisePreviewViewModel : BaseViewModel
     {
-        private List<WorkoutViewModel> workouts;
         private WorkoutViewModel currentWorkout;
 
         public ExercisePreviewViewModel()
@@ -21,7 +20,7 @@ namespace Fitness.ViewModels
             PreviousWorkout = new Command(GoPrevious);
             NextWorkout = new Command(GoNext);
 
-            workouts = new List<WorkoutViewModel>(new[]
+            Workouts = new List<WorkoutViewModel>(new[]
             {
               new WorkoutViewModel
               {
@@ -32,6 +31,7 @@ namespace Fitness.ViewModels
                 Favourite = true,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0000.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0000.jpeg",
+                Id = "0",
               },
               new WorkoutViewModel
               {
@@ -42,6 +42,7 @@ namespace Fitness.ViewModels
                 Favourite = false,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0001.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0001.jpeg",
+                Id = "1",
               },
               new WorkoutViewModel
               {
@@ -52,6 +53,7 @@ namespace Fitness.ViewModels
                 Favourite = false,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0002.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0002.jpeg",
+                Id = "2",
               },
               new WorkoutViewModel
               {
@@ -62,6 +64,7 @@ namespace Fitness.ViewModels
                 Favourite = false,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0003.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0003.jpeg",
+                Id = "3",
               },
               new WorkoutViewModel
               {
@@ -72,6 +75,7 @@ namespace Fitness.ViewModels
                 Favourite = false,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0000.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0000.jpeg",
+                Id = "4",
               },
               new WorkoutViewModel
               {
@@ -82,6 +86,7 @@ namespace Fitness.ViewModels
                 Favourite = false,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0001.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0001.jpeg",
+                Id = "5",
               },
               new WorkoutViewModel
               {
@@ -92,6 +97,7 @@ namespace Fitness.ViewModels
                 Favourite = false,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0002.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0002.jpeg",
+                Id = "6",
               },
               new WorkoutViewModel
               {
@@ -102,6 +108,7 @@ namespace Fitness.ViewModels
                 Favourite = false,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0003.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0003.jpeg",
+                Id = "7",
               },
               new WorkoutViewModel
               {
@@ -112,6 +119,7 @@ namespace Fitness.ViewModels
                 Favourite = true,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0004.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0004.jpeg",
+                Id = "8",
               },
               new WorkoutViewModel
               {
@@ -122,6 +130,7 @@ namespace Fitness.ViewModels
                 Favourite = false,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/video-0000.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/video-0000.jpeg",
+                Id = "9",
               },
               new WorkoutViewModel
               {
@@ -132,6 +141,7 @@ namespace Fitness.ViewModels
                 Favourite = false,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/video-0001.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/video-0001.jpeg",
+                Id = "10",
               },
               new WorkoutViewModel
               {
@@ -142,10 +152,9 @@ namespace Fitness.ViewModels
                 Favourite = true,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/video-0002.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/video-0002.jpeg",
+                Id = "11",
               },
             });
-
-            CurrentWorkout = workouts.ElementAt(5);
         }
 
         /// <summary>
@@ -154,7 +163,7 @@ namespace Fitness.ViewModels
         public WorkoutViewModel CurrentWorkout
         {
             get => currentWorkout;
-            private set
+            set
             {
                 if (value != currentWorkout)
                 {
@@ -184,6 +193,11 @@ namespace Fitness.ViewModels
         /// </summary>
         public ICommand NextWorkout { get; private set; }
 
+        /// <summary>
+        /// List of all available workouts
+        /// </summary>
+        public List<WorkoutViewModel> Workouts { get; private set; }
+
         private void GoNext()
         {
             MoveBy(1);
@@ -196,10 +210,10 @@ namespace Fitness.ViewModels
 
         private void MoveBy(int offset)
         {
-            int idx = workouts.IndexOf(CurrentWorkout) + offset;
-            if (idx >= 0 && idx < workouts.Count)
+            int idx = Workouts.IndexOf(CurrentWorkout) + offset;
+            if (idx >= 0 && idx < Workouts.Count)
             {
-                CurrentWorkout = workouts[idx];
+                CurrentWorkout = Workouts[idx];
             }
         }
     }
index 514220008402d2c60cbd5b4e097e364df426ea28..b2e33f8611c09b0b201223c2fb4342a1eae4eb5f 100644 (file)
@@ -26,6 +26,7 @@ namespace Fitness.ViewModels
                 Favourite = true,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0000.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0000.jpeg",
+                Id = "0",
               },
               new WorkoutViewModel
               {
@@ -36,6 +37,7 @@ namespace Fitness.ViewModels
                 Favourite = false,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0001.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0001.jpeg",
+                Id = "1",
               },
               new WorkoutViewModel
               {
@@ -46,6 +48,7 @@ namespace Fitness.ViewModels
                 Favourite = false,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0002.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0002.jpeg",
+                Id = "2",
               },
               new WorkoutViewModel
               {
@@ -56,6 +59,7 @@ namespace Fitness.ViewModels
                 Favourite = false,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0003.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0003.jpeg",
+                Id = "3",
               },
               new WorkoutViewModel
               {
@@ -66,6 +70,7 @@ namespace Fitness.ViewModels
                 Favourite = false,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0000.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0000.jpeg",
+                Id = "4",
               },
               new WorkoutViewModel
               {
@@ -76,6 +81,7 @@ namespace Fitness.ViewModels
                 Favourite = false,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0001.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0001.jpeg",
+                Id = "5",
               },
               new WorkoutViewModel
               {
@@ -86,6 +92,7 @@ namespace Fitness.ViewModels
                 Favourite = false,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0002.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0002.jpeg",
+                Id = "6",
               },
               new WorkoutViewModel
               {
@@ -96,6 +103,7 @@ namespace Fitness.ViewModels
                 Favourite = false,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0003.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0003.jpeg",
+                Id = "7",
               },
               new WorkoutViewModel
               {
@@ -106,6 +114,7 @@ namespace Fitness.ViewModels
                 Favourite = true,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0004.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0004.jpeg",
+                Id = "8",
               },
               new WorkoutViewModel
               {
@@ -116,6 +125,7 @@ namespace Fitness.ViewModels
                 Favourite = false,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/video-0000.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/video-0000.jpeg",
+                Id = "9",
               },
               new WorkoutViewModel
               {
@@ -126,6 +136,7 @@ namespace Fitness.ViewModels
                 Favourite = false,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/video-0001.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/video-0001.jpeg",
+                Id = "10",
               },
               new WorkoutViewModel
               {
@@ -136,12 +147,13 @@ namespace Fitness.ViewModels
                 Favourite = true,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/video-0002.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/video-0002.jpeg",
+                Id = "11",
               },
             });
 
-            SelectedWorkout = Workouts.ElementAt(5);
+            SelectedWorkout = Workouts.ElementAt(0);
 
-            WatchPreview = new Command(() => { NavigationService.Instance.NavigateToExercisePreviewView(); });
+            WatchPreview = new Command(() => { NavigationService.Instance.NavigateToExercisePreviewView(SelectedWorkout.Id); });
             StartWorkout = new Command(() => { NavigationService.Instance.NavigateToScanningView(); });
         }
 
index 426326eca628492c09477debef18590466c8bd4e..3141992418f477b903d884aff79ab6dad9ffb832 100644 (file)
@@ -15,6 +15,11 @@ namespace Fitness.ViewModels
         {
         }
 
+        /// <summary>
+        /// Unique training identifier
+        /// </summary>
+        public string Id { get; set; }
+
         /// <summary>
         /// Current score
         /// </summary>
index 81acc7439eff2dadc989e2854ca4d5785a579df6..91b5f96caacb40e50993faec2f75bd89271c6efb 100644 (file)
@@ -1,6 +1,8 @@
 using System;
+using System.Linq;
 using Fitness.Controls;
 using Fitness.Services;
+using Fitness.ViewModels;
 using Tizen.NUI;
 using Tizen.NUI.BaseComponents;
 using Tizen.NUI.Binding;
@@ -9,9 +11,10 @@ namespace Fitness.Views
 {
     public partial class ExercisePreviewView : Fitness.Controls.Page
     {
-        public ExercisePreviewView()
+        public ExercisePreviewView(string workoutId)
         {
             InitializeComponent();
+            InitializeCurrentWorkout(workoutId);
             InitializeCallbacks();
         }
 
@@ -68,5 +71,13 @@ namespace Fitness.Views
             this.player.Stop();
             this.player.Play();
         }
+
+        private void InitializeCurrentWorkout(string workoutId)
+        {
+            if (BindingContext is ExercisePreviewViewModel vm)
+            {
+                vm.CurrentWorkout = vm.Workouts.Single(x => x.Id == workoutId);
+            }
+        }
     }
 }