2020-04-07 10:19:14 -07:00
// 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.
2020-09-23 13:20:32 -07:00
using System ;
2020-10-21 12:32:53 -07:00
using System.Diagnostics.CodeAnalysis ;
2020-03-24 19:55:02 -07:00
using System.Text.Json ;
2020-04-16 11:45:27 -07:00
using System.Text.Json.Serialization ;
2020-10-22 09:45:48 -07:00
using Microsoft.PowerToys.Settings.UI.Library.Interfaces ;
using Microsoft.PowerToys.Settings.UI.Library.Utilities ;
2020-03-24 19:55:02 -07:00
2020-10-22 09:45:48 -07:00
namespace Microsoft.PowerToys.Settings.UI.Library
2020-03-24 19:55:02 -07:00
{
2020-09-23 13:20:32 -07:00
public class GeneralSettings : ISettingsConfig
2020-03-24 19:55:02 -07:00
{
2020-04-07 10:19:14 -07:00
// Gets or sets a value indicating whether run powertoys on start-up.
2020-04-16 11:45:27 -07:00
[JsonPropertyName("startup")]
public bool Startup { get ; set ; }
2020-04-07 10:19:14 -07:00
// Gets or sets a value indicating whether the powertoy elevated.
2020-04-16 11:45:27 -07:00
[JsonPropertyName("is_elevated")]
public bool IsElevated { get ; set ; }
2020-04-07 10:19:14 -07:00
// Gets or sets a value indicating whether powertoys should run elevated.
2020-04-16 11:45:27 -07:00
[JsonPropertyName("run_elevated")]
public bool RunElevated { get ; set ; }
2020-04-07 10:19:14 -07:00
// Gets or sets a value indicating whether is admin.
2020-04-16 11:45:27 -07:00
[JsonPropertyName("is_admin")]
public bool IsAdmin { get ; set ; }
2020-04-07 10:19:14 -07:00
// Gets or sets theme Name.
2020-04-16 11:45:27 -07:00
[JsonPropertyName("theme")]
public string Theme { get ; set ; }
2020-04-07 10:19:14 -07:00
// Gets or sets system theme name.
2020-04-16 11:45:27 -07:00
[JsonPropertyName("system_theme")]
public string SystemTheme { get ; set ; }
2020-04-07 10:19:14 -07:00
// Gets or sets powertoys version number.
2020-04-16 11:45:27 -07:00
[JsonPropertyName("powertoys_version")]
public string PowertoysVersion { get ; set ; }
2020-05-03 03:17:06 -07:00
[JsonPropertyName("action_name")]
public string CustomActionName { get ; set ; }
2020-04-16 11:45:27 -07:00
[JsonPropertyName("enabled")]
public EnabledModules Enabled { get ; set ; }
2020-03-24 19:55:02 -07:00
2020-05-03 03:17:06 -07:00
[JsonPropertyName("download_updates_automatically")]
public bool AutoDownloadUpdates { get ; set ; }
2020-10-21 12:32:53 -07:00
[SuppressMessage("Design", "CA1031:Do not catch general exception types", Justification = "Any error from calling interop code should not prevent the program from loading.")]
2020-03-30 05:38:03 -07:00
public GeneralSettings ( )
{
2020-08-19 15:59:10 -07:00
Startup = false ;
IsAdmin = false ;
IsElevated = false ;
AutoDownloadUpdates = false ;
Theme = "system" ;
SystemTheme = "light" ;
2020-05-05 16:01:55 -07:00
try
{
2020-08-19 15:59:10 -07:00
PowertoysVersion = DefaultPowertoysVersion ( ) ;
2020-05-05 16:01:55 -07:00
}
2020-10-21 12:32:53 -07:00
catch ( Exception e )
2020-05-05 16:01:55 -07:00
{
2020-10-21 12:32:53 -07:00
Logger . LogError ( "Exception encountered when getting PowerToys version" , e ) ;
2020-08-19 15:59:10 -07:00
PowertoysVersion = "v0.0.0" ;
2020-05-05 16:01:55 -07:00
}
2020-08-19 15:59:10 -07:00
Enabled = new EnabledModules ( ) ;
CustomActionName = string . Empty ;
2020-03-30 05:38:03 -07:00
}
2020-04-07 10:19:14 -07:00
// converts the current to a json string.
2020-04-02 06:08:56 -07:00
public string ToJsonString ( )
2020-03-24 19:55:02 -07:00
{
return JsonSerializer . Serialize ( this ) ;
}
2020-05-05 16:01:55 -07:00
2020-10-09 17:58:52 -07:00
private static string DefaultPowertoysVersion ( )
2020-05-05 16:01:55 -07:00
{
return interop . CommonManaged . GetProductVersion ( ) ;
}
2020-09-23 13:20:32 -07:00
// 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
{
2020-10-08 16:34:19 -07:00
if ( Helper . CompareVersions ( PowertoysVersion , Helper . GetProductVersion ( ) ) ! = 0 )
2020-09-23 13:20:32 -07:00
{
// 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 ;
}
2020-03-24 19:55:02 -07:00
}
}