// 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.Collections.Generic; 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 CursorWrapSettings : BasePTModuleSettings, ISettingsConfig, IHotkeyConfig { public const string ModuleName = "CursorWrap"; [JsonPropertyName("properties")] public CursorWrapProperties Properties { get; set; } public CursorWrapSettings() { Name = ModuleName; Properties = new CursorWrapProperties(); Version = "1.0"; } public string GetModuleName() { return Name; } public ModuleType GetModuleType() => ModuleType.CursorWrap; public HotkeyAccessor[] GetAllHotkeyAccessors() { var hotkeyAccessors = new List { new HotkeyAccessor( () => Properties.ActivationShortcut, value => Properties.ActivationShortcut = value ?? Properties.DefaultActivationShortcut, "MouseUtils_CursorWrap_ActivationShortcut"), }; return hotkeyAccessors.ToArray(); } // This can be utilized in the future if the settings.json file is to be modified/deleted. public bool UpgradeSettingsConfiguration() { bool settingsUpgraded = false; // Add WrapMode property if it doesn't exist (for users upgrading from older versions) if (Properties.WrapMode == null) { Properties.WrapMode = new IntProperty(0); // Default to Both settingsUpgraded = true; } // Add ActivationMode property if it doesn't exist (for users upgrading from older versions) if (Properties.ActivationMode == null) { Properties.ActivationMode = new IntProperty(0); // Default to Always (0=Always, 1=HoldingCtrl, 2=HoldingShift) settingsUpgraded = true; } // Add DisableCursorWrapOnSingleMonitor property if it doesn't exist (for users upgrading from older versions) if (Properties.DisableCursorWrapOnSingleMonitor == null) { Properties.DisableCursorWrapOnSingleMonitor = new BoolProperty(false); // Default to false settingsUpgraded = true; } return settingsUpgraded; } } }