// 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.Collections.Generic; using System.Text.Json; using System.Text.Json.Serialization; using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Library.Helpers; using Microsoft.PowerToys.Settings.UI.Library.Interfaces; namespace Microsoft.PowerToys.Settings.UI.Library { public class PowerLauncherSettings : BasePTModuleSettings, ISettingsConfig, IHotkeyConfig { public const string ModuleName = "PowerToys Run"; private static readonly JsonSerializerOptions _serializerOptions = new JsonSerializerOptions { WriteIndented = true, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, }; [JsonPropertyName("properties")] public PowerLauncherProperties Properties { get; set; } [JsonPropertyName("plugins")] public IEnumerable Plugins { get; set; } = new List(); public PowerLauncherSettings() { Properties = new PowerLauncherProperties(); Version = "1.0"; Name = ModuleName; } public virtual void Save(SettingsUtils settingsUtils) { // Save settings to file var options = _serializerOptions; ArgumentNullException.ThrowIfNull(settingsUtils); settingsUtils.SaveSettings(JsonSerializer.Serialize(this, options), ModuleName); } public string GetModuleName() { return Name; } public ModuleType GetModuleType() => ModuleType.PowerLauncher; public HotkeyAccessor[] GetAllHotkeyAccessors() { var hotkeyAccessors = new List { new HotkeyAccessor( () => Properties.OpenPowerLauncher, value => Properties.OpenPowerLauncher = value ?? Properties.DefaultOpenPowerLauncher, "PowerLauncher_OpenPowerLauncher"), }; return hotkeyAccessors.ToArray(); } // This can be utilized in the future if the settings.json file is to be modified/deleted. public bool UpgradeSettingsConfiguration() { return false; } } }