From e1802508c00e0cede200d3914c5b6e4587cb6963 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Sun, 12 Apr 2020 04:37:11 +0300 Subject: Working on FSE TUP. --- .../Tango.SharedUI/Controls/NavigationControl.cs | 243 +++++++++++---------- 1 file changed, 125 insertions(+), 118 deletions(-) (limited to 'Software/Visual_Studio/Tango.SharedUI') diff --git a/Software/Visual_Studio/Tango.SharedUI/Controls/NavigationControl.cs b/Software/Visual_Studio/Tango.SharedUI/Controls/NavigationControl.cs index c2d544042..879401c1b 100644 --- a/Software/Visual_Studio/Tango.SharedUI/Controls/NavigationControl.cs +++ b/Software/Visual_Studio/Tango.SharedUI/Controls/NavigationControl.cs @@ -457,165 +457,172 @@ namespace Tango.SharedUI.Controls private void NavigationThread() { - while (true) + try { - var item = _navigationQueue.BlockDequeue(); + while (true) + { + var item = _navigationQueue.BlockDequeue(); - var navigationCompleted = false; + var navigationCompleted = false; - NavigationElement fromElement = item.FromElement; - NavigationElement toElement = item.ToElement; + NavigationElement fromElement = item.FromElement; + NavigationElement toElement = item.ToElement; - Dispatcher.BeginInvoke(new Action(() => - { - if (toElement == null || toElement == fromElement) + Dispatcher.BeginInvoke(new Action(() => { + if (toElement == null || toElement == fromElement) + { //navigationCompleted = true; Debug.WriteLine("NavigationControl: THIS MIGHT CAUSE PROBLEMS !!"); - } + } - if (fromElement != null) - { - DoubleAnimation toAnimation = new DoubleAnimation(); - toAnimation.Duration = TransitionDuration; + if (fromElement != null) + { + DoubleAnimation toAnimation = new DoubleAnimation(); + toAnimation.Duration = TransitionDuration; - DoubleAnimation fromAnimation = new DoubleAnimation(); - fromAnimation.Duration = TransitionDuration; + DoubleAnimation fromAnimation = new DoubleAnimation(); + fromAnimation.Duration = TransitionDuration; - int fromIndex = Elements.IndexOf(fromElement.Element); - int toIndex = Elements.IndexOf(toElement.Element); + int fromIndex = Elements.IndexOf(fromElement.Element); + int toIndex = Elements.IndexOf(toElement.Element); - fromElement.Reset(); - toElement.Reset(); + fromElement.Reset(); + toElement.Reset(); - fromAnimation.Completed += (_, __) => - { - fromElement.Deactivate(!KeepElementsAttached); - }; + fromAnimation.Completed += (_, __) => + { + fromElement.Deactivate(!KeepElementsAttached); + }; - bool completed = false; + bool completed = false; - toAnimation.Completed += (_, __) => - { - if (!completed) + toAnimation.Completed += (_, __) => { - completed = true; + if (!completed) + { + completed = true; - INavigationView fromNavigationView = fromElement.Element as INavigationView; - INavigationView toNavigationView = toElement.Element as INavigationView; + INavigationView fromNavigationView = fromElement.Element as INavigationView; + INavigationView toNavigationView = toElement.Element as INavigationView; - if (fromNavigationView != null) - { - fromNavigationView.OnNavigatedFrom(); - } - if (toNavigationView != null) - { - toNavigationView.OnNavigatedTo(); - } + if (fromNavigationView != null) + { + fromNavigationView.OnNavigatedFrom(); + } + if (toNavigationView != null) + { + toNavigationView.OnNavigatedTo(); + } - INavigationViewModel fromVM = fromElement.Element.DataContext as INavigationViewModel; - INavigationViewModel toVM = toElement.Element.DataContext as INavigationViewModel; + INavigationViewModel fromVM = fromElement.Element.DataContext as INavigationViewModel; + INavigationViewModel toVM = toElement.Element.DataContext as INavigationViewModel; - if (fromVM != null && fromVM != toVM) fromVM.OnNavigatedFrom(); - if (toVM != null) toVM.OnNavigatedTo(); + if (fromVM != null && fromVM != toVM) fromVM.OnNavigatedFrom(); + if (toVM != null) toVM.OnNavigatedTo(); - navigationCompleted = true; - } - }; + navigationCompleted = true; + } + }; - switch (TransitionType) - { - case TransitionTypes.Fade: - fromAnimation.From = 1; - fromAnimation.To = 0; + switch (TransitionType) + { + case TransitionTypes.Fade: + fromAnimation.From = 1; + fromAnimation.To = 0; - toAnimation.From = 0; - toAnimation.To = 1; + toAnimation.From = 0; + toAnimation.To = 1; - fromElement.AnimateOpacity(fromAnimation); - toElement.AnimateOpacity(toAnimation); + fromElement.AnimateOpacity(fromAnimation); + toElement.AnimateOpacity(toAnimation); - break; - case TransitionTypes.Zoom: - fromAnimation.From = 1; - fromAnimation.To = 0; + break; + case TransitionTypes.Zoom: + fromAnimation.From = 1; + fromAnimation.To = 0; - toAnimation.From = 0; - toAnimation.To = 1; + toAnimation.From = 0; + toAnimation.To = 1; - fromElement.AnimateScale(fromAnimation); - toElement.AnimateScale(toAnimation); + fromElement.AnimateScale(fromAnimation); + toElement.AnimateScale(toAnimation); - break; - case TransitionTypes.Slide: + break; + case TransitionTypes.Slide: - if (toIndex > fromIndex) - { - fromAnimation.From = 0; - fromAnimation.To = -ActualWidth; + if (toIndex > fromIndex) + { + fromAnimation.From = 0; + fromAnimation.To = -ActualWidth; - toAnimation.From = ActualWidth; - toAnimation.To = 0; - } - else - { - fromAnimation.From = 0; - fromAnimation.To = ActualWidth; + toAnimation.From = ActualWidth; + toAnimation.To = 0; + } + else + { + fromAnimation.From = 0; + fromAnimation.To = ActualWidth; - toAnimation.From = -ActualWidth; - toAnimation.To = 0; - } + toAnimation.From = -ActualWidth; + toAnimation.To = 0; + } - fromElement.AnimateTranslateX(fromAnimation); - toElement.AnimateTranslateX(toAnimation); + fromElement.AnimateTranslateX(fromAnimation); + toElement.AnimateTranslateX(toAnimation); - break; - } + break; + } - if (TransitionAlwaysFades && TransitionType != TransitionTypes.Fade) - { - DoubleAnimation fromFadeAnimation = new DoubleAnimation(); - fromFadeAnimation.From = 1; - fromFadeAnimation.To = 0; - fromFadeAnimation.Duration = TransitionDuration; - - DoubleAnimation toFadeAnimation = new DoubleAnimation(); - toFadeAnimation.From = 0; - toFadeAnimation.To = 1; - toFadeAnimation.Duration = TransitionDuration; - - fromElement.AnimateOpacity(fromFadeAnimation); - toElement.AnimateOpacity(toFadeAnimation); + if (TransitionAlwaysFades && TransitionType != TransitionTypes.Fade) + { + DoubleAnimation fromFadeAnimation = new DoubleAnimation(); + fromFadeAnimation.From = 1; + fromFadeAnimation.To = 0; + fromFadeAnimation.Duration = TransitionDuration; + + DoubleAnimation toFadeAnimation = new DoubleAnimation(); + toFadeAnimation.From = 0; + toFadeAnimation.To = 1; + toFadeAnimation.Duration = TransitionDuration; + + fromElement.AnimateOpacity(fromFadeAnimation); + toElement.AnimateOpacity(toFadeAnimation); + } + + fromElement.Activate(); + toElement.Activate(); } + else + { + toElement.Activate(); + toElement.Reset(); - fromElement.Activate(); - toElement.Activate(); - } - else - { - toElement.Activate(); - toElement.Reset(); + INavigationViewModel toVM = toElement.Element.DataContext as INavigationViewModel; + if (toVM != null) toVM.OnNavigatedTo(); - INavigationViewModel toVM = toElement.Element.DataContext as INavigationViewModel; - if (toVM != null) toVM.OnNavigatedTo(); + navigationCompleted = true; + } + })); - navigationCompleted = true; + for (int i = 0; i < 30; i++) + { + if (navigationCompleted) + { + break; + } + Thread.Sleep(100); } - })); - for (int i = 0; i < 30; i++) - { - if (navigationCompleted) + Dispatcher.BeginInvoke(new Action(() => { - break; - } - Thread.Sleep(100); + NavigationCompleted?.Invoke(); + })); } - - Dispatcher.BeginInvoke(new Action(() => - { - NavigationCompleted?.Invoke(); - })); + } + catch + { + } } -- cgit v1.3.1