-
Notifications
You must be signed in to change notification settings - Fork 6.6k
/
GeneralSettings.cs
143 lines (119 loc) · 4.76 KB
/
GeneralSettings.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Text.Json;
using System.Text.Json.Serialization;
using ManagedCommon;
using Microsoft.PowerToys.Settings.UI.Library.Interfaces;
using Microsoft.PowerToys.Settings.UI.Library.Utilities;
using Settings.UI.Library.Attributes;
namespace Microsoft.PowerToys.Settings.UI.Library
{
public class GeneralSettings : ISettingsConfig
{
// Gets or sets a value indicating whether run powertoys on start-up.
[JsonPropertyName("startup")]
public bool Startup { get; set; }
// Gets or sets a value indicating whether the powertoy elevated.
[CmdConfigureIgnoreAttribute]
[JsonPropertyName("is_elevated")]
public bool IsElevated { get; set; }
// Gets or sets a value indicating whether powertoys should run elevated.
[JsonPropertyName("run_elevated")]
[CmdConfigureIgnoreAttribute]
public bool RunElevated { get; set; }
// Gets or sets a value indicating whether is admin.
[JsonPropertyName("is_admin")]
[CmdConfigureIgnoreAttribute]
public bool IsAdmin { get; set; }
// Gets or sets a value indicating whether is warnings of elevated apps enabled.
[JsonPropertyName("enable_warnings_elevated_apps")]
public bool EnableWarningsElevatedApps { get; set; }
// Gets or sets theme Name.
[JsonPropertyName("theme")]
public string Theme { get; set; }
// Gets or sets system theme name.
[JsonPropertyName("system_theme")]
[CmdConfigureIgnore]
public string SystemTheme { get; set; }
// Gets or sets powertoys version number.
[JsonPropertyName("powertoys_version")]
[CmdConfigureIgnore]
public string PowertoysVersion { get; set; }
[JsonPropertyName("action_name")]
[CmdConfigureIgnore]
public string CustomActionName { get; set; }
[JsonPropertyName("enabled")]
[CmdConfigureIgnore]
public EnabledModules Enabled { get; set; }
[JsonPropertyName("show_new_updates_toast_notification")]
public bool ShowNewUpdatesToastNotification { get; set; }
[JsonPropertyName("download_updates_automatically")]
public bool AutoDownloadUpdates { get; set; }
[JsonPropertyName("show_whats_new_after_updates")]
public bool ShowWhatsNewAfterUpdates { get; set; }
[JsonPropertyName("enable_experimentation")]
public bool EnableExperimentation { get; set; }
public GeneralSettings()
{
Startup = false;
IsAdmin = false;
EnableWarningsElevatedApps = true;
IsElevated = false;
ShowNewUpdatesToastNotification = true;
AutoDownloadUpdates = false;
EnableExperimentation = true;
Theme = "system";
SystemTheme = "light";
try
{
PowertoysVersion = DefaultPowertoysVersion();
}
catch (Exception e)
{
Logger.LogError("Exception encountered when getting PowerToys version", e);
PowertoysVersion = "v0.0.0";
}
Enabled = new EnabledModules();
CustomActionName = string.Empty;
}
// converts the current to a json string.
public string ToJsonString()
{
return JsonSerializer.Serialize(this);
}
private static string DefaultPowertoysVersion()
{
return global::PowerToys.Interop.CommonManaged.GetProductVersion();
}
// This function is to implement the ISettingsConfig interface.
// This interface helps in getting the settings configurations.
public string GetModuleName()
{
// The SettingsUtils functions access general settings when the module name is an empty string.
return string.Empty;
}
public bool UpgradeSettingsConfiguration()
{
try
{
if (Helper.CompareVersions(PowertoysVersion, Helper.GetProductVersion()) != 0)
{
// Update settings
PowertoysVersion = Helper.GetProductVersion();
return true;
}
}
catch (FormatException)
{
// If there is an issue with the version number format, don't migrate settings.
}
return false;
}
public void AddEnabledModuleChangeNotification(Action callBack)
{
Enabled.AddEnabledModuleChangeNotification(callBack);
}
}
}