51 lines
1.3 KiB
C#
51 lines
1.3 KiB
C#
using System;
|
|
using Avalonia;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Markup.Xaml;
|
|
using Avalonia.Threading;
|
|
|
|
namespace CRD.Views;
|
|
|
|
public partial class ToastNotification : UserControl{
|
|
public ToastNotification(){
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void InitializeComponent(){
|
|
AvaloniaXamlLoader.Load(this);
|
|
}
|
|
|
|
public void Show(string message, ToastType type, int durationInSeconds){
|
|
this.FindControl<TextBlock>("MessageText").Text = message;
|
|
SetStyle(type);
|
|
DispatcherTimer timer = new DispatcherTimer{ Interval = TimeSpan.FromSeconds(durationInSeconds) };
|
|
timer.Tick += (sender, args) => {
|
|
timer.Stop();
|
|
this.IsVisible = false;
|
|
};
|
|
timer.Start();
|
|
this.IsVisible = true;
|
|
}
|
|
|
|
private void SetStyle(ToastType type){
|
|
var border = this.FindControl<Border>("MessageBorder");
|
|
border.Classes.Clear(); // Clear previous styles
|
|
switch (type){
|
|
case ToastType.Information:
|
|
border.Classes.Add("info");
|
|
break;
|
|
case ToastType.Error:
|
|
border.Classes.Add("error");
|
|
break;
|
|
case ToastType.Warning:
|
|
border.Classes.Add("warning");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public enum ToastType{
|
|
Information,
|
|
Error,
|
|
Warning
|
|
} |