diff --git a/Filtration/Converters/DisabledDefaultSoundConverter.cs b/Filtration/Converters/DisabledDefaultSoundConverter.cs new file mode 100644 index 0000000..e530c86 --- /dev/null +++ b/Filtration/Converters/DisabledDefaultSoundConverter.cs @@ -0,0 +1,31 @@ +using System; +using System.Globalization; +using System.Windows.Data; +using System.Windows.Media.Imaging; + +namespace Filtration.Converters +{ + public class DisabledDefaultSoundConverter : IValueConverter + { + private static readonly BitmapImage _soundIcon; + private static readonly BitmapImage _soundDDSIcon; + + static DisabledDefaultSoundConverter() + { + var soundUri = new Uri("pack://application:,,,/Filtration;component/Resources/Icons/sound.png", UriKind.Absolute); + var soundDDSUri = new Uri("pack://application:,,,/Filtration;component/Resources/Icons/sound_dds.png", UriKind.Absolute); + _soundIcon = new BitmapImage(soundUri); + _soundDDSIcon = new BitmapImage(soundDDSUri); + } + + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + return (bool)value ? _soundDDSIcon : _soundIcon; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + return ReferenceEquals(value, _soundDDSIcon); + } + } +} diff --git a/Filtration/Converters/DisabledDefaultSoundTooltipConverter.cs b/Filtration/Converters/DisabledDefaultSoundTooltipConverter.cs new file mode 100644 index 0000000..caf72a4 --- /dev/null +++ b/Filtration/Converters/DisabledDefaultSoundTooltipConverter.cs @@ -0,0 +1,38 @@ +using System; +using System.Globalization; +using System.Windows; +using System.Windows.Data; + +namespace Filtration.Converters +{ + class DisabledDefaultSoundTooltipConverter : IMultiValueConverter + { + private static readonly string appendage = "\nNote: the default drop sound is disabled for this block."; + + public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) + { + if (values[0] == DependencyProperty.UnsetValue || + values[1] == DependencyProperty.UnsetValue) + { + return string.Empty; + } + + var baseText = (string)(values[0]); + var hasDisabledDefaultSound = (bool)(values[1]); + + if (hasDisabledDefaultSound) + { + return $"{baseText}{appendage}"; + } + else + { + return baseText; + } + } + + public object[] ConvertBack(object value, Type[] targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } +} diff --git a/Filtration/Filtration.csproj b/Filtration/Filtration.csproj index 0a74b8a..3b30c9d 100644 --- a/Filtration/Filtration.csproj +++ b/Filtration/Filtration.csproj @@ -210,6 +210,8 @@ + + @@ -460,6 +462,7 @@ Settings.settings True + @@ -504,7 +507,7 @@ - + diff --git a/Filtration/Resources/Icons/sound.png b/Filtration/Resources/Icons/sound.png new file mode 100644 index 0000000..53959cb Binary files /dev/null and b/Filtration/Resources/Icons/sound.png differ diff --git a/Filtration/Resources/Icons/sound_dds.png b/Filtration/Resources/Icons/sound_dds.png new file mode 100644 index 0000000..fd5ab7e Binary files /dev/null and b/Filtration/Resources/Icons/sound_dds.png differ diff --git a/Filtration/ViewModels/DesignTime/DesignTimeItemFilterBlockViewModel.cs b/Filtration/ViewModels/DesignTime/DesignTimeItemFilterBlockViewModel.cs index 5b6ff39..817a01d 100644 --- a/Filtration/ViewModels/DesignTime/DesignTimeItemFilterBlockViewModel.cs +++ b/Filtration/ViewModels/DesignTime/DesignTimeItemFilterBlockViewModel.cs @@ -150,6 +150,7 @@ namespace Filtration.ViewModels.DesignTime public bool HasSound { get; } public bool HasPositionalSound { get; } public bool HasCustomSound { get; } + public bool HasDisabledDefaultSound { get; } public bool HasAudioVisualBlockItems { get; } public void RefreshBlockPreview() { diff --git a/Filtration/ViewModels/ItemFilterBlockViewModel.cs b/Filtration/ViewModels/ItemFilterBlockViewModel.cs index 5403e5f..7fb9983 100644 --- a/Filtration/ViewModels/ItemFilterBlockViewModel.cs +++ b/Filtration/ViewModels/ItemFilterBlockViewModel.cs @@ -65,6 +65,7 @@ namespace Filtration.ViewModels bool HasSound { get; } bool HasPositionalSound { get; } bool HasCustomSound { get; } + bool HasDisabledDefaultSound { get; } bool HasAudioVisualBlockItems { get; } void RefreshBlockPreview(); } @@ -287,6 +288,7 @@ namespace Filtration.ViewModels public bool HasSound => Block.HasBlockItemOfType(); public bool HasPositionalSound => Block.HasBlockItemOfType(); public bool HasCustomSound => Block.HasBlockItemOfType(); + public bool HasDisabledDefaultSound => Block.HasBlockItemOfType(); public bool HasAudioVisualBlockItems => AudioVisualBlockItems.Any(); @@ -526,6 +528,7 @@ namespace Filtration.ViewModels RaisePropertyChanged(nameof(HasSound)); RaisePropertyChanged(nameof(HasPositionalSound)); RaisePropertyChanged(nameof(HasCustomSound)); + RaisePropertyChanged(nameof(HasDisabledDefaultSound)); } private void OnBlockItemsCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) diff --git a/Filtration/Views/IconsDictionary.xaml b/Filtration/Views/IconsDictionary.xaml index 99b4398..1f678e0 100644 --- a/Filtration/Views/IconsDictionary.xaml +++ b/Filtration/Views/IconsDictionary.xaml @@ -11,7 +11,6 @@ - @@ -37,4 +36,4 @@ - \ No newline at end of file + diff --git a/Filtration/Views/ItemFilterBlockView.xaml b/Filtration/Views/ItemFilterBlockView.xaml index 5b84db6..ab0bdb4 100644 --- a/Filtration/Views/ItemFilterBlockView.xaml +++ b/Filtration/Views/ItemFilterBlockView.xaml @@ -1,7 +1,7 @@  @@ -18,6 +18,8 @@ + +