Devices - Added option to disable default layouts

This commit is contained in:
Robert committed 2021-06-03 11:10:07 +02:00
1 parent fb3f7e0cc1
commit cef37677f2
6 files changed
+117 -10

No files matched your search

@@ -33,6 +33,8 @@ namespace Artemis.Core
BlueScale = 1;
IsEnabled = true;
LedIds = new ReadOnlyDictionary<LedId, ArtemisLed>(new Dictionary<LedId, ArtemisLed>());
Leds = new ReadOnlyCollection<ArtemisLed>(new List<ArtemisLed>());
InputIdentifiers = new List<ArtemisDeviceInputIdentifier>();
InputMappings = new Dictionary<ArtemisLed, ArtemisLed>();
Categories = new HashSet<DeviceCategory>();
@@ -51,6 +53,8 @@ namespace Artemis.Core
RgbDevice = rgbDevice;
DeviceProvider = deviceProvider;
LedIds = new ReadOnlyDictionary<LedId, ArtemisLed>(new Dictionary<LedId, ArtemisLed>());
Leds = new ReadOnlyCollection<ArtemisLed>(new List<ArtemisLed>());
InputIdentifiers = new List<ArtemisDeviceInputIdentifier>();
InputMappings = new Dictionary<ArtemisLed, ArtemisLed>();
Categories = new HashSet<DeviceCategory>();
@@ -258,6 +262,19 @@ namespace Artemis.Core
}
}
/// <summary>
/// Gets or sets a boolean indicating whether falling back to default layouts is enabled or not
/// </summary>
public bool DisableDefaultLayout
{
get => DeviceEntity.DisableDefaultLayout;
set
{
DeviceEntity.DisableDefaultLayout = value;
OnPropertyChanged(nameof(DisableDefaultLayout));
}
}
/// <summary>
/// Gets or sets the logical layout of the device e.g. DE, UK or US.
/// <para>Only applicable to keyboards</para>
@@ -532,6 +549,11 @@ namespace Artemis.Core
else
LogicalLayout = DeviceEntity.LogicalLayout;
}
public void ClearLayout()
{
// TODO
}
}
/// <summary>
+12 -5
View File
@@ -354,19 +354,26 @@ namespace Artemis.Core.Services
}
// Finally fall back to a default layout
layout = ArtemisLayout.GetDefaultLayout(device);
if (layout != null)
ApplyDeviceLayout(device, layout);
if (!device.DisableDefaultLayout)
layout = ArtemisLayout.GetDefaultLayout(device);
ApplyDeviceLayout(device, layout);
return layout;
}
public void ApplyDeviceLayout(ArtemisDevice device, ArtemisLayout layout)
public void ApplyDeviceLayout(ArtemisDevice device, ArtemisLayout? layout)
{
if (layout == null)
{
if (device.Layout != null)
device.ClearLayout();
return;
}
if (layout.Source == LayoutSource.Default)
device.ApplyLayout(layout, false, false);
else
device.ApplyLayout(layout, device.DeviceProvider.CreateMissingLedsSupported, device.DeviceProvider.RemoveExcessiveLedsSupported);
UpdateLedGroup();
}