protected override void OnStartup(StartupEventArgs e) { var hideFromAppSwitch = new HideFromAppSwitchService(); var hideFromPeekService = new HideFromPeekService(); var alertsQueue = new BlockingAlertsQueue(); var schedulerProvider = new DefaultSchedulerProvider(); var alertActions = new AlertActionsService(schedulerProvider); var viewController = new AlertsViewController(hideFromAppSwitch, hideFromPeekService); viewController.OnImportsSatisfied(); var viewModelController = new AlertsViewModelController(alertsQueue, schedulerProvider, alertActions); viewModelController.OnImportsSatisfied(); var view = viewController.View; view.DataContext = viewModelController.ViewModel; view.Show(); var alertModel = new Mock <IAlert>(); alertModel.Setup(a => a.Title).Returns("Update Available"); alertModel.Setup(a => a.Content).Returns("Restart to use the new version."); Observable.Interval(TimeSpan.FromSeconds(15)) .Select(_ => alertModel.Object) .Subscribe(alert => alertsQueue.Enqueue(alert)); }
protected override void OnStartup(StartupEventArgs e) { var hideFromAppSwitch = new HideFromAppSwitchService(); var hideFromPeekService = new HideFromPeekService(); var notificationManager = new NotificationManager(); var schedulerProvider = new DefaultSchedulerProvider(); var viewController = new SideBarViewController(hideFromAppSwitch, hideFromPeekService); viewController.OnImportsSatisfied(); var viewModelController = new SideBarViewModelController(notificationManager, schedulerProvider); viewModelController.OnImportsSatisfied(); var view = viewController.View; view.DataContext = viewModelController.ViewModel; view.Show(); Observable.Timer(TimeSpan.FromSeconds(5)) .ObserveOn(SynchronizationContext.Current) .Subscribe(_ => viewModelController.ViewModel.IsOpen = true); Observable.Interval(TimeSpan.FromSeconds(5)) .ObserveOn(SynchronizationContext.Current) .Select(_ => new NotificationModel("id", "Update Available", "Restart to use the new version.", DateTime.Now, null)) .Subscribe(alert => viewModelController.ViewModel.Notifications.Insert(0, alert)); Observable.Timer(TimeSpan.FromSeconds(60)) .ObserveOn(SynchronizationContext.Current) .Subscribe(_ => viewModelController.ViewModel.IsOpen = false); }