54 lines
1.4 KiB
C#
54 lines
1.4 KiB
C#
using Microsoft.Toolkit.Mvvm.ComponentModel;
|
|
using System;
|
|
using Windows.UI.Xaml;
|
|
|
|
namespace FluentTerminal.App.ViewModels
|
|
{
|
|
public class OverlayViewModel : ObservableObject
|
|
{
|
|
private readonly DispatcherTimer _overlayTimer;
|
|
private bool _showOverlay;
|
|
private string _overlayContent;
|
|
|
|
// Important! The constructor has to be called from the UI thread.
|
|
public OverlayViewModel()
|
|
{
|
|
_overlayTimer = new DispatcherTimer {Interval = new TimeSpan(0, 0, 2)};
|
|
}
|
|
|
|
public bool ShowOverlay
|
|
{
|
|
get => _showOverlay;
|
|
set => SetProperty(ref _showOverlay, value);
|
|
}
|
|
|
|
public string OverlayContent
|
|
{
|
|
get => _overlayContent;
|
|
set => SetProperty(ref _overlayContent, value);
|
|
}
|
|
|
|
public void Show(string message)
|
|
{
|
|
OverlayContent = message;
|
|
ShowOverlay = true;
|
|
|
|
if (_overlayTimer.IsEnabled)
|
|
{
|
|
_overlayTimer.Stop();
|
|
_overlayTimer.Tick -= OnResizeOverlayTimerFinished;
|
|
}
|
|
_overlayTimer.Start();
|
|
_overlayTimer.Tick += OnResizeOverlayTimerFinished;
|
|
}
|
|
|
|
private void OnResizeOverlayTimerFinished(object sender, object e)
|
|
{
|
|
_overlayTimer.Stop();
|
|
_overlayTimer.Tick -= OnResizeOverlayTimerFinished;
|
|
ShowOverlay = false;
|
|
}
|
|
|
|
}
|
|
}
|