LenovoLegionToolkit
65 строк · 2.3 Кб
1using System;
2using LenovoLegionToolkit.WPF.Resources;
3
4namespace LenovoLegionToolkit.WPF;
5
6public readonly struct DashboardGroup
7{
8public static readonly DashboardGroup[] DefaultGroups =
9{
10new(DashboardGroupType.Power, null,
11DashboardItem.PowerMode,
12DashboardItem.BatteryMode,
13DashboardItem.BatteryNightChargeMode,
14DashboardItem.AlwaysOnUsb,
15DashboardItem.InstantBoot,
16DashboardItem.FlipToStart),
17new(DashboardGroupType.Graphics, null,
18DashboardItem.HybridMode,
19DashboardItem.DiscreteGpu,
20DashboardItem.OverclockDiscreteGpu),
21new(DashboardGroupType.Display, null,
22DashboardItem.Resolution,
23DashboardItem.RefreshRate,
24DashboardItem.DpiScale,
25DashboardItem.Hdr,
26DashboardItem.OverDrive,
27DashboardItem.TurnOffMonitors),
28new(DashboardGroupType.Other, null,
29DashboardItem.Microphone,
30DashboardItem.WhiteKeyboardBacklight,
31DashboardItem.PanelLogoBacklight,
32DashboardItem.PortsBacklight,
33DashboardItem.TouchpadLock,
34DashboardItem.FnLock,
35DashboardItem.WinKeyLock)
36};
37
38public DashboardGroupType Type { get; }
39
40public string? CustomName { get; }
41
42public DashboardItem[] Items { get; }
43
44public DashboardGroup(DashboardGroupType type, string? customName, params DashboardItem[] items)
45{
46Type = type;
47CustomName = type == DashboardGroupType.Custom ? customName : null;
48Items = items;
49}
50
51public string GetName() => Type switch
52{
53DashboardGroupType.Power => Resource.DashboardPage_Power_Title,
54DashboardGroupType.Graphics => Resource.DashboardPage_Graphics_Title,
55DashboardGroupType.Display => Resource.DashboardPage_Display_Title,
56DashboardGroupType.Other => Resource.DashboardPage_Other_Title,
57DashboardGroupType.Custom => CustomName ?? string.Empty,
58_ => throw new InvalidOperationException($"Invalid type {Type}"),
59};
60
61public override string ToString() =>
62$"{nameof(Type)}: {Type}," +
63$" {nameof(CustomName)}: {CustomName}," +
64$" {nameof(Items)}: {string.Join(",", Items)}";
65}
66