diff --git a/Source/NETworkManager.Converters/ChildWindowIconToRectangleStyleConverter.cs b/Source/NETworkManager.Converters/ChildWindowIconToRectangleStyleConverter.cs new file mode 100644 index 0000000000..284d989e50 --- /dev/null +++ b/Source/NETworkManager.Converters/ChildWindowIconToRectangleStyleConverter.cs @@ -0,0 +1,33 @@ +using NETworkManager.Utilities; +using System; +using System.Globalization; +using System.Windows; +using System.Windows.Data; + +namespace NETworkManager.Converters; + +public sealed class ChildWindowIconToRectangleStyleConverter : IValueConverter +{ + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is not ChildWindowIcon icon) + return null; + + switch (icon) + { + case ChildWindowIcon.Info: + return Application.Current.FindResource("InfoImageRectangle"); + case ChildWindowIcon.Warn: + return Application.Current.FindResource("WarnImageRectangle"); + case ChildWindowIcon.Error: + return Application.Current.FindResource("ErrorImageRectangle"); + default: + return null; + } + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/Source/NETworkManager.Utilities/ChildWindowIcon.cs b/Source/NETworkManager.Utilities/ChildWindowIcon.cs new file mode 100644 index 0000000000..f5b75971c9 --- /dev/null +++ b/Source/NETworkManager.Utilities/ChildWindowIcon.cs @@ -0,0 +1,22 @@ +namespace NETworkManager.Utilities; + +/// +/// Ions for child dialogs. +/// +public enum ChildWindowIcon +{ + /// + /// Information icon. + /// + Info, + + /// + /// Warning icon. + /// + Warn, + + /// + /// Error icon. + /// + Error, +} diff --git a/Source/NETworkManager/Resources/Templates/ValidationErrorTemplates.xaml b/Source/NETworkManager/Resources/Templates/ValidationErrorTemplates.xaml index b1509dfe5f..c6bcbd4ac4 100644 --- a/Source/NETworkManager/Resources/Templates/ValidationErrorTemplates.xaml +++ b/Source/NETworkManager/Resources/Templates/ValidationErrorTemplates.xaml @@ -11,7 +11,7 @@ --> diff --git a/Source/NETworkManager/ViewModels/HostsFileEditorViewModel.cs b/Source/NETworkManager/ViewModels/HostsFileEditorViewModel.cs index f08b0c3ae7..1360751332 100644 --- a/Source/NETworkManager/ViewModels/HostsFileEditorViewModel.cs +++ b/Source/NETworkManager/ViewModels/HostsFileEditorViewModel.cs @@ -452,7 +452,7 @@ private async Task ShowErrorMessageAsync(HostsFileEntryModifyResult result) { childWindow.IsOpen = false; ConfigurationManager.Current.IsChildWindowOpen = false; - }, message); + }, message, Strings.OK, ChildWindowIcon.Error); childWindow.Title = Strings.Error; diff --git a/Source/NETworkManager/ViewModels/OKMessageViewModel.cs b/Source/NETworkManager/ViewModels/OKMessageViewModel.cs index 24d2374437..fca5f22912 100644 --- a/Source/NETworkManager/ViewModels/OKMessageViewModel.cs +++ b/Source/NETworkManager/ViewModels/OKMessageViewModel.cs @@ -6,13 +6,14 @@ namespace NETworkManager.ViewModels; public class OKMessageViewModel : ViewModelBase { - public OKMessageViewModel(Action okCommand, string message, string okButtonText = null) + public OKMessageViewModel(Action okCommand, string message, string okButtonText = null, ChildWindowIcon icon = ChildWindowIcon.Info) { OKCommand = new RelayCommand(_ => okCommand(this)); Message = message; OKButtonText = okButtonText ?? Localization.Resources.Strings.OK; + Icon = icon; } public ICommand OKCommand { get; } @@ -46,4 +47,19 @@ private init OnPropertyChanged(); } } + + private ChildWindowIcon _icon; + + public ChildWindowIcon Icon + { + get => _icon; + private init + { + if (value == _icon) + return; + + _icon = value; + OnPropertyChanged(); + } + } } diff --git a/Source/NETworkManager/Views/OKMessageChildWindow.xaml b/Source/NETworkManager/Views/OKMessageChildWindow.xaml index e15c72619d..c7aece31fb 100644 --- a/Source/NETworkManager/Views/OKMessageChildWindow.xaml +++ b/Source/NETworkManager/Views/OKMessageChildWindow.xaml @@ -7,6 +7,7 @@ xmlns:localization="clr-namespace:NETworkManager.Localization.Resources;assembly=NETworkManager.Localization" xmlns:simpleChildWindow="clr-namespace:MahApps.Metro.SimpleChildWindow;assembly=MahApps.Metro.SimpleChildWindow" xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks" + xmlns:converters="clr-namespace:NETworkManager.Converters;assembly=NETworkManager.Converters" ChildWindowWidth="450" ChildWindowMaxHeight="500" ShowTitleBar="True" @@ -17,7 +18,11 @@ CloseByEscape="False" OverlayBrush="{DynamicResource ResourceKey=MahApps.Brushes.Gray.SemiTransparent}" mc:Ignorable="d" d:DataContext="{d:DesignInstance viewModels:OKMessageViewModel}"> + + + + @@ -34,7 +39,7 @@ + Style="{Binding Icon, Converter={StaticResource ChildWindowIconToRectangleStyleConverter}}" />