ModuleHelper.cs
1 // Copyright (c) Microsoft Corporation 2 // The Microsoft Corporation licenses this file to you under the MIT license. 3 // See the LICENSE file in the project root for more information. 4 5 using ManagedCommon; 6 7 namespace Microsoft.PowerToys.Settings.UI.Library.Helpers 8 { 9 public static class ModuleHelper 10 { 11 public static string GetModuleLabelResourceName(ModuleType moduleType) 12 { 13 return moduleType switch 14 { 15 ModuleType.Workspaces => "Workspaces/ModuleTitle", 16 ModuleType.PowerAccent => "QuickAccent/ModuleTitle", 17 ModuleType.PowerOCR => "TextExtractor/ModuleTitle", 18 ModuleType.FindMyMouse => "MouseUtils_FindMyMouse/Header", 19 ModuleType.MouseHighlighter => "MouseUtils_MouseHighlighter/Header", 20 ModuleType.MouseJump => "MouseUtils_MouseJump/Header", 21 ModuleType.MousePointerCrosshairs => "MouseUtils_MousePointerCrosshairs/Header", 22 ModuleType.CursorWrap => "MouseUtils_CursorWrap/Header", 23 ModuleType.GeneralSettings => "QuickAccessTitle/Title", 24 _ => $"{moduleType}/ModuleTitle", 25 }; 26 } 27 28 public static string GetModuleTypeFluentIconName(ModuleType moduleType) 29 { 30 return moduleType switch 31 { 32 ModuleType.AdvancedPaste => "ms-appx:///Assets/Settings/Icons/AdvancedPaste.png", 33 ModuleType.Workspaces => "ms-appx:///Assets/Settings/Icons/Workspaces.png", 34 ModuleType.PowerOCR => "ms-appx:///Assets/Settings/Icons/TextExtractor.png", 35 ModuleType.PowerAccent => "ms-appx:///Assets/Settings/Icons/QuickAccent.png", 36 ModuleType.MousePointerCrosshairs => "ms-appx:///Assets/Settings/Icons/MouseCrosshairs.png", 37 ModuleType.MeasureTool => "ms-appx:///Assets/Settings/Icons/ScreenRuler.png", 38 ModuleType.PowerLauncher => "ms-appx:///Assets/Settings/Icons/PowerToysRun.png", 39 ModuleType.GeneralSettings => "ms-appx:///Assets/Settings/Icons/PowerToys.png", 40 _ => $"ms-appx:///Assets/Settings/Icons/{moduleType}.png", 41 }; 42 } 43 44 public static bool GetIsModuleEnabled(GeneralSettings generalSettingsConfig, ModuleType moduleType) 45 { 46 return moduleType switch 47 { 48 ModuleType.AdvancedPaste => generalSettingsConfig.Enabled.AdvancedPaste, 49 ModuleType.AlwaysOnTop => generalSettingsConfig.Enabled.AlwaysOnTop, 50 ModuleType.Awake => generalSettingsConfig.Enabled.Awake, 51 ModuleType.CmdPal => generalSettingsConfig.Enabled.CmdPal, 52 ModuleType.ColorPicker => generalSettingsConfig.Enabled.ColorPicker, 53 ModuleType.CropAndLock => generalSettingsConfig.Enabled.CropAndLock, 54 ModuleType.CursorWrap => generalSettingsConfig.Enabled.CursorWrap, 55 ModuleType.EnvironmentVariables => generalSettingsConfig.Enabled.EnvironmentVariables, 56 ModuleType.FancyZones => generalSettingsConfig.Enabled.FancyZones, 57 ModuleType.FileLocksmith => generalSettingsConfig.Enabled.FileLocksmith, 58 ModuleType.FindMyMouse => generalSettingsConfig.Enabled.FindMyMouse, 59 ModuleType.Hosts => generalSettingsConfig.Enabled.Hosts, 60 ModuleType.ImageResizer => generalSettingsConfig.Enabled.ImageResizer, 61 ModuleType.KeyboardManager => generalSettingsConfig.Enabled.KeyboardManager, 62 ModuleType.LightSwitch => generalSettingsConfig.Enabled.LightSwitch, 63 ModuleType.MouseHighlighter => generalSettingsConfig.Enabled.MouseHighlighter, 64 ModuleType.MouseJump => generalSettingsConfig.Enabled.MouseJump, 65 ModuleType.MousePointerCrosshairs => generalSettingsConfig.Enabled.MousePointerCrosshairs, 66 ModuleType.MouseWithoutBorders => generalSettingsConfig.Enabled.MouseWithoutBorders, 67 ModuleType.NewPlus => generalSettingsConfig.Enabled.NewPlus, 68 ModuleType.Peek => generalSettingsConfig.Enabled.Peek, 69 ModuleType.PowerRename => generalSettingsConfig.Enabled.PowerRename, 70 ModuleType.PowerLauncher => generalSettingsConfig.Enabled.PowerLauncher, 71 ModuleType.PowerAccent => generalSettingsConfig.Enabled.PowerAccent, 72 ModuleType.RegistryPreview => generalSettingsConfig.Enabled.RegistryPreview, 73 ModuleType.MeasureTool => generalSettingsConfig.Enabled.MeasureTool, 74 ModuleType.ShortcutGuide => generalSettingsConfig.Enabled.ShortcutGuide, 75 ModuleType.PowerOCR => generalSettingsConfig.Enabled.PowerOcr, 76 ModuleType.PowerDisplay => generalSettingsConfig.Enabled.PowerDisplay, 77 ModuleType.Workspaces => generalSettingsConfig.Enabled.Workspaces, 78 ModuleType.ZoomIt => generalSettingsConfig.Enabled.ZoomIt, 79 ModuleType.GeneralSettings => generalSettingsConfig.EnableQuickAccess, 80 _ => false, 81 }; 82 } 83 84 public static void SetIsModuleEnabled(GeneralSettings generalSettingsConfig, ModuleType moduleType, bool isEnabled) 85 { 86 switch (moduleType) 87 { 88 case ModuleType.AdvancedPaste: generalSettingsConfig.Enabled.AdvancedPaste = isEnabled; break; 89 case ModuleType.AlwaysOnTop: generalSettingsConfig.Enabled.AlwaysOnTop = isEnabled; break; 90 case ModuleType.Awake: generalSettingsConfig.Enabled.Awake = isEnabled; break; 91 case ModuleType.CmdPal: generalSettingsConfig.Enabled.CmdPal = isEnabled; break; 92 case ModuleType.ColorPicker: generalSettingsConfig.Enabled.ColorPicker = isEnabled; break; 93 case ModuleType.CropAndLock: generalSettingsConfig.Enabled.CropAndLock = isEnabled; break; 94 case ModuleType.CursorWrap: generalSettingsConfig.Enabled.CursorWrap = isEnabled; break; 95 case ModuleType.EnvironmentVariables: generalSettingsConfig.Enabled.EnvironmentVariables = isEnabled; break; 96 case ModuleType.FancyZones: generalSettingsConfig.Enabled.FancyZones = isEnabled; break; 97 case ModuleType.FileLocksmith: generalSettingsConfig.Enabled.FileLocksmith = isEnabled; break; 98 case ModuleType.FindMyMouse: generalSettingsConfig.Enabled.FindMyMouse = isEnabled; break; 99 case ModuleType.Hosts: generalSettingsConfig.Enabled.Hosts = isEnabled; break; 100 case ModuleType.ImageResizer: generalSettingsConfig.Enabled.ImageResizer = isEnabled; break; 101 case ModuleType.KeyboardManager: generalSettingsConfig.Enabled.KeyboardManager = isEnabled; break; 102 case ModuleType.LightSwitch: generalSettingsConfig.Enabled.LightSwitch = isEnabled; break; 103 case ModuleType.MouseHighlighter: generalSettingsConfig.Enabled.MouseHighlighter = isEnabled; break; 104 case ModuleType.MouseJump: generalSettingsConfig.Enabled.MouseJump = isEnabled; break; 105 case ModuleType.MousePointerCrosshairs: generalSettingsConfig.Enabled.MousePointerCrosshairs = isEnabled; break; 106 case ModuleType.MouseWithoutBorders: generalSettingsConfig.Enabled.MouseWithoutBorders = isEnabled; break; 107 case ModuleType.NewPlus: generalSettingsConfig.Enabled.NewPlus = isEnabled; break; 108 case ModuleType.Peek: generalSettingsConfig.Enabled.Peek = isEnabled; break; 109 case ModuleType.PowerRename: generalSettingsConfig.Enabled.PowerRename = isEnabled; break; 110 case ModuleType.PowerLauncher: generalSettingsConfig.Enabled.PowerLauncher = isEnabled; break; 111 case ModuleType.PowerAccent: generalSettingsConfig.Enabled.PowerAccent = isEnabled; break; 112 case ModuleType.RegistryPreview: generalSettingsConfig.Enabled.RegistryPreview = isEnabled; break; 113 case ModuleType.MeasureTool: generalSettingsConfig.Enabled.MeasureTool = isEnabled; break; 114 case ModuleType.ShortcutGuide: generalSettingsConfig.Enabled.ShortcutGuide = isEnabled; break; 115 case ModuleType.PowerOCR: generalSettingsConfig.Enabled.PowerOcr = isEnabled; break; 116 case ModuleType.PowerDisplay: generalSettingsConfig.Enabled.PowerDisplay = isEnabled; break; 117 case ModuleType.Workspaces: generalSettingsConfig.Enabled.Workspaces = isEnabled; break; 118 case ModuleType.ZoomIt: generalSettingsConfig.Enabled.ZoomIt = isEnabled; break; 119 case ModuleType.GeneralSettings: generalSettingsConfig.EnableQuickAccess = isEnabled; break; 120 } 121 } 122 123 /// <summary> 124 /// Gets the module key name used in IPC messages and settings JSON. 125 /// These names match the JsonPropertyName attributes in EnabledModules class. 126 /// </summary> 127 public static string GetModuleKey(ModuleType moduleType) 128 { 129 return moduleType switch 130 { 131 ModuleType.AdvancedPaste => AdvancedPasteSettings.ModuleName, 132 ModuleType.AlwaysOnTop => AlwaysOnTopSettings.ModuleName, 133 ModuleType.Awake => AwakeSettings.ModuleName, 134 ModuleType.CmdPal => "CmdPal", // No dedicated settings class 135 ModuleType.ColorPicker => ColorPickerSettings.ModuleName, 136 ModuleType.CropAndLock => CropAndLockSettings.ModuleName, 137 ModuleType.CursorWrap => CursorWrapSettings.ModuleName, 138 ModuleType.EnvironmentVariables => EnvironmentVariablesSettings.ModuleName, 139 ModuleType.FancyZones => FancyZonesSettings.ModuleName, 140 ModuleType.FileLocksmith => FileLocksmithSettings.ModuleName, 141 ModuleType.FindMyMouse => FindMyMouseSettings.ModuleName, 142 ModuleType.Hosts => HostsSettings.ModuleName, 143 ModuleType.ImageResizer => ImageResizerSettings.ModuleName, 144 ModuleType.KeyboardManager => KeyboardManagerSettings.ModuleName, 145 ModuleType.LightSwitch => LightSwitchSettings.ModuleName, 146 ModuleType.MouseHighlighter => MouseHighlighterSettings.ModuleName, 147 ModuleType.MouseJump => MouseJumpSettings.ModuleName, 148 ModuleType.MousePointerCrosshairs => MousePointerCrosshairsSettings.ModuleName, 149 ModuleType.MouseWithoutBorders => MouseWithoutBordersSettings.ModuleName, 150 ModuleType.NewPlus => NewPlusSettings.ModuleName, 151 ModuleType.Peek => PeekSettings.ModuleName, 152 ModuleType.PowerRename => PowerRenameSettings.ModuleName, 153 ModuleType.PowerLauncher => PowerLauncherSettings.ModuleName, 154 ModuleType.PowerAccent => PowerAccentSettings.ModuleName, 155 ModuleType.RegistryPreview => RegistryPreviewSettings.ModuleName, 156 ModuleType.MeasureTool => MeasureToolSettings.ModuleName, 157 ModuleType.ShortcutGuide => ShortcutGuideSettings.ModuleName, 158 ModuleType.PowerOCR => PowerOcrSettings.ModuleName, 159 ModuleType.Workspaces => WorkspacesSettings.ModuleName, 160 ModuleType.ZoomIt => ZoomItSettings.ModuleName, 161 _ => moduleType.ToString(), 162 }; 163 } 164 } 165 }