From 6af2fffa7252ab1ceb99cf378e7ee86e41db4ec5 Mon Sep 17 00:00:00 2001 From: Lukasz Stanislawski Date: Mon, 14 Dec 2020 16:21:42 +0100 Subject: [PATCH] Navigate using Id parameter --- Fitness/Services/NavigationService.cs | 4 ++-- Fitness/ViewModels/ExercisePreviewViewModel.cs | 30 +++++++++++++++++++------- Fitness/ViewModels/MainViewModel.cs | 16 ++++++++++++-- Fitness/ViewModels/WorkoutViewModel.cs | 5 +++++ Fitness/Views/ExercisePreviewView.cs | 13 ++++++++++- 5 files changed, 55 insertions(+), 13 deletions(-) diff --git a/Fitness/Services/NavigationService.cs b/Fitness/Services/NavigationService.cs index 386575c..9eea2d3 100644 --- a/Fitness/Services/NavigationService.cs +++ b/Fitness/Services/NavigationService.cs @@ -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() diff --git a/Fitness/ViewModels/ExercisePreviewViewModel.cs b/Fitness/ViewModels/ExercisePreviewViewModel.cs index 873f908..6396cea 100644 --- a/Fitness/ViewModels/ExercisePreviewViewModel.cs +++ b/Fitness/ViewModels/ExercisePreviewViewModel.cs @@ -12,7 +12,6 @@ namespace Fitness.ViewModels { public class ExercisePreviewViewModel : BaseViewModel { - private List workouts; private WorkoutViewModel currentWorkout; public ExercisePreviewViewModel() @@ -21,7 +20,7 @@ namespace Fitness.ViewModels PreviousWorkout = new Command(GoPrevious); NextWorkout = new Command(GoNext); - workouts = new List(new[] + Workouts = new List(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); } /// @@ -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 /// public ICommand NextWorkout { get; private set; } + /// + /// List of all available workouts + /// + public List 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]; } } } diff --git a/Fitness/ViewModels/MainViewModel.cs b/Fitness/ViewModels/MainViewModel.cs index 5142200..b2e33f8 100644 --- a/Fitness/ViewModels/MainViewModel.cs +++ b/Fitness/ViewModels/MainViewModel.cs @@ -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(); }); } diff --git a/Fitness/ViewModels/WorkoutViewModel.cs b/Fitness/ViewModels/WorkoutViewModel.cs index 426326e..3141992 100644 --- a/Fitness/ViewModels/WorkoutViewModel.cs +++ b/Fitness/ViewModels/WorkoutViewModel.cs @@ -16,6 +16,11 @@ namespace Fitness.ViewModels } /// + /// Unique training identifier + /// + public string Id { get; set; } + + /// /// Current score /// public int Score { get; private set; } diff --git a/Fitness/Views/ExercisePreviewView.cs b/Fitness/Views/ExercisePreviewView.cs index 81acc74..91b5f96 100644 --- a/Fitness/Views/ExercisePreviewView.cs +++ b/Fitness/Views/ExercisePreviewView.cs @@ -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); + } + } } } -- 2.7.4