mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-21 14:09:40 +01:00
[Workspaces] Handle admin windows repositioning. (#34965)
This commit is contained in:
@@ -21,12 +21,6 @@ namespace WorkspacesData
|
||||
std::wstring settingsFolderPath = PTSettingsHelper::get_module_save_folder_location(NonLocalizable::ModuleKey);
|
||||
return settingsFolderPath + L"\\temp-workspaces.json";
|
||||
}
|
||||
|
||||
std::wstring LaunchWorkspacesFile()
|
||||
{
|
||||
std::wstring settingsFolderPath = PTSettingsHelper::get_module_save_folder_location(NonLocalizable::ModuleKey);
|
||||
return settingsFolderPath + L"\\launch-workspaces.json";
|
||||
}
|
||||
|
||||
RECT WorkspacesProject::Application::Position::toRect() const noexcept
|
||||
{
|
||||
@@ -420,19 +414,40 @@ namespace WorkspacesData
|
||||
{
|
||||
namespace NonLocalizable
|
||||
{
|
||||
const static wchar_t* NameID = L"name";
|
||||
const static wchar_t* PathID = L"path";
|
||||
const static wchar_t* ApplicationID = L"application";
|
||||
const static wchar_t* StateID = L"state";
|
||||
}
|
||||
|
||||
json::JsonObject ToJson(const AppLaunchInfo& data)
|
||||
json::JsonObject ToJson(const LaunchingAppState& data)
|
||||
{
|
||||
json::JsonObject json{};
|
||||
json.SetNamedValue(NonLocalizable::NameID, json::value(data.name));
|
||||
json.SetNamedValue(NonLocalizable::PathID, json::value(data.path));
|
||||
json.SetNamedValue(NonLocalizable::StateID, json::value(data.state));
|
||||
json.SetNamedValue(NonLocalizable::ApplicationID, WorkspacesProjectJSON::ApplicationJSON::ToJson(data.application));
|
||||
json.SetNamedValue(NonLocalizable::StateID, json::value(static_cast<int>(data.state)));
|
||||
return json;
|
||||
}
|
||||
|
||||
std::optional<LaunchingAppState> FromJson(const json::JsonObject& json)
|
||||
{
|
||||
LaunchingAppState result{};
|
||||
|
||||
try
|
||||
{
|
||||
auto app = WorkspacesProjectJSON::ApplicationJSON::FromJson(json.GetNamedObject(NonLocalizable::ApplicationID));
|
||||
if (!app.has_value())
|
||||
{
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
result.application = app.value();
|
||||
result.state = static_cast<LaunchingState>(json.GetNamedNumber(NonLocalizable::StateID));
|
||||
}
|
||||
catch (const winrt::hresult_error&)
|
||||
{
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
namespace AppLaunchInfoListJSON
|
||||
@@ -442,18 +457,46 @@ namespace WorkspacesData
|
||||
const static wchar_t* AppLaunchInfoID = L"appLaunchInfos";
|
||||
}
|
||||
|
||||
json::JsonObject ToJson(const std::vector<AppLaunchInfo>& data)
|
||||
json::JsonObject ToJson(const LaunchingAppStateMap& data)
|
||||
{
|
||||
json::JsonObject json{};
|
||||
json::JsonArray appLaunchInfoArray{};
|
||||
for (const auto& appLaunchInfo : data)
|
||||
{
|
||||
appLaunchInfoArray.Append(AppLaunchInfoJSON::ToJson(appLaunchInfo));
|
||||
appLaunchInfoArray.Append(AppLaunchInfoJSON::ToJson(appLaunchInfo.second));
|
||||
}
|
||||
|
||||
json.SetNamedValue(NonLocalizable::AppLaunchInfoID, appLaunchInfoArray);
|
||||
return json;
|
||||
}
|
||||
|
||||
std::optional<LaunchingAppStateMap> FromJson(const json::JsonObject& json)
|
||||
{
|
||||
LaunchingAppStateMap result{};
|
||||
|
||||
try
|
||||
{
|
||||
auto array = json.GetNamedArray(NonLocalizable::AppLaunchInfoID);
|
||||
for (uint32_t i = 0; i < array.Size(); ++i)
|
||||
{
|
||||
auto obj = AppLaunchInfoJSON::FromJson(array.GetObjectAt(i));
|
||||
if (obj.has_value())
|
||||
{
|
||||
result.insert({ obj.value().application, obj.value() });
|
||||
}
|
||||
else
|
||||
{
|
||||
return std::nullopt;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (const winrt::hresult_error&)
|
||||
{
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
namespace AppLaunchDataJSON
|
||||
@@ -467,7 +510,7 @@ namespace WorkspacesData
|
||||
json::JsonObject ToJson(const AppLaunchData& data)
|
||||
{
|
||||
json::JsonObject json{};
|
||||
json.SetNamedValue(NonLocalizable::AppsID, AppLaunchInfoListJSON::ToJson(data.appLaunchInfoList));
|
||||
json.SetNamedValue(NonLocalizable::AppsID, AppLaunchInfoListJSON::ToJson(data.appsStateList));
|
||||
json.SetNamedValue(NonLocalizable::ProcessID, json::value(data.launcherProcessID));
|
||||
return json;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user