1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 pre { line-height: 125%; } td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL; using Tango.Core.DI; using Tango.PPC.Common.Application; using Tango.PPC.Common.Authentication; using Tango.PPC.Common.Connection; using Tango.PPC.Common.Connectivity; using Tango.PPC.Common.EventLogging; using Tango.PPC.Common.ExternalBridge; using Tango.PPC.Common.HotSpot; using Tango.PPC.Common.Navigation; using Tango.PPC.Common.Notifications; using Tango.PPC.Common.Printing; using Tango.PPC.Common.RemoteAssistance; using Tango.PPC.Common.Storage; using Tango.Settings; using Tango.SharedUI; using static Tango.SharedUI.Controls.NavigationControl; namespace Tango.PPC.Common { /// <summary> /// Represents a PPC view model base class. /// </summary> /// <seealso cref="Tango.SharedUI.ViewModel" /> public abstract class PPCViewModel : ViewModel, INavigationViewModel, INavigationBlocker { /// <summary> /// Gets the static observable entities adapter. /// </summary> public ObservablesStaticCollections Adapter { get { return ObservablesStaticCollections.Instance; } } /// <summary> /// Gets or sets the application manager. /// </summary> [TangoInject] public IPPCApplicationManager ApplicationManager { get; set; } /// <summary> /// Gets or sets the authentication provider. /// </summary> [TangoInject] public IAuthenticationProvider AuthenticationProvider { get; set; } /// <summary> /// Gets or sets the navigation manager. /// </summary> [TangoInject] public INavigationManager NavigationManager { get; set; } /// <summary> /// Gets or sets the notification provider. /// </summary> [TangoInject] public INotificationProvider NotificationProvider { get; set; } /// <summary> /// Gets or sets the machine provider. /// </summary> [TangoInject] public IMachineProvider MachineProvider { get; set; } /// <summary> /// Gets or sets the external bridge service. /// </summary> [TangoInject] public IPPCExternalBridgeService ExternalBridgeService { get; set; } /// <summary> /// Gets or sets the printing manager. /// </summary> [TangoInject] public IPrintingManager PrintingManager { get; set; } /// <summary> /// Gets or sets the connectivity provider. /// </summary> [TangoInject] public IConnectivityProvider ConnectivityProvider { get; set; } /// <summary> /// Gets or sets the hot spot provider. /// </summary> [TangoInject] public IHotSpotProvider HotSpotProvider { get; set; } /// <summary> /// Gets or sets the remote assistance provider. /// </summary> [TangoInject] public IRemoteAssistanceProvider RemoteAssistanceProvider { get; set; } /// <summary> /// Gets or sets the storage provider. /// </summary> [TangoInject] public IStorageProvider StorageProvider { get; set; } /// <summary> /// Gets or sets the event logger. /// </summary> [TangoInject] public IEventLogger EventLogger { get; set; } private PPCSettings _settings; /// <summary> /// Gets the main PPC settings. /// </summary> public PPCSettings Settings { get { if (_settings == null) { _settings = SettingsManager.Default.GetOrCreate<PPCSettings>(); } return _settings; } private set { _settings = value; } } private bool _isVisible; /// <summary> /// Gets or sets a value indicating whether this <see cref="PPCViewModel"/> view is visible. /// </summary> public bool IsVisible { get { return _isVisible; } private set { _isVisible = value; RaisePropertyChangedAuto(); } } /// <summary> /// Called when the application has been started. /// </summary> public abstract void OnApplicationStarted(); /// <summary> /// Called when the application is shutting down. /// </summary> public virtual void OnApplicationShuttingDown() { } /// <summary> /// Called when the navigation system has navigated to this VM view. /// </summary> public virtual void OnNavigatedTo() { IsVisible = true; } /// <summary> /// Called when the navigation system has navigated from this VM view. /// </summary> public virtual void OnNavigatedFrom() { IsVisible = false; } /// <summary> /// Raises the specified message using the default <see cref="TangoMessenger"/>. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="message">The message.</param> protected void RaiseMessage<T>(T message) where T : class { TangoMessenger.Default.Send<T>(message); } /// <summary> /// Registers a message handle for the specified message type T. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="handler">The handler.</param> protected void RegisterForMessage<T>(Action<T> handler) { TangoMessenger.Default.Register<T>(handler); } /// <summary> /// Called before the navigation system navigates from this object. /// Return false to abort the navigation. /// </summary> /// <returns></returns> public virtual Task<bool> OnNavigateOutRequest() { return Task.FromResult(true); } /// <summary> /// Called before the navigation system navigates back from this object. /// Return false to abort the navigation. /// </summary> /// <returns></returns> public virtual Task<bool> OnNavigateBackRequest() { return Task.FromResult(true); } /// <summary> /// Called when the application is ready and all modules views are loaded. /// </summary> public virtual void OnApplicationReady() { } } /// <summary> /// Represents a PPC view model base class a View property as an instance of a <see cref="IPPCView"/> contract. /// </summary> /// <typeparam name="T"></typeparam> /// <seealso cref="Tango.SharedUI.ViewModel" /> public abstract class PPCViewModel<T> : PPCViewModel where T : IPPCView { private T _view; /// <summary> /// Gets the IPPCView instance. /// </summary> [TangoInject(TangoInjectMode.WhenAvailable)] public T View { get { return _view; } set { _view = value; ViewAttached = true; OnViewAttached(); } } /// <summary> /// Gets a value indicating whether the instance of IPPCView is available. /// </summary> public bool ViewAttached { get; private set; } /// <summary> /// Called when the application has been started. /// </summary> public override void OnApplicationStarted() { } /// <summary> /// Called when the instance of IPPCView is available. /// </summary> public virtual void OnViewAttached() { } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL; using Tango.Core.DI; using Tango.PPC.Common.Application; using Tango.PPC.Common.Authentication; using Tango.PPC.Common.Connection; using Tango.PPC.Common.Connectivity; using Tango.PPC.Common.EventLogging; using Tango.PPC.Common.ExternalBridge; using Tango.PPC.Common.HotSpot; using Tango.PPC.Common.Navigation; using Tango.PPC.Common.Notifications; using Tango.PPC.Common.Printing; using Tango.PPC.Common.RemoteAssistance; using Tango.PPC.Common.Storage; using Tango.Settings; using Tango.SharedUI; using static Tango.SharedUI.Controls.NavigationControl; namespace Tango.PPC.Common { /// <summary> /// Represents a PPC view model base class. /// </summary> /// <seealso cref="Tango.SharedUI.ViewModel" /> public abstract class PPCViewModel : ViewModel, INavigationViewModel, INavigationBlocker { /// <summary> /// Gets the static observable entities adapter. /// </summary> public ObservablesStaticCollections Adapter { get { return ObservablesStaticCollections.Instance; } } /// <summary> /// Gets or sets the application manager. /// </summary> [TangoInject] public IPPCApplicationManager ApplicationManager { get; set; } /// <summary> /// Gets or sets the authentication provider. /// </summary> [TangoInject] public IAuthenticationProvider AuthenticationProvider { get; set; } /// <summary> /// Gets or sets the navigation manager. /// </summary> [TangoInject] public INavigationManager NavigationManager { get; set; } /// <summary> /// Gets or sets the notification provider. /// </summary> [TangoInject] public INotificationProvider NotificationProvider { get; set; } /// <summary> /// Gets or sets the machine provider. /// </summary> [TangoInject] public IMachineProvider MachineProvider { get; set; } /// <summary> /// Gets or sets the external bridge service. /// </summary> [TangoInject] public IPPCExternalBridgeService ExternalBridgeService { get; set; } /// <summary> /// Gets or sets the printing manager. /// </summary> [TangoInject] public IPrintingManager PrintingManager { get; set; } /// <summary> /// Gets or sets the connectivity provider. /// </summary> [TangoInject] public IConnectivityProvider ConnectivityProvider { get; set; } /// <summary> /// Gets or sets the hot spot provider. /// </summary> [TangoInject] public IHotSpotProvider HotSpotProvider { get; set; } /// <summary> /// Gets or sets the remote assistance provider. /// </summary> [TangoInject] public IRemoteAssistanceProvider RemoteAssistanceProvider { get; set; } /// <summary> /// Gets or sets the storage provider. /// </summary> [TangoInject] public IStorageProvider StorageProvider { get; set; } /// <summary> /// Gets or sets the event logger. /// </summary> [TangoInject] public IEventLogger EventLogger { get; set; } private PPCSettings _settings; /// <summary> /// Gets the main PPC settings. /// </summary> public PPCSettings Settings { get { if (_settings == null) { _settings = SettingsManager.Default.GetOrCreate<PPCSettings>(); } return _settings; } private set { _settings = value; } } private bool _isVisible; /// <summary> /// Gets or sets a value indicating whether this <see cref="PPCViewModel"/> view is visible. /// </summary> public bool IsVisible { get { return _isVisible; } private set { _isVisible = value; RaisePropertyChangedAuto(); } } /// <summary> /// Called when the application has been started. /// </summary> public abstract void OnApplicationStarted(); /// <summary> /// Called when the application is shutting down. /// </summary> public virtual void OnApplicationShuttingDown() { } /// <summary> /// Called when the navigation system has navigated to this VM view. /// </summary> public virtual void OnNavigatedTo() { IsVisible = true; } /// <summary> /// Called when the navigation system has navigated from this VM view. /// </summary> public virtual void OnNavigatedFrom() { IsVisible = false; } /// <summary> /// Raises the specified message using the default <see cref="TangoMessenger"/>. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="message">The message.</param> protected void RaiseMessage<T>(T message) where T : class { TangoMessenger.Default.Send<T>(message); } /// <summary> /// Registers a message handle for the specified message type T. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="handler">The handler.</param> protected void RegisterForMessage<T>(Action<T> handler) { TangoMessenger.Default.Register<T>(handler); } /// <summary> /// Called before the navigation system navigates from this object. /// Return false to abort the navigation. /// </summary> /// <returns></returns> public virtual Task<bool> OnNavigateOutRequest() { return Task.FromResult(true); } /// <summary> /// Called before the navigation system navigates back from this object. /// Return false to abort the navigation. /// </summary> /// <returns></returns> public virtual Task<bool> OnNavigateBackRequest() { return Task.FromResult(true); } /// <summary> /// Called when the application is ready and all modules views are loaded. /// </summary> public virtual void OnApplicationReady() { } } /// <summary> /// Represents a PPC view model base class a View property as an instance of a <see cref="IPPCView"/> contract. /// </summary> /// <typeparam name="T"></typeparam> /// <seealso cref="Tango.SharedUI.ViewModel" /> public abstract class PPCViewModel<T> : PPCViewModel where T : IPPCView { private T _view; /// <summary> /// Gets the IPPCView instance. /// </summary> [TangoInject(TangoInjectMode.WhenAvailable)] public T View { get { return _view; } set { _view = value; ViewAttached = true; OnViewAttached(); } } /// <summary> /// Gets a value indicating whether the instance of IPPCView is available. /// </summary> public bool ViewAttached { get; private set; } /// <summary> /// Called when the application has been started. /// </summary> public override void OnApplicationStarted() { } /// <summary> /// Called when the instance of IPPCView is available. /// </summary> public virtual void OnViewAttached() { } } }