LenovoLegionToolkit
/
SpectrumKeyboardBacklightProfileAutomationStep.cs
36 строк · 1.2 Кб
1using System;2using System.Linq;3using System.Threading.Tasks;4using LenovoLegionToolkit.Lib.Controllers;5using Newtonsoft.Json;6
7namespace LenovoLegionToolkit.Lib.Automation.Steps;8
9public class SpectrumKeyboardBacklightProfileAutomationStep : IAutomationStep<int>10{
11private readonly SpectrumKeyboardBacklightController _controller = IoCContainer.Resolve<SpectrumKeyboardBacklightController>();12
13private readonly int[] _allStates = Enumerable.Range(1, 6).ToArray();14
15public int State { get; }16
17[JsonConstructor]18public SpectrumKeyboardBacklightProfileAutomationStep(int state) => State = state;19
20public Task<int[]> GetAllStatesAsync() => Task.FromResult(_allStates);21
22public Task<bool> IsSupportedAsync() => _controller.IsSupportedAsync();23
24public async Task RunAsync(AutomationEnvironment _)25{26if (!await _controller.IsSupportedAsync().ConfigureAwait(false))27return;28
29if (!_allStates.Contains(State))30throw new InvalidOperationException(nameof(State));31
32await _controller.SetProfileAsync(State).ConfigureAwait(false);33}34
35public IAutomationStep DeepCopy() => new SpectrumKeyboardBacklightProfileAutomationStep(State);36}
37