public WpfPredefinedToastNotification(WpfPredefinedToastNotificationContent content, CustomNotifier notifier) { this.toast = new CustomNotification(content.ViewModel, notifier); this.content = content; this.notifier = notifier; this.notifier.ContentTemplate = NotificationServiceTemplatesHelper.PredefinedToastTemplate; }
internal void Hide(CustomNotification toast) { ToastInfo info = toastsQueue.FirstOrDefault(i => i.toast == toast); if (info != null) { toastsQueue.Remove(info); info.source.SetResult(NotificationResult.ApplicationHidden); return; } RemoveVisibleToast(toast, NotificationResult.ApplicationHidden); ShowNext(); }
void RemoveVisibleToast(CustomNotification toast, NotificationResult result) { ToastInfo info = GetVisibleToastInfo(toast); if (info == null) { return; } info.win.Close(); info.timer.Stop(); positioner.Remove(info); info.source.SetResult(result); }
public Task <NotificationResult> ShowAsync(CustomNotification toast, int msDuration = 3000) { var info = new ToastInfo { toast = toast, timer = new Timer() { Interval = msDuration }, source = new TaskCompletionSource <NotificationResult>() }; toastsQueue.Add(info); ShowNext(); return(info.source.Task); }
public void ResultsTest() { CustomNotification toast; Task<NotificationResult> task; var notifier = new CustomNotifier(); toast = new CustomNotification(null, notifier); task = notifier.ShowAsync(toast, 1); WaitWithDispatcher(task); Assert.AreEqual(NotificationResult.TimedOut, task.Result); toast = new CustomNotification(null, notifier); task = notifier.ShowAsync(toast, 1); toast.Activate(); WaitWithDispatcher(task); Assert.AreEqual(NotificationResult.Activated, task.Result); toast = new CustomNotification(null, notifier); task = notifier.ShowAsync(toast, 1); toast.Dismiss(); WaitWithDispatcher(task); Assert.AreEqual(NotificationResult.UserCanceled, task.Result); toast = new CustomNotification(null, notifier); task = notifier.ShowAsync(toast, 1); toast.Hide(); WaitWithDispatcher(task); Assert.AreEqual(NotificationResult.ApplicationHidden, task.Result); var tasks = Enumerable.Range(0, 10).Select(_ => notifier.ShowAsync(new CustomNotification(null, notifier), 1)).ToList(); tasks.ToList().ForEach(WaitWithDispatcher); tasks.ToList().ForEach(t => Assert.AreEqual(NotificationResult.TimedOut, t.Result)); }
public MvvmCustomNotification(object viewModel, CustomNotifier notifier, int duration) { this.notifier = notifier; this.duration = duration; this.notification = new CustomNotification(viewModel, notifier); }
internal void ResetTimer(CustomNotification toast) { GetVisibleToastInfo(toast).Do(t => t.timer.Start()); }
internal void StopTimer(CustomNotification toast) { GetVisibleToastInfo(toast).Do(t => t.timer.Stop()); }
private ToastInfo GetVisibleToastInfo(CustomNotification toast) { return(positioner.Items.FirstOrDefault(t => t != null && t.toast == toast)); }
public void CustomNotificationTemplateSelectorTest() { var customNotifier = new CustomNotifier(new TestScreen { bounds = new Rect(0, 0, 1000, 500) }); var selector = new TestTemplateSelector(); customNotifier.ContentTemplateSelector = selector; var toast = new CustomNotification(null, customNotifier); WaitWithDispatcher(customNotifier.ShowAsync(toast, 1)); Assert.IsTrue(selector.Called); }
internal void TimeOut(CustomNotification toast) { RemoveVisibleToast(toast, NotificationResult.TimedOut); ShowNext(); }
internal void Dismiss(CustomNotification toast) { RemoveVisibleToast(toast, NotificationResult.UserCanceled); ShowNext(); }
internal void Activate(CustomNotification toast) { RemoveVisibleToast(toast, NotificationResult.Activated); ShowNext(); }
public void UpdatingPositionerTest() { CustomNotification toast; Task<NotificationResult> task; var notifier = new CustomNotifier(); var tasks = Enumerable.Range(0, 5).Select(_ => notifier.ShowAsync(new CustomNotification(null, notifier), 1)).ToList(); tasks.ToList().ForEach(WaitWithDispatcher); tasks.ToList().ForEach(t => Assert.AreEqual(NotificationResult.TimedOut, t.Result)); toast = new CustomNotification(null, notifier); task = notifier.ShowAsync(toast, 1); notifier.UpdatePositioner(NotificationPosition.TopRight, 2); WaitWithDispatcher(task); Assert.AreEqual(NotificationResult.TimedOut, task.Result); tasks = Enumerable.Range(0, 10).Select(_ => notifier.ShowAsync(new CustomNotification(null, notifier), 1)).ToList(); notifier.UpdatePositioner(NotificationPosition.TopRight, 2); tasks.ToList().ForEach(WaitWithDispatcher); tasks.ToList().ForEach(t => Assert.AreEqual(NotificationResult.TimedOut, t.Result)); }
public void UpdatePositionerTest() { var testScreen = new TestScreen { bounds = new System.Drawing.Rectangle(0, 0, 800, 600) }; var notifier = new CustomNotifier(testScreen); var pos = CustomNotifier.positioner; var toast = new CustomNotification(null, notifier); var task = notifier.ShowAsync(toast, 1); var p1 = CustomNotifier.positioner.GetItemPosition(CustomNotifier.positioner.Items[0]); Assert.AreEqual(415, p1.X); Assert.AreEqual(20, p1.Y); notifier.UpdatePositioner(NotificationPosition.BottomRight, 3); p1 = CustomNotifier.positioner.GetItemPosition(CustomNotifier.positioner.Items[0]); Assert.AreEqual(415, p1.X); Assert.AreEqual(490, p1.Y); WaitWithDispatcher(task); }
public void ResettingTimerOfHiddenNotificationTest() { var customNotifier = new CustomNotifier(new TestScreen()); var toast = new CustomNotification(null, customNotifier); customNotifier.ShowAsync(toast); customNotifier.Hide(toast); customNotifier.ResetTimer(toast); customNotifier.StopTimer(toast); }