Skip to content

Commit 50117ca

Browse files
author
Vit Nemecky
committed
finetune
1 parent 29d703b commit 50117ca

6 files changed

Lines changed: 27 additions & 25 deletions

File tree

BrickController2/BrickController2.Tests/UI/Images/DeviceImagesResouceTests.cs renamed to BrickController2/BrickController2.Tests/UI/Images/DeviceImagesResourceTests.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,10 @@
99

1010
namespace BrickController2.Tests.UI.Images;
1111

12-
public class DeviceImagesResouceTests
12+
public class DeviceImagesResourceTests
1313
{
1414
public static IEnumerable<object[]> DeviceTypesData =>
15-
Enum.GetValues(typeof(DeviceType))
16-
.Cast<DeviceType>()
15+
Enum.GetValues<DeviceType>()
1716
.Where(deviceType => deviceType != DeviceType.Unknown) // Exclude Unknown
1817
.Select(deviceType => new object[] { deviceType });
1918

BrickController2/BrickController2/DeviceManagement/BuWizz2Device.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ public BuWizz2Device(string name, string address, byte[] deviceData, IEnumerable
5858

5959
public static string TypeName => "BuWizz 2";
6060
public static DeviceType Type => DeviceType.BuWizz2;
61+
6162
public override DeviceType DeviceType => DeviceType.BuWizz2;
6263
public override int NumberOfChannels => 4;
6364
public override int NumberOfOutputLevels => 4;

BrickController2/BrickController2/UI/Converters/DeviceTypeToImageConverter.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@ public class DeviceTypeToImageConverter : DeviceTypeToImageConverterBase, IValue
1010
{
1111
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
1212
{
13-
var deviceType = (DeviceType)value!;
14-
var imageInfo = GetImage(deviceType);
15-
return ResourceHelper.GetImageResource(imageInfo.ImageResourceName);
13+
if (TryGetImage((DeviceType)value!, out var imageInfo))
14+
{
15+
return ResourceHelper.GetImageResource(imageInfo.ImageResourceName);
16+
}
17+
return null;
1618
}
1719

1820
public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)

BrickController2/BrickController2/UI/Converters/DeviceTypeToImageConverterBase.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,22 @@
33
using Microsoft.Maui;
44
using Microsoft.Extensions.DependencyInjection;
55
using System;
6+
using System.Diagnostics.CodeAnalysis;
67

78
namespace BrickController2.UI.Converters;
89

910
public abstract class DeviceTypeToImageConverterBase
1011
{
11-
private readonly Lazy<IDeviceImageRegistry> _registry = new(() => IPlatformApplication.Current?.Services.GetRequiredService<IDeviceImageRegistry>()!);
12+
private readonly Lazy<IDeviceImageRegistry> _registry = new(() => IPlatformApplication.Current!.Services.GetRequiredService<IDeviceImageRegistry>());
1213

13-
public DeviceImageInfo? GetImage(DeviceType deviceType)
14+
protected bool TryGetImage(DeviceType deviceType, [NotNullWhen(true)] out DeviceImageInfo? imageInfo)
1415
{
1516
if (deviceType != DeviceType.Unknown)
1617
{
17-
return _registry.Value.GetImages(deviceType);
18+
imageInfo = _registry.Value.GetImages(deviceType);
19+
return true;
1820
}
19-
return null;
21+
imageInfo = null;
22+
return false;
2023
}
2124
}

BrickController2/BrickController2/UI/Converters/DeviceTypeToSmallImageConverter.cs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,11 @@ public class DeviceTypeToSmallImageConverter : DeviceTypeToImageConverterBase, I
1010
{
1111
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
1212
{
13-
var deviceType = (DeviceType)value!;
14-
if (deviceType == DeviceType.Unknown)
15-
return null;
16-
17-
var imageInfo = GetImage(deviceType);
18-
if (imageInfo is null)
19-
return null;
20-
21-
return ResourceHelper.GetImageResource(imageInfo.SmallImageResourceName);
13+
if (TryGetImage((DeviceType)value!, out var imageInfo))
14+
{
15+
return ResourceHelper.GetImageResource(imageInfo.SmallImageResourceName);
16+
}
17+
return null;
2218
}
2319

2420
public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)

BrickController2/BrickController2/UI/Images/DeviceImageRegistry.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,14 @@ public void Register(DeviceType deviceType, string imageResourceName, string sma
3939

4040
public DeviceImageInfo GetImages(DeviceType deviceType)
4141
{
42-
if (_registry.TryGetValue(deviceType, out var info))
42+
if (!_registry.TryGetValue(deviceType, out var info))
4343
{
44-
return info;
44+
// Convention-based fallback
45+
var typeName = deviceType.ToString().ToLowerInvariant();
46+
info = new DeviceImageInfo($"{typeName}_image.png", $"{typeName}_image_small.png");
47+
// Cache the convention-based result for future calls
48+
_registry[deviceType] = info;
4549
}
46-
47-
// Convention-based fallback
48-
var typeName = deviceType.ToString().ToLower();
49-
return new DeviceImageInfo($"{typeName}_image.png", $"{typeName}_image_small.png");
50+
return info;
5051
}
5152
}

0 commit comments

Comments
 (0)