From 03959e785f635697fcdf0f99aad9454fafbf4e2e Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Thu, 14 Jun 2018 11:57:22 +0300 Subject: Improved UdpDiscoveryClient (I Think...). Improved PPC NavigationManager by providing a way to navigate by module/view paths.. --- .../Navigation/DefaultNavigationManager.cs | 62 +++++++++++++++++++--- 1 file changed, 55 insertions(+), 7 deletions(-) (limited to 'Software/Visual_Studio/PPC/Tango.PPC.UI/Navigation/DefaultNavigationManager.cs') diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Navigation/DefaultNavigationManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Navigation/DefaultNavigationManager.cs index 12c759c1a..8c42a3a44 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Navigation/DefaultNavigationManager.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Navigation/DefaultNavigationManager.cs @@ -3,7 +3,10 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Windows; +using System.Windows.Media; using Tango.PPC.Common; +using Tango.PPC.Common.Modules; using Tango.PPC.Common.Navigation; using Tango.PPC.UI.Views; using Tango.SharedUI.Controls; @@ -12,23 +15,68 @@ namespace Tango.PPC.UI.Navigation { public class DefaultNavigationManager : INavigationManager { + private IPPCModuleLoader _moduleLoader; + + public DefaultNavigationManager(IPPCModuleLoader moduleLoader) + { + _moduleLoader = moduleLoader; + } + public void NavigateTo(NavigationView view) { - NavigationControl[] controls = new NavigationControl[] + if (view == NavigationView.HomeModule) { - MainView.Instance.NavigationControl, - LayoutView.Instance.NavigationControl - }; - - var control = controls.Where(x => x.Elements.ToList().Exists(y => NavigationControl.GetNavigationName(y) == view.ToString())).SingleOrDefault(); - control.NavigateTo(view.ToString()); + MainView.Instance.NavigationControl.NavigateTo(NavigationView.LayoutView.ToString()); + var firstModule = _moduleLoader.UserModules.FirstOrDefault(); + LayoutView.Instance.NavigationControl.NavigateTo(firstModule.Name); + } + else + { + MainView.Instance.NavigationControl.NavigateTo(view.ToString()); + } } public void NavigateTo() where T : IPPCModule { + MainView.Instance.NavigationControl.NavigateTo(NavigationView.LayoutView.ToString()); var navigationControl = LayoutView.Instance.NavigationControl; + var module = _moduleLoader.UserModules.SingleOrDefault(x => x.GetType() == typeof(T)); + navigationControl.NavigateTo(module.Name); + } + public void NavigateTo(string viewPath) where T : IPPCModule + { + NavigateTo(viewPath.Split(',')); + } + public void NavigateTo(params String[] viewPath) where T : IPPCModule + { + MainView.Instance.NavigationControl.NavigateTo(NavigationView.LayoutView.ToString()); + var navigationControl = LayoutView.Instance.NavigationControl; + var module = _moduleLoader.UserModules.SingleOrDefault(x => x.GetType() == typeof(T)); + var moduleView = navigationControl.NavigateTo(module.Name); + + var moduleNavigation = moduleView.FindChildOffline(); + + foreach (var view in viewPath) + { + moduleNavigation.RegisterForLoadedOrNow(async (x, e) => + { + await Task.Delay(100); + var v = moduleNavigation.NavigateTo(view); + + if (view != viewPath.Last()) + { + moduleNavigation = v.FindChildOffline(); + } + }); + } + } + + public void NavigateTo(string moduleName) + { + var navigationControl = LayoutView.Instance.NavigationControl; + navigationControl.NavigateTo(moduleName); } } } -- cgit v1.3.1