mirror of
https://github.com/DarthAffe/RGB.NET.git
synced 2025-12-13 10:08:31 +00:00
Merge branch 'Development' into SDK/SteelSeries
This commit is contained in:
commit
237baf9313
@ -12,18 +12,15 @@ namespace RGB.NET.Core
|
||||
#region Properties & Fields
|
||||
|
||||
private readonly List<T> _decorators = new List<T>();
|
||||
/// <summary>
|
||||
/// Gets a readonly-list of all <see cref="IDecorator"/> attached to this <see cref="IDecoratable{T}"/>.
|
||||
/// </summary>
|
||||
protected IReadOnlyCollection<T> Decorators { get; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
|
||||
protected AbstractDecoratable()
|
||||
/// <inheritdoc />
|
||||
public IReadOnlyCollection<T> Decorators
|
||||
{
|
||||
Decorators = new ReadOnlyCollection<T>(_decorators);
|
||||
get
|
||||
{
|
||||
lock (_decorators)
|
||||
return new ReadOnlyCollection<T>(_decorators);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace RGB.NET.Core
|
||||
{
|
||||
@ -42,16 +44,17 @@ namespace RGB.NET.Core
|
||||
/// <summary>
|
||||
/// Detaches the decorator from all <see cref="IDecoratable"/> it is currently attached to.
|
||||
/// </summary>
|
||||
/// <typeparam name="TDecoratable">The type of the <see cref="IDecoratable"/> this decorator is attached to.</typeparam>
|
||||
/// <typeparam name="TDecorator">The type of this <see cref="IDecorator"/>.</typeparam>
|
||||
protected virtual void Detach<TDecoratable, TDecorator>()
|
||||
where TDecoratable : IDecoratable<TDecorator>
|
||||
where TDecorator : AbstractDecorator
|
||||
protected virtual void Detach()
|
||||
{
|
||||
List<IDecoratable> decoratables = new List<IDecoratable>(DecoratedObjects);
|
||||
foreach (IDecoratable decoratable in decoratables)
|
||||
if (decoratable is TDecoratable typedDecoratable)
|
||||
typedDecoratable.RemoveDecorator((TDecorator)this);
|
||||
{
|
||||
IEnumerable<Type> types = decoratable.GetType().GetInterfaces().Where(t => t.IsGenericType
|
||||
&& (t.Name == typeof(IDecoratable<>).Name)
|
||||
&& t.GenericTypeArguments[0].IsInstanceOfType(this));
|
||||
foreach (Type decoratableType in types)
|
||||
decoratableType.GetMethod(nameof(IDecoratable<IDecorator>.RemoveDecorator))?.Invoke(decoratable, new object[] { this });
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using System.ComponentModel;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace RGB.NET.Core
|
||||
{
|
||||
@ -13,9 +14,14 @@ namespace RGB.NET.Core
|
||||
/// Represents a basic decoratable for a specific type of <see cref="T:RGB.NET.Core.IDecorator" />
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
public interface IDecoratable<in T> : IDecoratable
|
||||
public interface IDecoratable<T> : IDecoratable
|
||||
where T : IDecorator
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets a readonly-list of all <see cref="IDecorator"/> attached to this <see cref="IDecoratable{T}"/>.
|
||||
/// </summary>
|
||||
IReadOnlyCollection<T> Decorators { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Adds an <see cref="IDecorator"/> to the <see cref="IDecoratable"/>.
|
||||
/// </summary>
|
||||
|
||||
@ -129,7 +129,7 @@ namespace RGB.NET.Decorators.Brush
|
||||
else
|
||||
{
|
||||
if ((++_repetitionCount >= Repetitions) && (Repetitions > 0))
|
||||
Detach<IBrush, FlashDecorator>();
|
||||
Detach();
|
||||
_currentPhaseValue = Attack;
|
||||
_currentPhase = ADSRPhase.Attack;
|
||||
}
|
||||
|
||||
@ -132,7 +132,8 @@ namespace RGB.NET.Devices.CoolerMaster
|
||||
continue;
|
||||
}
|
||||
|
||||
_CoolerMasterSDK.EnableLedControl(true, index);
|
||||
if (!_CoolerMasterSDK.EnableLedControl(true, index))
|
||||
throw new RGBDeviceException("Failed to enable LED control for device " + index);
|
||||
|
||||
device.Initialize(UpdateTrigger);
|
||||
devices.Add(device);
|
||||
|
||||
@ -69,6 +69,18 @@ namespace RGB.NET.Devices.CoolerMaster
|
||||
[DeviceType(RGBDeviceType.Keyboard)]
|
||||
CK551 = 13,
|
||||
|
||||
[Description("MM830")]
|
||||
[DeviceType(RGBDeviceType.Mouse)]
|
||||
MM830 = 14,
|
||||
|
||||
[Description("CK530")]
|
||||
[DeviceType(RGBDeviceType.Keyboard)]
|
||||
CK530 = 15,
|
||||
|
||||
[Description("MK850")]
|
||||
[DeviceType(RGBDeviceType.Keyboard)]
|
||||
MK850 = 16,
|
||||
|
||||
[DeviceType(RGBDeviceType.None)]
|
||||
Default = 0xFFFF
|
||||
}
|
||||
|
||||
@ -41,7 +41,7 @@ namespace RGB.NET.Devices.Msi
|
||||
}
|
||||
|
||||
//TODO DarthAffe 07.10.2017: We don't know the model, how to save layouts and images?
|
||||
ApplyLayoutFromFile(PathHelper.GetAbsolutePath($@"Layouts\MSI\GraphicsCard\{DeviceInfo.Model.Replace(" ", string.Empty).ToUpper()}.xml"), null);
|
||||
ApplyLayoutFromFile(PathHelper.GetAbsolutePath(this, $@"Layouts\MSI\GraphicsCard\{DeviceInfo.Model.Replace(" ", string.Empty).ToUpper()}.xml"), null);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
||||
@ -39,7 +39,7 @@ namespace RGB.NET.Devices.Msi
|
||||
}
|
||||
|
||||
//TODO DarthAffe 07.10.2017: We don't know the model, how to save layouts and images?
|
||||
ApplyLayoutFromFile(PathHelper.GetAbsolutePath($@"Layouts\MSI\Mainboards\{DeviceInfo.Model.Replace(" ", string.Empty).ToUpper()}.xml"), null);
|
||||
ApplyLayoutFromFile(PathHelper.GetAbsolutePath(this, $@"Layouts\MSI\Mainboards\{DeviceInfo.Model.Replace(" ", string.Empty).ToUpper()}.xml"), null);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
||||
@ -39,7 +39,7 @@ namespace RGB.NET.Devices.Msi
|
||||
}
|
||||
|
||||
//TODO DarthAffe 07.10.2017: We don't know the model, how to save layouts and images?
|
||||
ApplyLayoutFromFile(PathHelper.GetAbsolutePath($@"Layouts\MSI\Mouses\{DeviceInfo.Model.Replace(" ", string.Empty).ToUpper()}.xml"), null);
|
||||
ApplyLayoutFromFile(PathHelper.GetAbsolutePath(this, $@"Layouts\MSI\Mouses\{DeviceInfo.Model.Replace(" ", string.Empty).ToUpper()}.xml"), null);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user