private static IExercise CreateExercise(XmlParsedData xmlParsedData, string name, UnityEngine.Object[] resources) { Sprite sprite = FindSpriteByName(xmlParsedData.ImageName, resources); if (sprite == null) { Debug.LogError($"Image \"{xmlParsedData.ImageName}\" was not found"); } SimpleExercise exercise = new SimpleExercise(name, xmlParsedData.Text, sprite, xmlParsedData.Answer); return(exercise); }
public HorizontalScrollCell() { Label bodyPartLabel; String currentBodyPart = ""; List<Exercise> exerciseList = Manager.Instance.Exercise.GetAllExercises().GetRange(0, 10); StackLayout nestedStackLayout = new StackLayout { VerticalOptions = LayoutOptions.Start, HorizontalOptions = LayoutOptions.CenterAndExpand, Orientation = StackOrientation.Horizontal, BackgroundColor = Color.Gray, HeightRequest = 215 }; ScrollView nestedStackScrollView = new ScrollView { VerticalOptions = LayoutOptions.Start, HorizontalOptions = LayoutOptions.FillAndExpand, Orientation = ScrollOrientation.Horizontal, HeightRequest = 215, Padding = new Thickness(20) }; foreach (Exercise exercise in exerciseList) { if (currentBodyPart != exercise.Bodypart) { currentBodyPart = exercise.Bodypart; bodyPartLabel = new Label { HorizontalOptions = LayoutOptions.Fill, XAlign = TextAlignment.Center, Font = Font.BoldSystemFontOfSize(20) }; var bodyPartFrame = new Frame { Content = bodyPartLabel, OutlineColor = Color.Silver, BackgroundColor = Color.Lime, HeightRequest = 20 }; bodyPartLabel.Text = exercise.Bodypart; // primaryStackLayout.Children.Add(bodyPartFrame); nestedStackLayout = new StackLayout { VerticalOptions = LayoutOptions.Start, HorizontalOptions = LayoutOptions.CenterAndExpand, Orientation = StackOrientation.Horizontal, BackgroundColor = Color.Gray, HeightRequest = 215 }; nestedStackScrollView = new ScrollView { VerticalOptions = LayoutOptions.Start, HorizontalOptions = LayoutOptions.FillAndExpand, Orientation = ScrollOrientation.Horizontal, HeightRequest = 215, Padding = new Thickness(20) }; nestedStackScrollView.Content = nestedStackLayout; // primaryStackLayout.Children.Add(nestedStackScrollView); } StackLayout exerciseStackLayout = new StackLayout { VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand, Orientation = StackOrientation.Vertical, WidthRequest = 150, HeightRequest = 190 }; var exerciseFrame = new Frame { Content = exerciseStackLayout, OutlineColor = Color.Silver, Padding = new Thickness(20) }; var tapGestureRecognizer = new TapGestureRecognizer(); tapGestureRecognizer.TappedCallback += (s, e) => { SimpleExercise simpleExercise = new SimpleExercise(exercise); this.View.Navigation.PushAsync(new ExercisePage(simpleExercise)); }; exerciseFrame.GestureRecognizers.Add(tapGestureRecognizer); Label exerciseNameLabel = new Label { Text = exercise.ExerciseName, VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand, XAlign = TextAlignment.Center }; Image exerciseImage = new Image { Source = ImageSource.FromResource("WorkoutCreator.Images.Exercise.jpg"), WidthRequest = 120, HeightRequest = 120, }; exerciseStackLayout.Children.Add(exerciseNameLabel); exerciseStackLayout.Children.Add(exerciseImage); nestedStackLayout.Children.Add(exerciseFrame); nestedStackScrollView.Content = nestedStackLayout; } }
public ExercisePage(SimpleExercise exercise, bool isExerciseEdit = false, int exid = 1) { this.exercise = exercise; this.isExerciseEdit = isExerciseEdit; Title = isExerciseEdit ? "Edit Exercise Prescription Details" : "Add Exercise Prescription Details"; Label exerciseNameLabel = new Label { Text = exercise.Exercise.ExerciseName, FontSize = 45 }; Label exerciseCategoryLabel = new Label { Text = exercise.Exercise.Bodypart, FontSize = 40 }; StackLayout exerciseStack = new StackLayout { Orientation = StackOrientation.Vertical, Children = { exerciseNameLabel, exerciseCategoryLabel } }; Image exerciseImage = new Image { HorizontalOptions = LayoutOptions.StartAndExpand, WidthRequest = 180, HeightRequest = 180, }; var exerciseFrame = new Frame { Content = exerciseImage, OutlineColor = Color.Silver, Padding = new Thickness(20), HorizontalOptions = LayoutOptions.EndAndExpand, }; try { if (exercise.Exercise.ImageFile.Trim() != "") { String imageBasePath = "http://www.mymobilefit.com/StrengthImages/"; String finalImagePath = imageBasePath + exercise.Exercise.ImageFile.Trim(); exerciseImage.Source = new UriImageSource { Uri = new Uri(finalImagePath), CachingEnabled = true, CacheValidity = new TimeSpan(5, 0, 0, 0) }; } } catch (Exception e2) { String exceptionMessage = e2.Message; } StackLayout exercisePrescriptionHeaderStackLayout = new StackLayout { HorizontalOptions = LayoutOptions.FillAndExpand, Orientation = StackOrientation.Horizontal, Children = { exerciseStack, exerciseFrame } }; CustomPicker setPicker = new CustomPicker { Title = "Sets" }; foreach(int sets in SimpleExercise.SetOptions) { setPicker.Items.Add(sets.ToString()); }; CustomPicker repPicker = new CustomPicker { Title = "Reps" }; foreach (int reps in SimpleExercise.RepOptions) { repPicker.Items.Add(reps.ToString()); }; CustomPicker weightPicker = new CustomPicker { Title = "Weight" }; foreach(int weight in SimpleExercise.WeightOptions) { weightPicker.Items.Add(weight.ToString()); } CustomPicker seatPositionLabelPicker1 = new CustomPicker { Title = "Label", WidthRequest = 200 }; CustomPicker seatPositionLabelPicker2 = new CustomPicker { Title = "Label", WidthRequest = 200 }; CustomPicker seatPositionLabelPicker3 = new CustomPicker { Title = "Label", WidthRequest = 200 }; CustomPicker seatPositionLabelPicker4 = new CustomPicker { Title = "Label", WidthRequest = 200 }; foreach(string seatPosLabel in SimpleExercise.SeatPositionLabelOptions) { seatPositionLabelPicker1.Items.Add(seatPosLabel); seatPositionLabelPicker2.Items.Add(seatPosLabel); seatPositionLabelPicker3.Items.Add(seatPosLabel); seatPositionLabelPicker4.Items.Add(seatPosLabel); } CustomPicker seatPositionValuePicker1 = new CustomPicker { Title = "Value", WidthRequest = 90 }; CustomPicker seatPositionValuePicker2 = new CustomPicker { Title = "Value", WidthRequest = 90 }; CustomPicker seatPositionValuePicker3 = new CustomPicker { Title = "Value", WidthRequest = 90 }; CustomPicker seatPositionValuePicker4 = new CustomPicker { Title = "Value", WidthRequest = 90 }; foreach(string seatPosValue in SimpleExercise.SeatPositionValueOptions) { seatPositionValuePicker1.Items.Add(seatPosValue); seatPositionValuePicker2.Items.Add(seatPosValue); seatPositionValuePicker3.Items.Add(seatPosValue); seatPositionValuePicker4.Items.Add(seatPosValue); } //Set selected index bindings this.BindingContext = exercise; setPicker.SetBinding(Picker.SelectedIndexProperty, "Sets"); repPicker.SetBinding(Picker.SelectedIndexProperty, "Reps"); weightPicker.SetBinding(Picker.SelectedIndexProperty, "Weight"); seatPositionLabelPicker1.SetBinding(Picker.SelectedIndexProperty, "SeatPosition1Label"); seatPositionLabelPicker2.SetBinding(Picker.SelectedIndexProperty, "SeatPosition2Label"); seatPositionLabelPicker3.SetBinding(Picker.SelectedIndexProperty, "SeatPosition3Label"); seatPositionLabelPicker4.SetBinding(Picker.SelectedIndexProperty, "SeatPosition4Label"); seatPositionValuePicker1.SetBinding(Picker.SelectedIndexProperty, "SeatPosition1Value"); seatPositionValuePicker2.SetBinding(Picker.SelectedIndexProperty, "SeatPosition2Value"); seatPositionValuePicker3.SetBinding(Picker.SelectedIndexProperty, "SeatPosition3Value"); seatPositionValuePicker4.SetBinding(Picker.SelectedIndexProperty, "SeatPosition4Value"); StackLayout labelsStackLayout = new StackLayout { Padding = new Thickness(20), Children = { exercisePrescriptionHeaderStackLayout, new StackLayout { Children = { new Label { Text = "Target Sets: " }, setPicker }, Orientation = StackOrientation.Horizontal, Padding = new Thickness(10), Spacing = 40 }, new StackLayout { Children = { new Label { Text = "Target Reps: " }, repPicker }, Orientation = StackOrientation.Horizontal, Padding = new Thickness(10), Spacing = 40 }, new StackLayout { Children = { new Label { Text = "Target Weight (lbs): " }, weightPicker }, Orientation = StackOrientation.Horizontal, Padding = new Thickness(10), Spacing = 40 }, new StackLayout { Children = { new Label { Text = "Seat Pos 1: " }, seatPositionLabelPicker1, seatPositionValuePicker1 //seatPosition1Entry }, Orientation = StackOrientation.Horizontal, Padding = new Thickness(10), Spacing = 35 }, new StackLayout { Children = { new Label { Text = "Seat Pos 2: " }, seatPositionLabelPicker2, seatPositionValuePicker2 }, Orientation = StackOrientation.Horizontal, Padding = new Thickness(10), Spacing = 35 } , new StackLayout { Children = { new Label { Text = "Seat Pos 3: " }, seatPositionLabelPicker3, seatPositionValuePicker3 }, Orientation = StackOrientation.Horizontal, Padding = new Thickness(10), Spacing = 35 } , new StackLayout { Children = { new Label { Text = "Seat Pos 4: " }, seatPositionLabelPicker4, seatPositionValuePicker4 }, Orientation = StackOrientation.Horizontal, Padding = new Thickness(10), Spacing = 35 } }, Spacing = 20 }; if(isExerciseEdit) { ToolbarItem cancelItem = new ToolbarItem { Text = "Cancel", Icon = Device.OnPlatform("cancel.png", "ic_action_cancel", "Images/cancel.png"), Order = ToolbarItemOrder.Primary }; cancelItem.Clicked += async (sender, args) => { bool confirm = await this.DisplayAlert("Edit Exercise", "Cancel exercise edit?", "Yes", "No"); if (confirm) { await this.Navigation.PopAsync(); } }; this.ToolbarItems.Add(cancelItem); ToolbarItem deleteItem = new ToolbarItem { Text = "Delete", Icon = Device.OnPlatform("discard.png", "ic_action_discard.png", "Images/delete.png"), Order = ToolbarItemOrder.Primary }; deleteItem.Clicked += async (sender, args) => { bool confirm = await this.DisplayAlert("Delete Exercise", "Delete this exercise?", "Yes", "No"); if (confirm) { exercise.Delete(); App.WorkoutCreatorContext.Exercises.Remove(exercise); await this.Navigation.PopAsync(); } }; this.ToolbarItems.Add(deleteItem); } this.BackgroundColor = Color.FromRgb(0, 191, 255); this.Padding = new Thickness(10, Device.OnPlatform(20, 0, 0), 10, 0); this.Content = labelsStackLayout; }
private Task<Frame> GetExerciseFrame(Exercise exercise) { StackLayout exerciseStackLayout = new StackLayout { VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand, Orientation = StackOrientation.Vertical, WidthRequest = 165, HeightRequest = 195 }; var exerciseFrame = new Frame { Content = exerciseStackLayout, OutlineColor = Color.Silver, //light sky blue BackgroundColor = Color.FromRgb(135, 206, 250) }; var tapGestureRecognizer2 = new TapGestureRecognizer(); tapGestureRecognizer2.Tapped += (s2, e2) => { SimpleExercise simpleExercise = new SimpleExercise(exercise); this.Navigation.PushAsync(new ExercisePage(simpleExercise)); }; exerciseFrame.GestureRecognizers.Add(tapGestureRecognizer2); Label exerciseNameLabel = new Label { Text = exercise.ExerciseName, TextColor = Color.White, FontAttributes = FontAttributes.Bold, FontSize = 20, VerticalOptions = LayoutOptions.Start, HorizontalOptions = LayoutOptions.CenterAndExpand, XAlign = TextAlignment.Center }; Image exerciseImage = new Image { WidthRequest = 100, HeightRequest = 100, StyleId = exercise.ImageFile }; try { if (exercise.ImageFile.Trim() != "") { String imageBasePath = "http://www.mymobilefit.com/StrengthImages/"; String finalImagePath = imageBasePath + exercise.ImageFile.Trim(); exerciseImage.Source = new UriImageSource { Uri = new Uri(finalImagePath), CachingEnabled = true, CacheValidity = new TimeSpan(5, 0, 0, 0) }; } } catch (Exception e2) { String exceptionMessage = e2.Message; } exerciseStackLayout.Children.Add(exerciseNameLabel); exerciseStackLayout.Children.Add(exerciseImage); return Task<Frame>.FromResult(exerciseFrame); }