mirror of
https://github.com/microsoft/PowerToys
synced 2025-09-02 07:25:10 +00:00
[runner] Enable opening specific settings page (#13476)
* [runner] Enable opening specific settings page * Error handling * Spellcheck * Address PR comments
This commit is contained in:
@@ -23,6 +23,7 @@
|
||||
#include <common/utils/winapi_error.h>
|
||||
#include <common/updating/updateState.h>
|
||||
#include <common/themes/windows_colors.h>
|
||||
#include "settings_window.h"
|
||||
|
||||
#define BUFSIZE 1024
|
||||
|
||||
@@ -259,7 +260,7 @@ BOOL run_settings_non_elevated(LPCWSTR executable_path, LPWSTR executable_args,
|
||||
|
||||
DWORD g_settings_process_id = 0;
|
||||
|
||||
void run_settings_window(bool showOobeWindow)
|
||||
void run_settings_window(bool show_oobe_window, std::optional<std::wstring> settings_window)
|
||||
{
|
||||
g_isLaunchInProgress = true;
|
||||
|
||||
@@ -324,7 +325,7 @@ void run_settings_window(bool showOobeWindow)
|
||||
std::wstring settings_isUserAnAdmin = isAdmin ? L"true" : L"false";
|
||||
|
||||
// Arg 8: should oobe window be shown
|
||||
std::wstring settings_showOobe = showOobeWindow ? L"true" : L"false";
|
||||
std::wstring settings_showOobe = show_oobe_window ? L"true" : L"false";
|
||||
|
||||
// create general settings file to initialize the settings file with installation configurations like :
|
||||
// 1. Run on start up.
|
||||
@@ -347,6 +348,12 @@ void run_settings_window(bool showOobeWindow)
|
||||
executable_args.append(L" ");
|
||||
executable_args.append(settings_showOobe);
|
||||
|
||||
if (settings_window.has_value())
|
||||
{
|
||||
executable_args.append(L" ");
|
||||
executable_args.append(settings_window.value());
|
||||
}
|
||||
|
||||
BOOL process_created = false;
|
||||
|
||||
if (is_process_elevated())
|
||||
@@ -462,7 +469,7 @@ void bring_settings_to_front()
|
||||
EnumWindows(callback, 0);
|
||||
}
|
||||
|
||||
void open_settings_window()
|
||||
void open_settings_window(std::optional<std::wstring> settings_window)
|
||||
{
|
||||
if (g_settings_process_id != 0)
|
||||
{
|
||||
@@ -472,8 +479,8 @@ void open_settings_window()
|
||||
{
|
||||
if (!g_isLaunchInProgress)
|
||||
{
|
||||
std::thread([]() {
|
||||
run_settings_window(false);
|
||||
std::thread([settings_window]() {
|
||||
run_settings_window(false, settings_window);
|
||||
}).detach();
|
||||
}
|
||||
}
|
||||
@@ -494,6 +501,96 @@ void close_settings_window()
|
||||
void open_oobe_window()
|
||||
{
|
||||
std::thread([]() {
|
||||
run_settings_window(true);
|
||||
run_settings_window(true, std::nullopt);
|
||||
}).detach();
|
||||
}
|
||||
|
||||
std::string ESettingsWindowNames_to_string(ESettingsWindowNames value)
|
||||
{
|
||||
switch (value)
|
||||
{
|
||||
case ESettingsWindowNames::Overview:
|
||||
return "Overview";
|
||||
case ESettingsWindowNames::Awake:
|
||||
return "Awake";
|
||||
case ESettingsWindowNames::ColorPicker:
|
||||
return "ColorPicker";
|
||||
case ESettingsWindowNames::FancyZones:
|
||||
return "FancyZones";
|
||||
case ESettingsWindowNames::Run:
|
||||
return "Run";
|
||||
case ESettingsWindowNames::ImageResizer:
|
||||
return "ImageResizer";
|
||||
case ESettingsWindowNames::KBM:
|
||||
return "KBM";
|
||||
case ESettingsWindowNames::PowerRename:
|
||||
return "PowerRename";
|
||||
case ESettingsWindowNames::FileExplorer:
|
||||
return "FileExplorer";
|
||||
case ESettingsWindowNames::ShortcutGuide:
|
||||
return "ShortcutGuide";
|
||||
case ESettingsWindowNames::VideoConference:
|
||||
return "VideoConference";
|
||||
default:
|
||||
{
|
||||
Logger::error(L"Can't convert ESettingsWindowNames value={} to string", static_cast<int>(value));
|
||||
assert(false);
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
ESettingsWindowNames ESettingsWindowNames_from_string(std::string value)
|
||||
{
|
||||
if (value == "Overview")
|
||||
{
|
||||
return ESettingsWindowNames::Overview;
|
||||
}
|
||||
else if (value == "Awake")
|
||||
{
|
||||
return ESettingsWindowNames::Awake;
|
||||
}
|
||||
else if (value == "ColorPicker")
|
||||
{
|
||||
return ESettingsWindowNames::ColorPicker;
|
||||
}
|
||||
else if (value == "FancyZones")
|
||||
{
|
||||
return ESettingsWindowNames::FancyZones;
|
||||
}
|
||||
else if (value == "Run")
|
||||
{
|
||||
return ESettingsWindowNames::Run;
|
||||
}
|
||||
else if (value == "ImageResizer")
|
||||
{
|
||||
return ESettingsWindowNames::ImageResizer;
|
||||
}
|
||||
else if (value == "KBM")
|
||||
{
|
||||
return ESettingsWindowNames::KBM;
|
||||
}
|
||||
else if (value == "PowerRename")
|
||||
{
|
||||
return ESettingsWindowNames::PowerRename;
|
||||
}
|
||||
else if (value == "FileExplorer")
|
||||
{
|
||||
return ESettingsWindowNames::FileExplorer;
|
||||
}
|
||||
else if (value == "ShortcutGuide")
|
||||
{
|
||||
return ESettingsWindowNames::ShortcutGuide;
|
||||
}
|
||||
else if (value == "VideoConference")
|
||||
{
|
||||
return ESettingsWindowNames::VideoConference;
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger::error(L"Can't convert string value={} to ESettingsWindowNames", winrt::to_hstring(value));
|
||||
assert(false);
|
||||
}
|
||||
|
||||
return ESettingsWindowNames::Overview;
|
||||
}
|
||||
|
Reference in New Issue
Block a user