示例#1
0
        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()));
        }
示例#2
0
        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()));
 }