using Panuon.WPF.UI; using System.Windows; using System.Windows.Controls; namespace HMI.UI.Util { public interface ToastHandler { void Success(Window window, string message, MessageBoxIcon icon, ToastPosition position, double offset, int durationMs, ToastWindow targetWindow); void Warning(Window window, string message, MessageBoxIcon icon, ToastPosition position, double offset, int durationMs, ToastWindow targetWindow); void Error(Window window, string message, MessageBoxIcon icon, ToastPosition position, double offset, int durationMs, ToastWindow targetWindow); void Info(Window window, string message, MessageBoxIcon icon, ToastPosition position, double offset, int durationMs, ToastWindow targetWindow); } public class ToastHelper { private static ToastHandler Instance; public static void Register(ToastHandler helper) { if (Instance == null) { Instance = helper; } } public static void Success(Window window, string message, MessageBoxIcon icon = MessageBoxIcon.Success, ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000, ToastWindow targetWindow = ToastWindow.ActiveWindow) { Instance.Success(window, message, icon, position, offset, durationMs, targetWindow); } public static void Warning(Window window, string message, MessageBoxIcon icon = MessageBoxIcon.Warning, ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000, ToastWindow targetWindow = ToastWindow.ActiveWindow) { Instance.Warning(window, message, icon, position, offset, durationMs, targetWindow); } public static void Error(Window window, string message, MessageBoxIcon icon = MessageBoxIcon.Error, ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000, ToastWindow targetWindow = ToastWindow.ActiveWindow) { Instance.Error(window, message, icon, position, offset, durationMs, targetWindow); } public static void Info(Window window, string message, MessageBoxIcon icon = MessageBoxIcon.Info, ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000, ToastWindow targetWindow = ToastWindow.ActiveWindow) { Instance.Info(window, message, icon, position, offset, durationMs, targetWindow); } } public static class ToastUtil { public static void Success(this Window window, string message, MessageBoxIcon icon = MessageBoxIcon.Success, ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000, ToastWindow targetWindow = ToastWindow.ActiveWindow) { ToastHelper.Success(window, message, icon, position, offset, durationMs, targetWindow); } public static void Warning(this Window window, string message, MessageBoxIcon icon = MessageBoxIcon.Warning, ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000, ToastWindow targetWindow = ToastWindow.ActiveWindow) { ToastHelper.Warning(window, message, icon, position, offset, durationMs, targetWindow); } public static void Error(this Window window, string message, MessageBoxIcon icon = MessageBoxIcon.Error, ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000, ToastWindow targetWindow = ToastWindow.ActiveWindow) { ToastHelper.Error(window, message, icon, position, offset, durationMs, targetWindow); } public static void Info(this Window window, string message, MessageBoxIcon icon = MessageBoxIcon.Info, ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000, ToastWindow targetWindow = ToastWindow.ActiveWindow) { ToastHelper.Info(window, message, icon, position, offset, durationMs, targetWindow); } public static void Success(this UserControl control, string message, MessageBoxIcon icon = MessageBoxIcon.Success, ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000, ToastWindow targetWindow = ToastWindow.ActiveWindow) { ToastHelper.Success(Window.GetWindow(control), message, icon, position, offset, durationMs, targetWindow); } public static void Warning(this UserControl control, string message, MessageBoxIcon icon = MessageBoxIcon.Warning, ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000, ToastWindow targetWindow = ToastWindow.ActiveWindow) { ToastHelper.Warning(Window.GetWindow(control), message, icon, position, offset, durationMs, targetWindow); } public static void Error(this UserControl control, string message, MessageBoxIcon icon = MessageBoxIcon.Error, ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000, ToastWindow targetWindow = ToastWindow.ActiveWindow) { Application.Current.Dispatcher.Invoke(() => { ToastHelper.Error(Window.GetWindow(control), message, icon, position, offset, durationMs, targetWindow); }); } public static void Info(this UserControl control, string message, MessageBoxIcon icon = MessageBoxIcon.Error, ToastPosition position = ToastPosition.Top, double offset = 0, int durationMs = 3000, ToastWindow targetWindow = ToastWindow.ActiveWindow) { ToastHelper.Info(Window.GetWindow(control), message, icon, position, offset, durationMs, targetWindow); } } }