QuickAccessLauncher.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 System.Threading; 6 using ManagedCommon; 7 using Microsoft.PowerToys.Settings.UI.Library; 8 using PowerToys.Interop; 9 10 namespace Microsoft.PowerToys.Settings.UI.Controls 11 { 12 public class QuickAccessLauncher : IQuickAccessLauncher 13 { 14 private readonly bool _isElevated; 15 16 public QuickAccessLauncher(bool isElevated) 17 { 18 _isElevated = isElevated; 19 } 20 21 public virtual bool Launch(ModuleType moduleType) 22 { 23 switch (moduleType) 24 { 25 case ModuleType.ColorPicker: 26 using (var eventHandle = new EventWaitHandle(false, EventResetMode.AutoReset, Constants.ShowColorPickerSharedEvent())) 27 { 28 eventHandle.Set(); 29 } 30 31 return true; 32 case ModuleType.EnvironmentVariables: 33 { 34 bool launchAdmin = SettingsRepository<EnvironmentVariablesSettings>.GetInstance(SettingsUtils.Default).SettingsConfig.Properties.LaunchAdministrator; 35 string eventName = !_isElevated && launchAdmin 36 ? Constants.ShowEnvironmentVariablesAdminSharedEvent() 37 : Constants.ShowEnvironmentVariablesSharedEvent(); 38 39 using (var eventHandle = new EventWaitHandle(false, EventResetMode.AutoReset, eventName)) 40 { 41 eventHandle.Set(); 42 } 43 } 44 45 return true; 46 case ModuleType.FancyZones: 47 using (var eventHandle = new EventWaitHandle(false, EventResetMode.AutoReset, Constants.FZEToggleEvent())) 48 { 49 eventHandle.Set(); 50 } 51 52 return true; 53 case ModuleType.Hosts: 54 { 55 bool launchAdmin = SettingsRepository<HostsSettings>.GetInstance(SettingsUtils.Default).SettingsConfig.Properties.LaunchAdministrator; 56 string eventName = !_isElevated && launchAdmin 57 ? Constants.ShowHostsAdminSharedEvent() 58 : Constants.ShowHostsSharedEvent(); 59 60 using (var eventHandle = new EventWaitHandle(false, EventResetMode.AutoReset, eventName)) 61 { 62 eventHandle.Set(); 63 } 64 } 65 66 return true; 67 case ModuleType.PowerLauncher: 68 using (var eventHandle = new EventWaitHandle(false, EventResetMode.AutoReset, Constants.PowerLauncherSharedEvent())) 69 { 70 eventHandle.Set(); 71 } 72 73 return true; 74 case ModuleType.PowerOCR: 75 using (var eventHandle = new EventWaitHandle(false, EventResetMode.AutoReset, Constants.ShowPowerOCRSharedEvent())) 76 { 77 eventHandle.Set(); 78 } 79 80 return true; 81 case ModuleType.RegistryPreview: 82 using (var eventHandle = new EventWaitHandle(false, EventResetMode.AutoReset, Constants.RegistryPreviewTriggerEvent())) 83 { 84 eventHandle.Set(); 85 } 86 87 return true; 88 case ModuleType.MeasureTool: 89 using (var eventHandle = new EventWaitHandle(false, EventResetMode.AutoReset, Constants.MeasureToolTriggerEvent())) 90 { 91 eventHandle.Set(); 92 } 93 94 return true; 95 case ModuleType.ShortcutGuide: 96 using (var eventHandle = new EventWaitHandle(false, EventResetMode.AutoReset, Constants.ShortcutGuideTriggerEvent())) 97 { 98 eventHandle.Set(); 99 } 100 101 return true; 102 case ModuleType.CmdPal: 103 using (var eventHandle = new EventWaitHandle(false, EventResetMode.AutoReset, Constants.ShowCmdPalEvent())) 104 { 105 eventHandle.Set(); 106 } 107 108 return true; 109 case ModuleType.Workspaces: 110 using (var eventHandle = new EventWaitHandle(false, EventResetMode.AutoReset, Constants.WorkspacesLaunchEditorEvent())) 111 { 112 eventHandle.Set(); 113 } 114 115 return true; 116 case ModuleType.LightSwitch: 117 using (var eventHandle = new EventWaitHandle(false, EventResetMode.AutoReset, Constants.LightSwitchToggleEvent())) 118 { 119 eventHandle.Set(); 120 } 121 122 return true; 123 case ModuleType.PowerDisplay: 124 using (var eventHandle = new EventWaitHandle(false, EventResetMode.AutoReset, Constants.TogglePowerDisplayEvent())) 125 { 126 eventHandle.Set(); 127 } 128 129 return true; 130 default: 131 return false; 132 } 133 } 134 } 135 }