LenovoLegionToolkit

Форк
0
/
SpectrumKeyboardBacklightBrightnessAutomationStep.cs 
36 строк · 1.2 Кб
1
using System;
2
using System.Linq;
3
using System.Threading.Tasks;
4
using LenovoLegionToolkit.Lib.Controllers;
5
using Newtonsoft.Json;
6

7
namespace LenovoLegionToolkit.Lib.Automation.Steps;
8

9
public class SpectrumKeyboardBacklightBrightnessAutomationStep : IAutomationStep<int>
10
{
11
    private readonly SpectrumKeyboardBacklightController _controller = IoCContainer.Resolve<SpectrumKeyboardBacklightController>();
12

13
    private readonly int[] _allStates = Enumerable.Range(0, 10).ToArray();
14

15
    public int State { get; }
16

17
    [JsonConstructor]
18
    public SpectrumKeyboardBacklightBrightnessAutomationStep(int state) => State = state;
19

20
    public Task<int[]> GetAllStatesAsync() => Task.FromResult(_allStates);
21

22
    public Task<bool> IsSupportedAsync() => _controller.IsSupportedAsync();
23

24
    public async Task RunAsync(AutomationEnvironment _)
25
    {
26
        if (!await _controller.IsSupportedAsync().ConfigureAwait(false))
27
            return;
28

29
        if (!_allStates.Contains(State))
30
            throw new InvalidOperationException(nameof(State));
31

32
        await _controller.SetBrightnessAsync(State).ConfigureAwait(false);
33
    }
34

35
    public IAutomationStep DeepCopy() => new SpectrumKeyboardBacklightBrightnessAutomationStep(State);
36
}
37

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.