Mercurial > silverbladetech
view Chronosv2/source/ApplicationStateObserver.cs @ 15:060f02cd4591
Initial commit, pre airport work
author | stevenh7776 stevenhollidge@hotmail.com |
---|---|
date | Mon, 12 Mar 2012 23:05:21 +0800 |
parents | 741981715d94 |
children |
line wrap: on
line source
using System; using System.Windows; using System.Windows.Shell; using Chronos.Authentication; using nRoute.ApplicationServices; using nRoute.Components.Composition; using nRoute.Components.Messaging; namespace Chronos { /// <summary> /// Dedicated observer for application state notifications /// </summary> [MapChannelObserver(typeof(ApplicationStateInfo), InitializationMode=InitializationMode.WhenAvailable, Lifetime=InstanceLifetime.Singleton, ThreadOption=ThreadOption.UIThread)] public sealed class ApplicationStateObserver : IObserver<ApplicationStateInfo> { #region · Fields · private SplashScreen splashScreen; #endregion #region · IObserver<ApplicationStateInfo> Members · /// <summary> /// Notifies the observer that the provider has finished sending push-based notifications. /// </summary> public void OnCompleted() { } /// <summary> /// Notifies the observer that the provider has experienced an error condition. /// </summary> /// <param name="error">An object that provides additional information about the error.</param> public void OnError(Exception error) { } /// <summary> /// Provides the observer with new data. /// </summary> /// <param name="value">The current notification information.</param> public void OnNext(ApplicationStateInfo value) { if (value.CurrentState == ApplicationState.Starting) { this.splashScreen = new SplashScreen("SplashScreen.png"); this.splashScreen.Show(false); } else if (value.CurrentState == ApplicationState.Started) { // Close the splash screen if (this.splashScreen != null) { this.splashScreen.Close(new TimeSpan(0, 0, 1)); this.splashScreen = null; } // Initialize the JumpList this.InitializeJumpList(); // Publish LogOn Request Channel<AuthenticationInfo>.Public.OnNext ( new AuthenticationInfo { Action = AuthenticationAction.LogOn }, true ); } } #endregion #region · Private Methods · private void InitializeJumpList() { if (App.RunningOnWin7) { JumpList jl = JumpList.GetJumpList(nRoute.ApplicationServices.Application.Current); if (jl == null) { jl = new JumpList(); JumpList.SetJumpList(nRoute.ApplicationServices.Application.Current, jl); } jl.Apply(); } } #endregion } }