LenovoLegionToolkit
33 строки · 1.2 Кб
1using System;
2using System.Threading.Tasks;
3using LenovoLegionToolkit.Lib.Controllers;
4
5namespace LenovoLegionToolkit.Lib.Features.PanelLogo;
6
7public class PanelLogoSpectrumBacklightFeature : IFeature<PanelLogoBacklightState>
8{
9private readonly SpectrumKeyboardBacklightController _controller;
10
11public PanelLogoSpectrumBacklightFeature(SpectrumKeyboardBacklightController controller)
12{
13_controller = controller;
14}
15
16public async Task<bool> IsSupportedAsync()
17{
18var isSupported = await _controller.IsSupportedAsync().ConfigureAwait(false);
19if (!isSupported)
20return false;
21
22var (layout, _, _) = await _controller.GetKeyboardLayoutAsync().ConfigureAwait(false);
23return layout == SpectrumLayout.Full;
24}
25
26public Task<PanelLogoBacklightState[]> GetAllStatesAsync() => Task.FromResult(Enum.GetValues<PanelLogoBacklightState>());
27
28public async Task<PanelLogoBacklightState> GetStateAsync() => await _controller.GetLogoStatusAsync().ConfigureAwait(false)
29? PanelLogoBacklightState.On
30: PanelLogoBacklightState.Off;
31
32public Task SetStateAsync(PanelLogoBacklightState state) => _controller.SetLogoStatusAsync(state == PanelLogoBacklightState.On);
33}
34