/ src / settings-ui / Settings.UI.Controls / QuickAccess / QuickAccessLauncher.cs
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  }