MainView UI partial implementation
authorLukasz Stanislawski <l.stanislaws@samsung.com>
Wed, 28 Oct 2020 14:29:41 +0000 (15:29 +0100)
committerPiotr Czaja <p.czaja@samsung.com>
Tue, 14 Sep 2021 11:01:34 +0000 (13:01 +0200)
13 files changed:
Fitness/Models/Workout.cs [deleted file]
Fitness/ViewModels/ExercisingViewModel.cs [new file with mode: 0644]
Fitness/ViewModels/MainViewModel.cs
Fitness/ViewModels/WorkoutViewModel.cs
Fitness/Views/Converters/DifficultyLevelToIconConverter.cs [new file with mode: 0644]
Fitness/Views/Converters/FavouriteToIconConverter.cs [new file with mode: 0644]
Fitness/res/layout/MainView.xaml
Fitness/res/layout/images/icon_fav_empty.png [new file with mode: 0644]
Fitness/res/layout/images/icon_fav_full.png [new file with mode: 0644]
Fitness/res/layout/images/icon_time.png [new file with mode: 0644]
Fitness/res/layout/images/lvl_easy.png [new file with mode: 0644]
Fitness/res/layout/images/lvl_hard.png [new file with mode: 0644]
Fitness/res/layout/images/lvl_medium.png [new file with mode: 0644]

diff --git a/Fitness/Models/Workout.cs b/Fitness/Models/Workout.cs
deleted file mode 100644 (file)
index 4cfa015..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-using System;
-
-namespace Fitness.Models
-{
-    /// <summary>
-    /// Workout's information.
-    /// </summary>
-    public class Workout
-    {
-        /// <summary>
-        /// Workout title
-        /// </summary>
-        public string Title { get; set; }
-
-        /// <summary>
-        /// Full workout description
-        /// </summary>
-        public string Description { get; set; }
-
-        /// <summary>
-        /// Duration of the workout
-        /// </summary>
-        public TimeSpan Duration { get; set; }
-
-        /// <summary>
-        /// Predefined difficulty level of workout
-        /// </summary>
-        public DifficultyLevel Difficulty { get; set; }
-
-        /// <summary>
-        /// True if workout is added is user's favourite
-        /// </summary>
-        public bool Favourite { get; set; }
-
-        /// <summary>
-        /// Url to thumbnail of the workout
-        /// </summary>
-        public string ThumbnailUrl { get; set; }
-
-        /// <summary>
-        /// Url to workout video
-        /// </summary>
-        public string VideoUrl { get; set; }
-    }
-}
diff --git a/Fitness/ViewModels/ExercisingViewModel.cs b/Fitness/ViewModels/ExercisingViewModel.cs
new file mode 100644 (file)
index 0000000..68a5507
--- /dev/null
@@ -0,0 +1,54 @@
+using System;
+using System.Windows.Input;
+using Fitness.Models;
+using Fitness.Services;
+
+namespace Fitness.ViewModels
+{
+    public class ExercisingViewModel : BaseViewModel
+    {
+        public ExercisingViewModel()
+        {
+        }
+
+        /// <summary>
+        /// Current score
+        /// </summary>
+        public int Score { get; private set; }
+
+        /// <summary>
+        /// Repetitions made in current Workout
+        /// </summary>
+        public int Repetitions { get; private set; }
+
+        /// <summary>
+        /// Time left in current body pose to accept repetition.
+        /// </summary>
+        public TimeSpan Hold { get; private set; }
+
+        /// <summary>
+        /// TimeLeft in workout
+        /// </summary>
+        public TimeSpan TimeLeft { get; private set; }
+
+        /// <summary>
+        /// Current workout state
+        /// </summary>
+        public WorkoutState State { get; private set; }
+
+        /// <summary>
+        /// Pause workout
+        /// </summary>
+        public ICommand Pause { get; private set; }
+
+        /// <summary>
+        /// Url to video with workout
+        /// </summary>
+        public string WorkoutVideoUrl { get; private set; }
+
+        /// <summary>
+        /// Url to preview from device camera
+        /// </summary>
+        public string PreviewVideoUrl { get; private set; }
+    }
+}
index 6fc03c7..a0c9ff5 100644 (file)
@@ -1,5 +1,5 @@
 using System;
