LenovoLegionToolkit

Форк
0
111 строк · 3.8 Кб
1
using System;
2
using System.Collections.Generic;
3
using System.Threading.Tasks;
4
using LenovoLegionToolkit.Lib.Utils;
5

6
namespace LenovoLegionToolkit.Lib.Controllers.GodMode;
7

8
public class GodModeController : IGodModeController
9
{
10
    private readonly IGodModeController _controllerV1;
11
    private readonly IGodModeController _controllerV2;
12

13
    public event EventHandler<Guid>? PresetChanged
14
    {
15
        add
16
        {
17
            _controllerV1.PresetChanged += value;
18
            _controllerV2.PresetChanged += value;
19
        }
20
        remove
21
        {
22
            _controllerV1.PresetChanged -= value;
23
            _controllerV2.PresetChanged -= value;
24
        }
25
    }
26

27
    public GodModeController(GodModeControllerV1 controllerV1, GodModeControllerV2 controllerV2)
28
    {
29
        _controllerV1 = controllerV1 ?? throw new ArgumentNullException(nameof(controllerV1));
30
        _controllerV2 = controllerV2 ?? throw new ArgumentNullException(nameof(controllerV2));
31
    }
32

33
    public async Task<bool> NeedsVantageDisabledAsync()
34
    {
35
        var controller = await GetControllerAsync().ConfigureAwait(false);
36
        return await controller.NeedsVantageDisabledAsync().ConfigureAwait(false);
37
    }
38

39
    public async Task<bool> NeedsLegionZoneDisabledAsync()
40
    {
41
        var controller = await GetControllerAsync().ConfigureAwait(false);
42
        return await controller.NeedsLegionZoneDisabledAsync().ConfigureAwait(false);
43
    }
44

45
    public async Task<Guid> GetActivePresetIdAsync()
46
    {
47
        var controller = await GetControllerAsync().ConfigureAwait(false);
48
        return await controller.GetActivePresetIdAsync().ConfigureAwait(false);
49
    }
50

51
    public async Task<string?> GetActivePresetNameAsync()
52
    {
53
        var controller = await GetControllerAsync().ConfigureAwait(false);
54
        return await controller.GetActivePresetNameAsync().ConfigureAwait(false);
55
    }
56

57
    public async Task<GodModeState> GetStateAsync()
58
    {
59
        var controller = await GetControllerAsync().ConfigureAwait(false);
60
        return await controller.GetStateAsync().ConfigureAwait(false);
61
    }
62

63
    public async Task SetStateAsync(GodModeState state)
64
    {
65
        var controller = await GetControllerAsync().ConfigureAwait(false);
66
        await controller.SetStateAsync(state).ConfigureAwait(false);
67
    }
68

69
    public async Task ApplyStateAsync()
70
    {
71
        var controller = await GetControllerAsync().ConfigureAwait(false);
72
        await controller.ApplyStateAsync().ConfigureAwait(false);
73
    }
74

75
    public async Task<FanTable> GetDefaultFanTableAsync()
76
    {
77
        var controller = await GetControllerAsync().ConfigureAwait(false);
78
        return await controller.GetDefaultFanTableAsync().ConfigureAwait(false);
79
    }
80

81
    public async Task<FanTable> GetMinimumFanTableAsync()
82
    {
83
        var controller = await GetControllerAsync().ConfigureAwait(false);
84
        return await controller.GetMinimumFanTableAsync().ConfigureAwait(false);
85
    }
86

87
    public async Task<Dictionary<PowerModeState, GodModeDefaults>> GetDefaultsInOtherPowerModesAsync()
88
    {
89
        var controller = await GetControllerAsync().ConfigureAwait(false);
90
        return await controller.GetDefaultsInOtherPowerModesAsync().ConfigureAwait(false);
91
    }
92

93
    public async Task RestoreDefaultsInOtherPowerModeAsync(PowerModeState state)
94
    {
95
        var controller = await GetControllerAsync().ConfigureAwait(false);
96
        await controller.RestoreDefaultsInOtherPowerModeAsync(state).ConfigureAwait(false);
97
    }
98

99
    private async Task<IGodModeController> GetControllerAsync()
100
    {
101
        var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);
102

103
        if (mi.Properties.SupportsGodModeV1)
104
            return _controllerV1;
105

106
        if (mi.Properties.SupportsGodModeV2)
107
            return _controllerV2;
108

109
        throw new InvalidOperationException("No supported version found.");
110
    }
111
}
112

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

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

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

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