From b12818cdcc8402f81c853350cf50d9cbf68fcd28 Mon Sep 17 00:00:00 2001 From: "k.stepaniuk" Date: Mon, 7 Dec 2020 16:09:29 +0100 Subject: [PATCH] Popping to root Signed-off-by: k.stepaniuk --- Fitness/Controls/NavigationStack.cs | 18 ++++++++++++++++++ Fitness/Services/NavigationService.cs | 5 +++++ Fitness/ViewModels/ExercisingViewModel.cs | 2 +- Fitness/ViewModels/LoadingViewModel.cs | 1 - Fitness/ViewModels/SummaryViewModel.cs | 4 ++-- 5 files changed, 26 insertions(+), 4 deletions(-) diff --git a/Fitness/Controls/NavigationStack.cs b/Fitness/Controls/NavigationStack.cs index 536d0e3..d3c4a13 100644 --- a/Fitness/Controls/NavigationStack.cs +++ b/Fitness/Controls/NavigationStack.cs @@ -36,12 +36,30 @@ namespace Fitness.Controls public void Pop() { + PopCore(); + ActivateTopPage(); + } + + public void PopToRoot() + { + while (pages.Count > 1) + { + PopCore(); + } + ActivateTopPage(); + } + + private void PopCore() + { if (pages.TryPeek(out Page last)) { Remove(last); pages.Pop(); } + } + private void ActivateTopPage() + { if (pages.TryPeek(out Page current)) { current.Show(); diff --git a/Fitness/Services/NavigationService.cs b/Fitness/Services/NavigationService.cs index 5bda695..386575c 100644 --- a/Fitness/Services/NavigationService.cs +++ b/Fitness/Services/NavigationService.cs @@ -62,5 +62,10 @@ namespace Fitness.Services { navigation.Pop(); } + + public void PopToRoot() + { + navigation.PopToRoot(); + } } } diff --git a/Fitness/ViewModels/ExercisingViewModel.cs b/Fitness/ViewModels/ExercisingViewModel.cs index 2bb8527..9eda2cd 100644 --- a/Fitness/ViewModels/ExercisingViewModel.cs +++ b/Fitness/ViewModels/ExercisingViewModel.cs @@ -115,7 +115,7 @@ namespace Fitness.ViewModels private void ExecuteEndWorkout() { - Services.NavigationService.Instance.Pop(); + Services.NavigationService.Instance.PopToRoot(); } private void ExecutePrev() diff --git a/Fitness/ViewModels/LoadingViewModel.cs b/Fitness/ViewModels/LoadingViewModel.cs index a0a6b1d..14c0300 100644 --- a/Fitness/ViewModels/LoadingViewModel.cs +++ b/Fitness/ViewModels/LoadingViewModel.cs @@ -75,7 +75,6 @@ namespace Fitness.ViewModels if (count == messages.Length) { - Services.NavigationService.Instance.Pop(); Services.NavigationService.Instance.NavigateToExercisingView(); return false; } diff --git a/Fitness/ViewModels/SummaryViewModel.cs b/Fitness/ViewModels/SummaryViewModel.cs index a7a810c..2e74388 100644 --- a/Fitness/ViewModels/SummaryViewModel.cs +++ b/Fitness/ViewModels/SummaryViewModel.cs @@ -15,8 +15,8 @@ namespace Fitness.ViewModels /// public SummaryViewModel() { - Back = new Command(() => { NavigationService.Instance.NavigateToExercisePreviewView(); }); - Ok = new Command(() => { NavigationService.Instance.NavigateToMainView(); }); + Back = new Command(() => { NavigationService.Instance.Pop(); }); + Ok = new Command(() => { NavigationService.Instance.PopToRoot(); }); } /// -- 2.7.4