using WPFluent.Controls;
namespace WPFluent;
///
/// A service that provides methods related to displaying the .
///
public class SnackbarService : ISnackbarService
{
private SnackbarPresenter? _presenter;
private Snackbar? _snackbar;
///
public SnackbarPresenter? GetSnackbarPresenter() { return _presenter; }
///
public void SetSnackbarPresenter(SnackbarPresenter contentPresenter) { _presenter = contentPresenter; }
///
public void Show(string title, string message, ControlAppearance appearance, IconElement? icon, TimeSpan timeout)
{
if (_presenter is null)
{
throw new InvalidOperationException($"The SnackbarPresenter was never set");
}
_snackbar ??= new Snackbar(_presenter);
_snackbar.SetCurrentValue(Snackbar.TitleProperty, title);
_snackbar.SetCurrentValue(System.Windows.Controls.ContentControl.ContentProperty, message);
_snackbar.SetCurrentValue(Snackbar.AppearanceProperty, appearance);
_snackbar.SetCurrentValue(Snackbar.IconProperty, icon);
_snackbar.SetCurrentValue(Snackbar.TimeoutProperty, timeout.TotalSeconds == 0 ? DefaultTimeOut : timeout);
_snackbar.Show(true);
}
///
public TimeSpan DefaultTimeOut { get; set; } = TimeSpan.FromSeconds(5);
}