From: Lukasz Stanislawski Date: Tue, 13 Oct 2020 09:33:56 +0000 (+0200) Subject: MainMenu & Workout ViewModel API draft X-Git-Tag: accepted/tizen/unified/20210915.100113~161 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5e2d0930707977f5d019897b22fc5996af8d962d;p=profile%2Fiot%2Fapps%2Fdotnet%2Ffitness.git MainMenu & Workout ViewModel API draft --- diff --git a/Fitness/Models/DifficultyLevel.cs b/Fitness/Models/DifficultyLevel.cs new file mode 100644 index 0000000..6a06dec --- /dev/null +++ b/Fitness/Models/DifficultyLevel.cs @@ -0,0 +1,25 @@ +using System; + +namespace Fitness.Models +{ + /// + /// Describe difficulty level of the workout + /// + public enum DifficultyLevel + { + /// + /// Easy - for beginners + /// + Easy, + + /// + /// Medium - for advanced users + /// + Medium, + + /// + /// Hard - for experienced users + /// + Hard, + } +} diff --git a/Fitness/Models/Workout.cs b/Fitness/Models/Workout.cs new file mode 100644 index 0000000..1d06c68 --- /dev/null +++ b/Fitness/Models/Workout.cs @@ -0,0 +1,45 @@ +using System; + +namespace Fitness.Models +{ + /// + /// Workout's information. + /// + public class Workout + { + /// + /// Workout title + /// + public string Title { get; private set; } + + /// + /// Full workout description + /// + public string Description { get; private set; } + + /// + /// Duration of the workout + /// + public TimeSpan Duration { get; private set; } + + /// + /// Predefined difficulty level of workout + /// + public DifficultyLevel Difficulty { get; private set; } + + /// + /// True if workout is added is user's favourite + /// + public bool Favourite { get; private set; } + + /// + /// Url to thumbnail of the workout + /// + public string ThumbnailUrl { get; private set; } + + /// + /// Url to workout video + /// + public string VideoUrl { get; private set; } + } +} diff --git a/Fitness/Models/WorkoutState.cs b/Fitness/Models/WorkoutState.cs new file mode 100644 index 0000000..03435fa --- /dev/null +++ b/Fitness/Models/WorkoutState.cs @@ -0,0 +1,25 @@ +using System; + +namespace Fitness.Models +{ + /// + /// Current state of workout + /// + public enum WorkoutState + { + /// + /// the workout has been paused, preserving current progress + /// + Paused, + + /// + /// the workout is playing + /// + Playing, + + /// + /// the workout has been stopped, + /// + Stopped, + } +} diff --git a/Fitness/ViewModels/MainViewModel.cs b/Fitness/ViewModels/MainViewModel.cs index 65c48c8..6363941 100644 --- a/Fitness/ViewModels/MainViewModel.cs +++ b/Fitness/ViewModels/MainViewModel.cs @@ -1,28 +1,17 @@ -using System; +using System.Collections.ObjectModel; +using Fitness.Models; namespace Fitness.ViewModels { public class MainViewModel : BaseViewModel { - private string text; - public MainViewModel() { - Text = "Fitness App"; } - public string Text - { - get - { - return text; - } - - set - { - text = value; - RaisePropertyChanged(); - } - } + /// + /// List of all available workouts + /// + public ObservableCollection Workouts { get; private set; } } } diff --git a/Fitness/ViewModels/WorkoutViewModel.cs b/Fitness/ViewModels/WorkoutViewModel.cs new file mode 100644 index 0000000..42f3f32 --- /dev/null +++ b/Fitness/ViewModels/WorkoutViewModel.cs @@ -0,0 +1,59 @@ +using System; +using System.Windows.Input; +using Fitness.Models; + +namespace Fitness.ViewModels +{ + public class WorkoutViewModel : BaseViewModel + { + /// + /// Current score + /// + public int Score { get; private set; } + + /// + /// Repetitions made in current Workout + /// + public int Repetitions { get; private set; } + + /// + /// Time left in current body pose to accept repetition. + /// + public TimeSpan Hold { get; private set; } + + /// + /// TimeLeft in workout + /// + public TimeSpan TimeLeft { get; private set; } + + /// + /// Current workout state + /// + public WorkoutState State { get; private set; } + + /// + /// Pause workout + /// + public ICommand Pause { get; private set; } + + /// + /// Stop workout + /// + public ICommand Stop { get; private set; } + + /// + /// Start/Resume workout + /// + public ICommand Play { get; private set; } + + /// + /// Url to video with workout + /// + public string WorkoutVideoUrl { get; private set; } + + /// + /// Url to preview from device camera + /// + public string PreviewVideoUrl { get; private set; } + } +} diff --git a/Fitness/res/layout/1280x720/MainView.xaml b/Fitness/res/layout/1280x720/MainView.xaml index ceedc22..b6a2b6f 100644 --- a/Fitness/res/layout/1280x720/MainView.xaml +++ b/Fitness/res/layout/1280x720/MainView.xaml @@ -10,5 +10,5 @@ - +