[runner] Enable opening specific settings page (#13476)

* [runner] Enable opening specific settings page

* Error handling

* Spellcheck

* Address PR comments
This commit is contained in:
Stefan Markovic
2021-09-29 12:54:05 +02:00
committed by GitHub
parent 1984b3747e
commit 8853adda62
8 changed files with 195 additions and 26 deletions

View File

@@ -18,6 +18,8 @@ namespace PowerToys.Settings
public bool ShowOobe { get; set; }
public Type StartupPage { get; set; } = typeof(Microsoft.PowerToys.Settings.UI.Views.GeneralPage);
public void OpenSettingsWindow(Type type)
{
if (settingsWindow == null)
@@ -47,6 +49,7 @@ namespace PowerToys.Settings
{
settingsWindow = new MainWindow();
settingsWindow.Show();
settingsWindow.NavigateToSection(StartupPage);
}
else
{

View File

@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information.
using System;
using System.Diagnostics;
using System.Windows;
using interop;
using ManagedCommon;
@@ -20,11 +21,12 @@ namespace PowerToys.Settings
ElevatedStatus,
IsUserAdmin,
ShowOobeWindow,
SettingsWindow,
}
// Quantity of arguments
private const int RequiredArgumentsQty = 6;
private const int RequiredAndOptionalArgumentsQty = 7;
private const int RequiredArgumentsQty = 7;
private const int RequiredAndOptionalArgumentsQty = 8;
// Create an instance of the IPC wrapper.
private static TwoWayPipeMessageIPCManaged ipcmanager;
@@ -52,11 +54,26 @@ namespace PowerToys.Settings
IsElevated = args[(int)Arguments.ElevatedStatus] == "true";
IsUserAnAdmin = args[(int)Arguments.IsUserAdmin] == "true";
app.ShowOobe = args[(int)Arguments.ShowOobeWindow] == "true";
if (args.Length == RequiredAndOptionalArgumentsQty)
{
// open oobe window
app.ShowOobe = args[(int)Arguments.ShowOobeWindow] == "true";
// open specific window
switch (args[(int)Arguments.SettingsWindow])
{
case "Overview": app.StartupPage = typeof(Microsoft.PowerToys.Settings.UI.Views.GeneralPage); break;
case "Awake": app.StartupPage = typeof(Microsoft.PowerToys.Settings.UI.Views.AwakePage); break;
case "ColorPicker": app.StartupPage = typeof(Microsoft.PowerToys.Settings.UI.Views.ColorPickerPage); break;
case "FancyZones": app.StartupPage = typeof(Microsoft.PowerToys.Settings.UI.Views.FancyZonesPage); break;
case "Run": app.StartupPage = typeof(Microsoft.PowerToys.Settings.UI.Views.PowerLauncherPage); break;
case "ImageResizer": app.StartupPage = typeof(Microsoft.PowerToys.Settings.UI.Views.ImageResizerPage); break;
case "KBM": app.StartupPage = typeof(Microsoft.PowerToys.Settings.UI.Views.KeyboardManagerPage); break;
case "PowerRename": app.StartupPage = typeof(Microsoft.PowerToys.Settings.UI.Views.PowerRenamePage); break;
case "FileExplorer": app.StartupPage = typeof(Microsoft.PowerToys.Settings.UI.Views.PowerPreviewPage); break;
case "ShortcutGuide": app.StartupPage = typeof(Microsoft.PowerToys.Settings.UI.Views.ShortcutGuidePage); break;
case "VideoConference": app.StartupPage = typeof(Microsoft.PowerToys.Settings.UI.Views.VideoConferencePage); break;
default: Debug.Assert(false, "Unexpected SettingsWindow argument value"); break;
}
}
RunnerHelper.WaitForPowerToysRunner(PowerToysPID, () =>