using System.Windows; using System.Windows.Input; using System.Windows.Media; using Livia.Utility.DependencyInjection; using Livia.Views.Utility; using MaterialDesignThemes.Wpf; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; namespace Livia.Views; /// /// Interaction logic for WarningDialog.xaml /// public partial class WarningDialog { private readonly bool _waitForResponse; private readonly ILogger _logger; public WarningDialog(WarningWindowKind kind, string message, bool waitForResponse) { _waitForResponse = waitForResponse; InitializeComponent(); _logger = ActivatorUtilities.GetServiceOrCreateInstance(ServiceProviderFactory.ServiceProvider); MessageTextBlock.Text = message; string title; switch (kind) { case WarningWindowKind.Confirmation: title = (string)Application.Current.TryFindResource("Confirm"); DialogIcon.Kind = PackIconKind.InfoCircleOutline; DialogIcon.Foreground = new SolidColorBrush(Color.FromRgb(211, 47, 47)); CancelButton.Visibility = Visibility.Visible; break; case WarningWindowKind.Info: title = (string)Application.Current.TryFindResource("Info"); DialogIcon.Kind = PackIconKind.InfoCircleOutline; break; case WarningWindowKind.Warning: title = (string)Application.Current.TryFindResource("Warning"); DialogIcon.Kind = PackIconKind.AlertOctagonOutline; break; case WarningWindowKind.Error: default: title = (string)Application.Current.TryFindResource("Error"); DialogIcon.Kind = PackIconKind.AlertOutline; break; } Title = title; TitleTextBlock.Text = title; } private void ConfirmButtonClick(object sender, RoutedEventArgs e) { if (_waitForResponse) DialogResult = true; Close(); } private void CancelButtonClick(object sender, RoutedEventArgs e) { if (_waitForResponse) DialogResult = false; Close(); } private void TitleBarMouseLeftButtonDown(object sender, MouseEventArgs e) { try { DragMove(); } catch (Exception exception) { _logger.LogError(exception, "Error dragging window, sender = {sender}, event = {event}", sender, e); } } }