private static IDisposable ShowDesktopWindow(int number) { var vmodel = new NotificationWindowViewModel { Title = ProductInfo.Title, Body = GetDesktopName(number), }; var source = new CancellationTokenSource(); var settings = Settings.General.Display.Value; Monitor[] targets; if (settings == 0) { targets = new[] { MonitorService.GetCurrentArea() }; } else { var monitors = MonitorService.GetAreas(); if (settings == uint.MaxValue) { targets = monitors; } else { targets = new[] { monitors[settings - 1] }; } } var windows = targets.Select(area => { var window = new SwitchWindow(area.WorkArea) { DataContext = vmodel, }; window.Show(); return(window); }).ToList(); Task.Delay(TimeSpan.FromMilliseconds(Settings.General.NotificationDuration), source.Token) .ContinueWith(_ => windows.ForEach(window => window.Close()), TaskScheduler.FromCurrentSynchronizationContext()); return(Disposable.Create(() => source.Cancel())); }
private static IDisposable ShowPinWindow(IntPtr hWnd, PinOperations operation) { var vmodel = new NotificationWindowViewModel { Title = ProductInfo.Title, Body = $"{(operation.HasFlag(PinOperations.Window) ? "Window" : "Application")} {(operation.HasFlag(PinOperations.Pin) ? "Pinned" : "Unpinned")}", }; var source = new CancellationTokenSource(); var window = new PinWindow(hWnd) { DataContext = vmodel, }; window.Show(); Task.Delay(TimeSpan.FromMilliseconds(Settings.General.NotificationDuration), source.Token) .ContinueWith(_ => window.Close(), TaskScheduler.FromCurrentSynchronizationContext()); return(Disposable.Create(() => source.Cancel())); }
private static IDisposable ShowDesktopWindow(int index) { var vmodel = new NotificationWindowViewModel { Title = ProductInfo.Title, Header = "Virtual Desktop Switched", Body = "Current Desktop: Desktop " + index, }; var source = new CancellationTokenSource(); var window = new NotificationWindow() { DataContext = vmodel, }; window.Show(); Task.Delay(TimeSpan.FromMilliseconds(Settings.General.NotificationDuration), source.Token) .ContinueWith(_ => window.Close(), TaskScheduler.FromCurrentSynchronizationContext()); return(Disposable.Create(() => source.Cancel())); }
public NotificationWindowViewModel ShowNotificationWindow() { return(notificationWindow ?? (notificationWindow = viewModelFactory.CreateNotificationWindow())); }