From 9ef5aeffbaaedea8d28bfeef8501bcf0ca2dbeaf Mon Sep 17 00:00:00 2001 From: Lukasz Stanislawski Date: Thu, 17 Dec 2020 17:59:23 +0100 Subject: [PATCH] Replace Page --- Fitness/Services/NavigationService.cs | 45 +++++++++++++++++++++++++++---- Fitness/ViewModels/ExercisingViewModel.cs | 2 +- Fitness/ViewModels/SummaryViewModel.cs | 2 +- 3 files changed, 42 insertions(+), 7 deletions(-) diff --git a/Fitness/Services/NavigationService.cs b/Fitness/Services/NavigationService.cs index 9eea2d3..87e7a44 100644 --- a/Fitness/Services/NavigationService.cs +++ b/Fitness/Services/NavigationService.cs @@ -1,3 +1,4 @@ +using System; using Fitness.Controls; using Fitness.Views; using Tizen.NUI; @@ -30,27 +31,27 @@ namespace Fitness.Services public void NavigateToMainView() { - navigation.Push(new MainView()); + ReplaceCurrentPage(new MainView()); } public void NavigateToExercisingView() { - navigation.Push(new ExercisingView()); + ReplaceCurrentPage(new ExercisingView()); } public void NavigateToExercisePreviewView(string workoutId) { - navigation.Push(new ExercisePreviewView(workoutId)); + ReplaceCurrentPage(new ExercisePreviewView(workoutId)); } public void NavigateToScanningView() { - navigation.Push(new ScanningView()); + ReplaceCurrentPage(new ScanningView()); } public void NavigateToLoadingView() { - navigation.Push(new LoadingView()); + ReplaceCurrentPage(new LoadingView()); } public void NavigateToSummaryView() @@ -67,5 +68,39 @@ namespace Fitness.Services { navigation.PopToRoot(); } + + private void ReplaceCurrentPage(Fitness.Controls.Page page) + { + navigation.Push(page); + + if (page.PageTransitions != null) + { + page.PageTransitions.TransitionFinished += PageTransitionFinished; + } + else + { + RemovePagesExceptCurrent(); + } + } + + private void PageTransitionFinished(object sender, EventArgs args) + { + RemovePagesExceptCurrent(); + } + + private void RemovePagesExceptCurrent() + { + var pages = navigation.Pages; + + for (int i = pages.Count - 1; i > 0; i--) + { + navigation.Remove(pages[i]); + } + } + + private void RemovePagesExceptCurrentAfterTransition() + { + var pages = navigation.Pages; + } } } diff --git a/Fitness/ViewModels/ExercisingViewModel.cs b/Fitness/ViewModels/ExercisingViewModel.cs index 9eda2cd..b151a47 100644 --- a/Fitness/ViewModels/ExercisingViewModel.cs +++ b/Fitness/ViewModels/ExercisingViewModel.cs @@ -115,7 +115,7 @@ namespace Fitness.ViewModels private void ExecuteEndWorkout() { - Services.NavigationService.Instance.PopToRoot(); + Services.NavigationService.Instance.NavigateToSummaryView(); } private void ExecutePrev() diff --git a/Fitness/ViewModels/SummaryViewModel.cs b/Fitness/ViewModels/SummaryViewModel.cs index 2e74388..72280a9 100644 --- a/Fitness/ViewModels/SummaryViewModel.cs +++ b/Fitness/ViewModels/SummaryViewModel.cs @@ -16,7 +16,7 @@ namespace Fitness.ViewModels public SummaryViewModel() { Back = new Command(() => { NavigationService.Instance.Pop(); }); - Ok = new Command(() => { NavigationService.Instance.PopToRoot(); }); + Ok = new Command(() => { NavigationService.Instance.NavigateToMainView(); }); } /// -- 2.7.4