Skip to content

Commit d84f3e7

Browse files
committed
Use static images and converters.
1 parent 5cf6423 commit d84f3e7

File tree

4 files changed

+14
-36
lines changed

4 files changed

+14
-36
lines changed

Rubberduck.Core/UI/AddRemoveReferences/ReferenceStatusImageSourceConverter.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace Rubberduck.UI.AddRemoveReferences
1010
{
1111
public class ReferenceStatusImageSourceConverter : ImageSourceConverter
1212
{
13-
private readonly IDictionary<ReferenceStatus, ImageSource> _icons =
13+
private static readonly IDictionary<ReferenceStatus, ImageSource> Icons =
1414
new Dictionary<ReferenceStatus, ImageSource>
1515
{
1616
{ ReferenceStatus.None, null },
@@ -29,8 +29,7 @@ public class ReferenceStatusImageSourceConverter : ImageSourceConverter
2929

3030
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
3131
{
32-
if (value == null || value.GetType() != typeof(ReferenceStatus)) { return null; }
33-
return _icons[(ReferenceStatus)value];
32+
return !(value is ReferenceStatus) ? null : Icons[(ReferenceStatus)value];
3433
}
3534
}
3635
}

Rubberduck.Core/UI/Converters/ImageSourceConverter.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@ public abstract class ImageSourceConverter : IValueConverter
1313
protected static ImageSource ToImageSource(Image source)
1414
{
1515
var ms = new MemoryStream();
16+
1617
((Bitmap)source).Save(ms, System.Drawing.Imaging.ImageFormat.Png);
1718
var image = new BitmapImage();
1819
image.BeginInit();
1920
ms.Seek(0, SeekOrigin.Begin);
2021
image.StreamSource = ms;
2122
image.EndInit();
23+
image.Freeze();
2224

2325
return image;
2426
}

Rubberduck.Core/UI/Inspections/InspectionImageSourceConverter.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,21 @@ namespace Rubberduck.UI.Inspections
77
{
88
public class InspectionImageSourceConverter : IValueConverter
99
{
10+
private static readonly InspectionSeverityImageSourceConverter SeverityConverter = new InspectionSeverityImageSourceConverter();
11+
1012
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
1113
{
12-
var inspection = value as IInspection;
13-
if (inspection == null )
14+
if (!(value is IInspection inspection))
1415
{
1516
return null;
1617
}
1718

18-
var converter = new InspectionSeverityImageSourceConverter();
19-
return converter.Convert(inspection.Severity, targetType, parameter, culture);
19+
return SeverityConverter.Convert(inspection.Severity, targetType, parameter, culture);
2020
}
2121

2222
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
2323
{
24-
var converter = new InspectionSeverityImageSourceConverter();
25-
return converter.ConvertBack(value, targetType, parameter, culture);
24+
return SeverityConverter.ConvertBack(value, targetType, parameter, culture);
2625
}
2726
}
2827
}
Lines changed: 5 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,15 @@
11
using System;
22
using System.Collections.Generic;
3-
using System.Drawing;
43
using System.Globalization;
5-
using System.IO;
64
using System.Linq;
7-
using System.Windows.Data;
85
using System.Windows.Media;
9-
using System.Windows.Media.Imaging;
106
using Rubberduck.Parsing.Inspections;
117
using Rubberduck.Resources.Inspections;
8+
using ImageSourceConverter = Rubberduck.UI.Converters.ImageSourceConverter;
129

1310
namespace Rubberduck.UI.Inspections
1411
{
15-
public class InspectionSeverityImageSourceConverter : IValueConverter
12+
public class InspectionSeverityImageSourceConverter : ImageSourceConverter
1613
{
1714
private static readonly IDictionary<CodeInspectionSeverity,ImageSource> Icons =
1815
new Dictionary<CodeInspectionSeverity, ImageSource>
@@ -24,33 +21,14 @@ public class InspectionSeverityImageSourceConverter : IValueConverter
2421
{ CodeInspectionSeverity.Error, ToImageSource(InspectionsUI.cross_circle) },
2522
};
2623

27-
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
24+
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
2825
{
29-
if (value.GetType() != typeof(CodeInspectionSeverity))
30-
{
31-
throw new ArgumentException("value must be a CodeInspectionSeverity");
32-
}
33-
34-
var severity = (CodeInspectionSeverity)value;
35-
return Icons[severity];
26+
return value is CodeInspectionSeverity severity ? Icons[severity] : null;
3627
}
3728

38-
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
29+
public override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
3930
{
4031
return Icons.First(f => Equals(f.Value, value)).Key;
4132
}
42-
43-
private static ImageSource ToImageSource(Image source)
44-
{
45-
var ms = new MemoryStream();
46-
((Bitmap)source).Save(ms, System.Drawing.Imaging.ImageFormat.Png);
47-
var image = new BitmapImage();
48-
image.BeginInit();
49-
ms.Seek(0, SeekOrigin.Begin);
50-
image.StreamSource = ms;
51-
image.EndInit();
52-
53-
return image;
54-
}
5533
}
5634
}

0 commit comments

Comments
 (0)