diff options
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs')
| -rw-r--r-- | Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs | 252 |
1 files changed, 16 insertions, 236 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs index 83790a56f..c7351aa4a 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/PPCApplication/DefaultPPCApplicationManager.cs @@ -32,10 +32,6 @@ using Tango.PPC.UI.Dialogs; using Tango.Core.Threading; using Tango.PPC.Common.Messages; using Tango.Core.ExtensionMethods; -using Tango.PPC.Common.Navigation; -using Tango.PPC.Common.Synchronization; -using Tango.Insights; -using System.Threading; namespace Tango.PPC.UI.PPCApplication { @@ -53,7 +49,6 @@ namespace Tango.PPC.UI.PPCApplication private IEventLogger _eventLogger; private IPPCModuleLoader _moduleLoader; private INotificationProvider _notificationProvider; - private IMachineDataSynchronizer _machineDataSynchronizer; private WatchDogServer _watchdogServer; private ObservablesContext _machineContext; private ActionTimer _screenLockTimer; @@ -64,11 +59,6 @@ namespace Tango.PPC.UI.PPCApplication public event EventHandler SystemRestartRequired; /// <summary> - /// Occurs when the updater utility has failed to perform the last update. - /// </summary> - public event EventHandler UpdaterFailed; - - /// <summary> /// Occurs when the application has started. /// </summary> public event EventHandler ApplicationStarted; @@ -103,15 +93,10 @@ namespace Tango.PPC.UI.PPCApplication /// </summary> public bool IsShuttingDown { get; private set; } - private bool _isInTechnicianMode; /// <summary> /// Gets a value indicating whether the application is in technician mode. /// </summary> - public bool IsInTechnicianMode - { - get { return _isInTechnicianMode; } - set { _isInTechnicianMode = value; RaisePropertyChangedAuto(); } - } + public bool IsInTechnicianMode { get; private set; } /// <summary> /// Gets the application version. @@ -140,16 +125,6 @@ namespace Tango.PPC.UI.PPCApplication /// </summary> public DateTime StartUpDate { get; private set; } - /// <summary> - /// Gets a value indicating whether an update has occurred before the application started. - /// </summary> - public bool IsAfterUpdate { get; private set; } - - /// <summary> - /// Gets a value indicating whether the updater utility has failed to perform the last update. - /// </summary> - public bool IsUpdateFailed { get; private set; } - private bool _isScreenLocked; /// <summary> /// Gets or sets a value indicating whether the screen is currently locked. @@ -161,34 +136,15 @@ namespace Tango.PPC.UI.PPCApplication } /// <summary> - /// Gets the firmware version. - /// </summary> - public Version FirmwareVersion - { - get - { - return Version.Parse(SettingsManager.Default.GetOrCreate<PPCSettings>().FirmwareVersion); - } - } - - /// <summary> - /// Gets or sets the application folder. - /// </summary> - public String StartPath { get; private set; } - - /// <summary> /// Initializes a new instance of the <see cref="DefaultPPCApplicationManager"/> class. /// </summary> - public DefaultPPCApplicationManager(IMachineProvider machineProvider, IDispatcherProvider dispatcherProvider, IEventLogger eventLogger, IPPCModuleLoader moduleLoader, INotificationProvider notificationProvider, IMachineDataSynchronizer machineDataSynchronizer) + public DefaultPPCApplicationManager(IMachineProvider machineProvider, IDispatcherProvider dispatcherProvider, IEventLogger eventLogger, IPPCModuleLoader moduleLoader, INotificationProvider notificationProvider) { - StartPath = AssemblyHelper.GetCurrentAssemblyFolder(); - _notificationProvider = notificationProvider; _machineProvider = machineProvider; _dispatcher = dispatcherProvider; _eventLogger = eventLogger; _moduleLoader = moduleLoader; - _machineDataSynchronizer = machineDataSynchronizer; if (!DesignMode) { @@ -254,15 +210,11 @@ namespace Tango.PPC.UI.PPCApplication { LogManager.Log("Application started with '-update_ok' startup arguments. The application has been successfully updated."); - if (settings.ApplicationState == ApplicationStates.PreSetup || settings.ApplicationState == ApplicationStates.FactoryRestore) + if (settings.ApplicationState == ApplicationStates.PreSetup) { isAfterSetup = true; LogManager.Log("System restart is required."); } - else - { - IsAfterUpdate = true; - } settings.ApplicationState = ApplicationStates.Ready; settings.Save(); @@ -274,27 +226,13 @@ namespace Tango.PPC.UI.PPCApplication } } - if (App.StartupArgs.Contains("-update_failed")) - { - LogManager.Log("Application started with '-update_failed' startup arguments. The updater utility has failed."); - - IsUpdateFailed = true; - - settings.ApplicationState = ApplicationStates.Ready; - settings.Save(); - UpdaterFailed?.Invoke(this, new EventArgs()); - return; - } - if (settings.ApplicationState == ApplicationStates.Ready) { LogManager.Log("Initializing ObservablesStaticCollections..."); ObservablesStaticCollections.Instance.Initialize(); LogManager.Log("Loading machine from database..."); _machineContext = ObservablesContext.CreateDefault(); - _machine = new MachineBuilder(_machineContext).SetFirst().WithVersion().WithOrganization().WithConfiguration().WithSpools().WithCats().Build(); - - + _machine = new MachineBuilder(_machineContext).SetFirst().WithVersion().WithSettings().WithOrganization().WithConfiguration().WithSpools().WithCats().Build(); } initialized = true; @@ -338,6 +276,7 @@ namespace Tango.PPC.UI.PPCApplication { LogManager.Log($"Raising {nameof(ApplicationStarted)} event..."); + _eventLogger.Log(EventTypes.APPLICATION_STARTED, "Application Started!"); ApplicationStarted?.Invoke(this, new EventArgs()); LogManager.Log("Invoking PPC view models OnApplicationStarted methods..."); @@ -351,8 +290,6 @@ namespace Tango.PPC.UI.PPCApplication } } - var internalModules = this.GetType().Assembly.GetTypes().Where(xx => typeof(PPCModuleBase).IsAssignableFrom(xx)).ToList(); - LogManager.Log("Waiting for IPPCModuleLoader instance injection..."); TangoIOC.Default.GetInstanceWhenAvailable<IPPCModuleLoader>((loader) => { @@ -367,32 +304,12 @@ namespace Tango.PPC.UI.PPCApplication { if (!Views.LayoutView.Instance.NavigationControl.Elements.ToList().Exists(m => m.GetType() == module.MainViewType)) { - try - { - LogManager.Log("Loading module view " + module.Name + "..."); - FrameworkElement view = Activator.CreateInstance(module.MainViewType) as FrameworkElement; - SharedUI.Controls.NavigationControl.SetNavigationName(view, module.Name); - Views.LayoutView.Instance.NavigationControl.Elements.Add(view); - } - catch (Exception ex) - { - LogManager.Log(ex, $"Error loading module view for module {module.Name}."); - } + LogManager.Log("Loading module view " + module.Name + "..."); + FrameworkElement view = Activator.CreateInstance(module.MainViewType) as FrameworkElement; + SharedUI.Controls.NavigationControl.SetNavigationName(view, module.Name); + Views.LayoutView.Instance.NavigationControl.Elements.Add(view); } } - - //Adding internal modules. - LogManager.Log("Loading internal modules..."); - foreach (var type in internalModules) - { - var module = Activator.CreateInstance(type) as IPPCModule; - LogManager.Log("Loading module view " + module.Name + "..."); - FrameworkElement view = Activator.CreateInstance(module.MainViewType) as FrameworkElement; - SharedUI.Controls.NavigationControl.SetNavigationName(view, module.Name); - Views.LayoutView.Instance.NavigationControl.Elements.Add(view); - _moduleLoader.AllModules.Add(module); - _moduleLoader.UserModules.Add(module); - } }); LogManager.Log($"{loader.UserModules.Count} modules loaded."); @@ -417,9 +334,6 @@ namespace Tango.PPC.UI.PPCApplication LogManager.Log("Initializing Machine Provider..."); _machineProvider.Init(_machine, _machineContext); - LogManager.Log("Starting Machine Data Synchronizer..."); - _machineDataSynchronizer.IsEnabled = true; - LogManager.Log("Applications initialization completed!"); LogManager.Log("Checking for un-notified PPC view models..."); @@ -436,7 +350,6 @@ namespace Tango.PPC.UI.PPCApplication _dispatcher.Invoke(() => { LogManager.Log($"Invoking {nameof(ApplicationReady)} event."); - _eventLogger.Log(EventTypes.APPLICATION_STARTED, "Application Started!"); ApplicationReady?.Invoke(this, new EventArgs()); LogManager.Log("Notifying view models about application ready..."); @@ -477,7 +390,7 @@ namespace Tango.PPC.UI.PPCApplication /// <summary> /// Shutdown the application. /// </summary> - public async void ShutDown() + public void ShutDown() { if (IsShuttingDown) return; @@ -495,22 +408,13 @@ namespace Tango.PPC.UI.PPCApplication } catch { } - try - { - await FinalizeApplication(); - } - catch (Exception ex) - { - LogManager.Log(ex, "Error occurred on application shutdown finalization."); - } - Environment.Exit(0); } /// <summary> /// Restarts the application. /// </summary> - public async void Restart() + public void Restart() { if (IsShuttingDown) return; @@ -518,28 +422,13 @@ namespace Tango.PPC.UI.PPCApplication try { - _dispatcher.Invoke(() => - { - var nav = TangoIOC.Default.GetInstance<INavigationManager>(); - if (nav != null) - { - nav.NavigateTo(NavigationView.RestartingView); - } - }); - LogManager.Log("Restarting the application..."); - await Task.Delay(8000); - _watchdogServer.Dispose(); foreach (var vm in TangoIOC.Default.GetAllInstancesByBase<PPCViewModel>()) { - try - { - vm.OnApplicationShuttingDown(); - } - catch { } + vm.OnApplicationShuttingDown(); } } catch { } @@ -553,15 +442,6 @@ namespace Tango.PPC.UI.PPCApplication } catch { } - try - { - await FinalizeApplication(); - } - catch (Exception ex) - { - LogManager.Log(ex, "Error occurred on application shutdown finalization."); - } - Process.Start(Application.ResourceAssembly.Location); Environment.Exit(0); } @@ -569,82 +449,25 @@ namespace Tango.PPC.UI.PPCApplication /// <summary> /// Runs the updater utility and exits the application. /// </summary> - public async void UpdateApplication(String updaterPath, String arguments) + public void UpdateApplication(String updaterPath, String arguments) { if (IsShuttingDown) return; IsShuttingDown = true; - LogManager.Log("Restarting application for update..."); - try { - LogManager.Log("Navigating to restart view..."); - _dispatcher.Invoke(() => - { - var nav = TangoIOC.Default.GetInstance<INavigationManager>(); - if (nav != null) - { - nav.NavigateTo(NavigationView.RestartingView); - } - }); - - LogManager.Log("Waiting 2 seconds..."); - await Task.Delay(2000); - - try - { - LogManager.Log("Disposing watch dog..."); - _watchdogServer.Dispose(); - } - catch (Exception ex) - { - LogManager.Log(ex, "Error disposing watch dog."); - } + _watchdogServer.Dispose(); - LogManager.Log("Raising OnApplicationShutDown for all view models..."); foreach (var vm in TangoIOC.Default.GetAllInstancesByBase<PPCViewModel>()) { - try - { - vm.OnApplicationShuttingDown(); - } - catch (Exception ex) - { - LogManager.Log(ex, $"Error on {vm.GetType().Name}.OnApplicationShutDown()."); - } + vm.OnApplicationShuttingDown(); } } catch { } - try - { - LogManager.Log("Saving application settings..."); - SettingsManager.Default.GetOrCreate<PPCSettings>().PreviousApplicationVersion = Version.ToString(); - SettingsManager.Default.Save(); - } - catch (Exception ex) - { - LogManager.Log(ex, "Error saving application settings."); - } - - try - { - await FinalizeApplication(); - } - catch (Exception ex) - { - LogManager.Log(ex, "Error occurred on application shutdown finalization."); - } - LogManager.Log($"Executing '{updaterPath}' with arguments '{arguments}'..."); - - Process p = new Process(); - p.StartInfo.FileName = updaterPath; - p.StartInfo.Arguments = arguments; - p.StartInfo.LoadUserProfile = true; - p.StartInfo.UseShellExecute = true; - p.Start(); + Process.Start(updaterPath, arguments); LogManager.Log("Terminating application..."); Environment.Exit(0); @@ -723,48 +546,5 @@ namespace Tango.PPC.UI.PPCApplication { IsScreenLocked = true; } - - public void SetWindowState(WindowState state) - { - InvokeUI(() => - { - MainWindow.Instance.WindowState = state; - }); - } - - private Task FinalizeApplication() - { - LogManager.Log("Finalizing application..."); - - return LimitedTimeTask.StartNew(() => - { - try - { - LogManager.Log("Flushing machine events..."); - _eventLogger.Log(EventTypes.APPLICATION_TERMINATED, "User Interface Terminated."); - _eventLogger.FlushAll(); - } - catch (Exception ex) - { - LogManager.Log(ex, "Error flushing machine events."); - } - - try - { - LogManager.Log("Disposing insights manager (max 40 seconds to complete)..."); - Stopwatch watch = new Stopwatch(); - watch.Start(); - var frame = InsightsFrame.CreateEmpty(DateTime.UtcNow); - InsightsManager.Default.InsertFrame(frame); - InsightsManager.Default.Dispose(); - watch.Stop(); - LogManager.Log($"Insights manager disposed after {(int)watch.Elapsed.TotalSeconds} seconds."); - } - catch (Exception ex) - { - LogManager.Log(ex, "Error disposing insights manager."); - } - }, TimeSpan.FromSeconds(40)); - } } } |