-using System.Collections.ObjectModel;
+using System.Collections.Generic;
 using System.Windows.Input;
 using Fitness.Models;
 using Fitness.Services;
@@ -10,23 +10,25 @@ namespace Fitness.ViewModels
 {
     public class MainViewModel : BaseViewModel
     {
+        private WorkoutViewModel selectedWorkout;
+
         public MainViewModel()
         {
-            Workouts = new ObservableCollection<Workout>(new[]
+            Workouts = new List<object>(new[]
             {
-              new Workout
+              new WorkoutViewModel
               {
-                Title = "JOGA Workout 0000",
-                Description = "This is a description of JOGA workout 0000",
+                Title = "JOGA Workout 0",
+                Description = "1. Lie down on your back, keep your knees bent and your back and feet flat on the mat.\n2. Slowly lift your torso and situp.\n3. Return to the starting position by rolling down one vertebrae at a time.\n4. Repeat the exercise until set is complete.",
                 Difficulty = DifficultyLevel.Easy,
                 Duration = new TimeSpan(0, 4, 30),
-                Favourite = false,
+                Favourite = true,
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0000.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0000.jpeg",
               },
-              new Workout
+              new WorkoutViewModel
               {
-                Title = "JOGA Workout 0001",
+                Title = "JOGA Workout 1",
                 Description = "This is a description of JOGA workout 0001",
                 Difficulty = DifficultyLevel.Easy,
                 Duration = new TimeSpan(0, 4, 30),
@@ -34,9 +36,9 @@ namespace Fitness.ViewModels
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0001.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0001.jpeg",
               },
-              new Workout
+              new WorkoutViewModel
               {
-                Title = "JOGA Workout 0002",
+                Title = "JOGA Workout 2",
                 Description = "This is a description of JOGA workout 0002",
                 Difficulty = DifficultyLevel.Medium,
                 Duration = new TimeSpan(0, 4, 30),
@@ -44,9 +46,9 @@ namespace Fitness.ViewModels
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0002.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0002.jpeg",
               },
-              new Workout
+              new WorkoutViewModel
               {
-                Title = "JOGA Workout 0003",
+                Title = "JOGA Workout 3",
                 Description = "This is a description of JOGA workout 0003",
                 Difficulty = DifficultyLevel.Medium,
                 Duration = new TimeSpan(0, 4, 30),
@@ -54,9 +56,9 @@ namespace Fitness.ViewModels
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0003.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/JOGA-0003.jpeg",
               },
-              new Workout
+              new WorkoutViewModel
               {
-                Title = "Sukces Workout 0003",
+                Title = "Sukces Workout 0",
                 Description = "This is a description of Sukces workout 0003",
                 Difficulty = DifficultyLevel.Hard,
                 Duration = new TimeSpan(0, 4, 30),
@@ -64,9 +66,9 @@ namespace Fitness.ViewModels
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0000.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0000.jpeg",
               },
-              new Workout
+              new WorkoutViewModel
               {
-                Title = "Sukces Workout 0001",
+                Title = "Sukces Workout 1",
                 Description = "This is a description of Sukces workout 0001",
                 Difficulty = DifficultyLevel.Medium,
                 Duration = new TimeSpan(0, 4, 30),
@@ -74,9 +76,9 @@ namespace Fitness.ViewModels
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0001.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0001.jpeg",
               },
-              new Workout
+              new WorkoutViewModel
               {
-                Title = "Sukces Workout 0002",
+                Title = "Sukces Workout 2",
                 Description = "This is a description of Sukces workout 0002",
                 Difficulty = DifficultyLevel.Medium,
                 Duration = new TimeSpan(0, 4, 30),
@@ -84,9 +86,9 @@ namespace Fitness.ViewModels
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0002.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0002.jpeg",
               },
-              new Workout
+              new WorkoutViewModel
               {
-                Title = "Sukces Workout 0003",
+                Title = "Sukces Workout 3",
                 Description = "This is a description of Sukces workout 0003",
                 Difficulty = DifficultyLevel.Easy,
                 Duration = new TimeSpan(0, 4, 30),
@@ -94,9 +96,9 @@ namespace Fitness.ViewModels
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0003.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0003.jpeg",
               },
-              new Workout
+              new WorkoutViewModel
               {
-                Title = "Sukces Workout 0004",
+                Title = "Sukces Workout 4",
                 Description = "This is a description of Sukces workout 0004",
                 Difficulty = DifficultyLevel.Easy,
                 Duration = new TimeSpan(0, 4, 30),
@@ -104,9 +106,9 @@ namespace Fitness.ViewModels
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0004.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/sukces-0004.jpeg",
               },
-              new Workout
+              new WorkoutViewModel
               {
-                Title = "Video workout 0000",
+                Title = "Video workout 0",
                 Description = "This is a description of workout 0000",
                 Difficulty = DifficultyLevel.Easy,
                 Duration = new TimeSpan(0, 4, 30),
@@ -114,9 +116,9 @@ namespace Fitness.ViewModels
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/video-0000.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/video-0000.jpeg",
               },
-              new Workout
+              new WorkoutViewModel
               {
-                Title = "Video workout 0001",
+                Title = "Video workout 1",
                 Description = "This is a description of workout 0001",
                 Difficulty = DifficultyLevel.Easy,
                 Duration = new TimeSpan(0, 4, 30),
@@ -124,9 +126,9 @@ namespace Fitness.ViewModels
                 VideoUrl = Application.Current.DirectoryInfo.Resource + "media/video-0001.avi",
                 ThumbnailUrl = Application.Current.DirectoryInfo.Resource + "media/video-0001.jpeg",
               },
-              new Workout
+              new WorkoutViewModel
               {
-                Title = "Video workout 0002",
+                Title = "Video workout 2",
                 Description = "This is a description of workout 0002",
                 Difficulty = DifficultyLevel.Medium,
                 Duration = new TimeSpan(0, 4, 30),
@@ -138,15 +140,32 @@ namespace Fitness.ViewModels
 
             WatchPreview = new Command(() => { NavigationService.Instance.NavigateToExercisePreviewView(); });
             StartWorkout = new Command(() => { NavigationService.Instance.NavigateToExercisingView(); });
+            SelectedWorkout = Workouts[0] as WorkoutViewModel;
         }
 
         /// <summary>
         /// List of all available workouts
         /// </summary>
-        public ObservableCollection<Workout> Workouts { get; private set; }
+        public List<object> Workouts { get; private set; }
+
+        /// <summary>
+        /// Currently selected workout
+        /// </summary>
+        public WorkoutViewModel SelectedWorkout
+        {
+            get => selectedWorkout;
+            set
+            {
+                if (value != selectedWorkout)
+                {
+                    selectedWorkout = value;
+                    RaisePropertyChanged();
+                }
+            }
+        }
 
         /// <summary>
-        /// Watch selected workout preview
+        /// Stop workout
         /// </summary>
         public ICommand WatchPreview { get; private set; }
 
index 42f3f32..5b8c9c9 100644 (file)
@@ -1,9 +1,13 @@
 using System;
 using System.Windows.Input;
 using Fitness.Models;
+using Fitness.ViewModels;
 
-namespace Fitness.ViewModels
+namespace Fitness.Models
 {
+    /// <summary>
+    /// WorkoutViewModel's information.
+    /// </summary>
     public class WorkoutViewModel : BaseViewModel
     {
         /// <summary>
@@ -12,29 +16,29 @@ namespace Fitness.ViewModels
         public int Score { get; private set; }
 
         /// <summary>
-        /// Repetitions made in current Workout
+        /// WorkoutViewModel title
         /// </summary>
-        public int Repetitions { get; private set; }
+        public string Title { get; set; }
 
         /// <summary>
-        /// Time left in current body pose to accept repetition.
+        /// Full workout description
         /// </summary>
-        public TimeSpan Hold { get; private set; }
+        public string Description { get; set; }
 
         /// <summary>
-        /// TimeLeft in workout
+        /// Duration of the workout
         /// </summary>
-        public TimeSpan TimeLeft { get; private set; }
+        public TimeSpan Duration { get; set; }
 
         /// <summary>
-        /// Current workout state
+        /// Predefined difficulty level of workout
         /// </summary>
-        public WorkoutState State { get; private set; }
+        public DifficultyLevel Difficulty { get; set; }
 
         /// <summary>
-        /// Pause workout
+        /// True if workout is added is user's favourite
         /// </summary>
-        public ICommand Pause { get; private set; }
+        public bool Favourite { get; set; }
 
         /// <summary>
         /// Stop workout
@@ -49,11 +53,11 @@ namespace Fitness.ViewModels
         /// <summary>
         /// Url to video with workout
         /// </summary>
-        public string WorkoutVideoUrl { get; private set; }
+        public string ThumbnailUrl { get; set; }
 
         /// <summary>
-        /// Url to preview from device camera
+        /// Url to workout video
         /// </summary>
-        public string PreviewVideoUrl { get; private set; }
+        public string VideoUrl { get; set; }
     }
 }
diff --git a/Fitness/Views/Converters/DifficultyLevelToIconConverter.cs b/Fitness/Views/Converters/DifficultyLevelToIconConverter.cs
new file mode 100644 (file)
index 0000000..4d7dad8
--- /dev/null
@@ -0,0 +1,30 @@
+using System;
+using Fitness.Models;
+using Tizen.NUI;
+using Tizen.NUI.Binding;
+
+namespace Fitness.Views.Converters
+{
+    public class DifficultyLevelToIconConverter : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+        {
+            switch ((DifficultyLevel)value)
+            {
+                case DifficultyLevel.Easy:
+                    return NUIApplication.Current.DirectoryInfo.Resource + "/layout/images/lvl_easy.png";
+                case DifficultyLevel.Medium:
+                    return NUIApplication.Current.DirectoryInfo.Resource + "/layout/images/lvl_medium.png";
+                case DifficultyLevel.Hard:
+                    return NUIApplication.Current.DirectoryInfo.Resource + "/layout/images/lvl_hard.png";
+                default:
+                    return null;
+            }
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+        {
+            throw new NotSupportedException();
+        }
+    }
+}
diff --git a/Fitness/Views/Converters/FavouriteToIconConverter.cs b/Fitness/Views/Converters/FavouriteToIconConverter.cs
new file mode 100644 (file)
index 0000000..0707078
--- /dev/null
@@ -0,0 +1,26 @@
+using System;
+using Tizen.NUI;
+using Tizen.NUI.Binding;
+
+namespace Fitness.Views.Converters
+{
+    public class FavouriteToIconConverter : IValueConverter
+    {
+        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+        {
+            if ((bool)value)
+            {
+                return NUIApplication.Current.DirectoryInfo.Resource + "/layout/images/icon_fav_full.png";
+            }
+            else
+            {
+                return NUIApplication.Current.DirectoryInfo.Resource + "/layout/images/icon_fav_empty.png";
+            }
+        }
+
+        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+        {
+            throw new NotSupportedException();
+        }
+    }
+}
index 6018a36..db1db0b 100644 (file)
@@ -5,29 +5,55 @@
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
   xmlns:views="clr-namespace:Fitness.Views"
   xmlns:ctrl="clr-namespace:Fitness.Controls"
-  xmlns:c="clr-namespace:Tizen.NUI.Components;assembly=Tizen.NUI.Components"
+  xmlns:nui="clr-namespace:Tizen.NUI.Components;assembly=Tizen.NUI.Components"
+  xmlns:converters="clr-namespace:Fitness.Views.Converters"
   HeightResizePolicy="FillToParent" WidthResizePolicy="FillToParent" BackgroundColor="#EEEFF1" ParentOrigin="Center" PivotPoint="Center" PositionUsesPivotPoint="true" Padding="{views:ExtentsInUnits Top=26}">
+  <View.XamlResources>
+      <converters:DifficultyLevelToIconConverter x:Key="difficultyLevelConverter"/>
+      <converters:FavouriteToIconConverter x:Key="favouriteToIconConverter"/>
+  </View.XamlResources>
+  <View.BindingContext>
+    <vm:MainViewModel x:Name="mainViewModel">
+    </vm:MainViewModel>
+  </View.BindingContext>
   <View.Layout>
       <LinearLayout LinearOrientation="Vertical" LinearAlignment="Top"/>
   </View.Layout>
-  <View.BindingContext>
-    <vm:MainViewModel x:Name="mainViewModel"/>
-  </View.BindingContext>
-  <View Margin="{views:ExtentsInUnits Start=16,End=16}" Weight="1.0" WidthResizePolicy="FillToParent">
+  <View BindingContext="{x:Reference mainViewModel}" Margin="{views:ExtentsInUnits Start=16,End=16}" Weight="1.0" WidthResizePolicy="FillToParent" >
       <View.Layout>
           <LinearLayout LinearOrientation="Horizontal" LinearAlignment="End"/>
       </View.Layout>
-      <View Weight="1.0" HeightResizePolicy="FillToParent">
-          <TextLabel BackgroundColor="Blue" HeightResizePolicy="FillToParent"/>
-          <View HeightResizePolicy="FillToParent" WidthResizePolicy="FillToParent">
+      <ImageView BindingContext="{Binding SelectedWorkout}" Weight="1.0" HeightResizePolicy="FillToParent" ResourceUrl="{Binding ThumbnailUrl}">
+          <ImageView.Layout>
+              <LinearLayout LinearOrientation="Vertical" LinearAlignment="Center"/>
+          </ImageView.Layout>
+          <nui:Button BindingContext="{x:Reference mainViewModel}" PositionUsesPivotPoint="true" ParentOrigin="0.5,0.5" PivotPoint="0.5,0.5" Text="Let's try" Command="{Binding StartWorkout}"/>
+          <nui:Button BindingContext="{x:Reference mainViewModel}" PositionUsesPivotPoint="true" ParentOrigin="0.5,0.5" PivotPoint="0.5,0.5" Text="Watch Preview" Command="{Binding WatchPreview}"/>
+      </ImageView>
+      <View Size="{views:SizeInUnits Width=107}" Margin="{views:ExtentsInUnits Start=8}" HeightResizePolicy="FillToParent" BindingContext="{x:Reference mainViewModel}">
+          <View HeightResizePolicy="FillToParent" WidthResizePolicy="FillToParent" BindingContext="{x:Reference mainViewModel}">
               <View.Layout>
-                  <LinearLayout LinearOrientation="Vertical" LinearAlignment="Center"/>
+                  <LinearLayout LinearOrientation="Vertical" LinearAlignment="Begin"/>
               </View.Layout>
-              <c:Button BindingContext="{x:Reference mainViewModel}" PositionUsesPivotPoint="true" ParentOrigin="0.5,0.5" PivotPoint="0.5,0.5" Text="Let's try" Command="{Binding StartWorkout}"/>
-              <c:Button BindingContext="{x:Reference mainViewModel}" PositionUsesPivotPoint="true" ParentOrigin="0.5,0.5" PivotPoint="0.5,0.5" Text="Watch Preview" Command="{Binding WatchPreview}"/>
+              <View BindingContext="{x:Reference mainViewModel}">
+                  <View.Layout>
+                      <LinearLayout LinearOrientation="Horizontal" LinearAlignment="Begin"/>
+                  </View.Layout>
+                  <TextLabel BindingContext="{Binding SelectedWorkout}" Text="{Binding Path=Title}" PointSize="40" VerticalAlignment="Center" TextColor="#000C2B"/>
+                  <ImageView BindingContext="{Binding SelectedWorkout}" Size="36,48" Margin="30,30,0,0" ResourceUrl="{Binding Difficulty, Converter={StaticResource difficultyLevelConverter}}"/>
+              </View>
+              <View BindingContext="{x:Reference mainViewModel}">
+                  <View.Layout>
+                      <LinearLayout LinearOrientation="Horizontal" LinearAlignment="Begin"/>
+                  </View.Layout>
+                  <ImageView Size="28,28" ResourceUrl="*Resource*/layout/images/icon_time.png"/>
+                  <TextLabel BindingContext="{Binding SelectedWorkout}" Text="{Binding Duration,StringFormat=\{0:h\\:mm\\:ss\}}" PointSize="28" Margin="8,0,0,0" VerticalAlignment="Center" TextColor="#000C2B"/>
+              </View>
+              <TextLabel BindingContext="{Binding SelectedWorkout}" Size="{views:SizeInUnits Width=107}" Text="{Binding Description}" PointSize="28" LineWrapMode="Word" Weight="1.0" VerticalAlignment="Bottom" Ellipsis="false" MultiLine="true" TextColor="#000C2B" EnableAutoScroll="true"/>
           </View>
+          <ImageView PositionUsesPivotPoint="true" PivotPoint="1.0,0.0" ParentOrigin="1.0, 0.0" Size="30,30" BindingContext="{Binding SelectedWorkout}" ResourceUrl="{Binding Favourite, Converter={StaticResource favouriteToIconConverter}}"/>
       </View>
-      <TextLabel BackgroundColor="Cyan" Size="{views:SizeInUnits Width=107}" Margin="{views:ExtentsInUnits Start=8}" HeightResizePolicy="FillToParent" />
   </View>
-  <TextLabel BackgroundColor="Green" Size="{views:SizeInUnits Height=44}" Margin="{views:ExtentsInUnits Top=10, Bottom=10}" WidthResizePolicy="FillToParent"/>
+  <View Size="{views:SizeInUnits Height=44}" Margin="{views:ExtentsInUnits Top=10, Bottom=10}" WidthResizePolicy="FillToParent">
+  </View>
 </ctrl:Page>
diff --git a/Fitness/res/layout/images/icon_fav_empty.png b/Fitness/res/layout/images/icon_fav_empty.png
new file mode 100644 (file)
index 0000000..b2fefa8
Binary files /dev/null and b/Fitness/res/layout/images/icon_fav_empty.png differ
diff --git a/Fitness/res/layout/images/icon_fav_full.png b/Fitness/res/layout/images/icon_fav_full.png
new file mode 100644 (file)
index 0000000..13ae142
Binary files /dev/null and b/Fitness/res/layout/images/icon_fav_full.png differ
diff --git a/Fitness/res/layout/images/icon_time.png b/Fitness/res/layout/images/icon_time.png
new file mode 100644 (file)
index 0000000..7d95648
Binary files /dev/null and b/Fitness/res/layout/images/icon_time.png differ
diff --git a/Fitness/res/layout/images/lvl_easy.png b/Fitness/res/layout/images/lvl_easy.png
new file mode 100644 (file)
index 0000000..c019e0a
Binary files /dev/null and b/Fitness/res/layout/images/lvl_easy.png differ
diff --git a/Fitness/res/layout/images/lvl_hard.png b/Fitness/res/layout/images/lvl_hard.png
new file mode 100644 (file)
index 0000000..ad89b25
Binary files /dev/null and b/Fitness/res/layout/images/lvl_hard.png differ
diff --git a/Fitness/res/layout/images/lvl_medium.png b/Fitness/res/layout/images/lvl_medium.png
new file mode 100644 (file)
index 0000000..5f4fa9a
Binary files /dev/null and b/Fitness/res/layout/images/lvl_medium.png differ