[FancyZones] Editor multi monitor support (#6562)

Co-authored-by: Enrico Giordani <enrico.giordani@gmail.com>
Co-authored-by: Enrico Giordani <enricogior@users.noreply.github.com>
This commit is contained in:
Seraphima Zykova
2020-11-17 11:38:19 +03:00
committed by GitHub
parent 687fc2e169
commit b8e5ccfb7b
88 changed files with 4887 additions and 1503 deletions

View File

@@ -2,6 +2,7 @@
#include "lib\FancyZonesData.h"
#include "lib\FancyZonesDataTypes.h"
#include "lib\JsonHelpers.h"
#include "lib\VirtualDesktopUtils.h"
#include "lib\ZoneSet.h"
#include <filesystem>
@@ -1048,9 +1049,14 @@ namespace FancyZonesUnitTests
//prepare device data
{
const std::wstring zoneUuid = L"default_device_id";
JSONHelpers::DeviceInfoJSON deviceInfo{ zoneUuid, DeviceInfoData{ ZoneSetData{ L"uuid", ZoneSetLayoutType::Custom }, true, 16, 3 } };
JSONHelpers::TDeviceInfoMap deviceInfoMap;
deviceInfoMap.insert(std::make_pair(zoneUuid, DeviceInfoData{ ZoneSetData{ L"uuid", ZoneSetLayoutType::Custom }, true, 16, 3 }));
GUID virtualDesktopId{};
Assert::IsTrue(VirtualDesktopUtils::GetCurrentVirtualDesktopId(&virtualDesktopId), L"Cannot create virtual desktop id");
const std::wstring deviceInfoPath = FancyZonesDataInstance().zonesSettingsFileName + L".device_info_tmp";
JSONHelpers::SerializeDeviceInfoToTmpFile(deviceInfo, deviceInfoPath);
JSONHelpers::SerializeDeviceInfoToTmpFile(deviceInfoMap, virtualDesktopId, deviceInfoPath);
FancyZonesDataInstance().ParseDeviceInfoFromTmpFile(deviceInfoPath);
std::filesystem::remove(deviceInfoPath);
@@ -1060,10 +1066,14 @@ namespace FancyZonesUnitTests
wil::unique_cotaskmem_string uuid;
Assert::AreEqual(S_OK, StringFromCLSID(m_id, &uuid));
const CanvasLayoutInfo info{ 123, 321, { CanvasLayoutInfo::Rect{ 0, 0, 100, 100 }, CanvasLayoutInfo::Rect{ 50, 50, 150, 150 } } };
JSONHelpers::CustomZoneSetJSON expected{ uuid.get(), CustomZoneSetData{ L"name", CustomLayoutType::Canvas, info } };
json::to_file(m_path, JSONHelpers::CustomZoneSetJSON::ToJson(expected));
CustomZoneSetData zoneSetData{ L"name", CustomLayoutType::Canvas, info };
JSONHelpers::CustomZoneSetJSON expected{ uuid.get(), zoneSetData };
JSONHelpers::TCustomZoneSetsMap customZoneSets;
customZoneSets.insert(std::make_pair(uuid.get(), zoneSetData));
JSONHelpers::SerializeCustomZoneSetsToTmpFile(customZoneSets, m_path);
Assert::IsTrue(std::filesystem::exists(m_path));
FancyZonesDataInstance().ParseCustomZoneSetFromTmpFile(m_path);
FancyZonesDataInstance().ParseCustomZoneSetsFromTmpFile(m_path);
//test
const int spacing = 10;
@@ -1083,9 +1093,14 @@ namespace FancyZonesUnitTests
//prepare device data
{
const std::wstring zoneUuid = L"default_device_id";
JSONHelpers::DeviceInfoJSON deviceInfo{ zoneUuid, DeviceInfoData{ ZoneSetData{ L"uuid", ZoneSetLayoutType::Custom }, true, 16, 3 } };
JSONHelpers::TDeviceInfoMap deviceInfoMap;
deviceInfoMap.insert(std::make_pair(zoneUuid, DeviceInfoData{ ZoneSetData{ L"uuid", ZoneSetLayoutType::Custom }, true, 16, 3 }));
GUID virtualDesktopId{};
Assert::IsTrue(VirtualDesktopUtils::GetCurrentVirtualDesktopId(&virtualDesktopId), L"Cannot create virtual desktop id");
const std::wstring deviceInfoPath = FancyZonesDataInstance().zonesSettingsFileName + L".device_info_tmp";
JSONHelpers::SerializeDeviceInfoToTmpFile(deviceInfo, deviceInfoPath);
JSONHelpers::SerializeDeviceInfoToTmpFile(deviceInfoMap, virtualDesktopId, deviceInfoPath);
FancyZonesDataInstance().ParseDeviceInfoFromTmpFile(deviceInfoPath);
std::filesystem::remove(deviceInfoPath);
@@ -1100,10 +1115,14 @@ namespace FancyZonesUnitTests
.rowsPercents = { 10000 },
.columnsPercents = { 2500, 5000, 2500 },
.cellChildMap = { { 0, 1, 2 } } }));
JSONHelpers::CustomZoneSetJSON expected{ uuid.get(), CustomZoneSetData{ L"name", CustomLayoutType::Grid, grid } };
json::to_file(m_path, JSONHelpers::CustomZoneSetJSON::ToJson(expected));
CustomZoneSetData zoneSetData{ L"name", CustomLayoutType::Grid, grid };
JSONHelpers::CustomZoneSetJSON expected{ uuid.get(), zoneSetData };
JSONHelpers::TCustomZoneSetsMap customZoneSets;
customZoneSets.insert(std::make_pair(uuid.get(), zoneSetData));
JSONHelpers::SerializeCustomZoneSetsToTmpFile(customZoneSets, m_path);
Assert::IsTrue(std::filesystem::exists(m_path));
FancyZonesDataInstance().ParseCustomZoneSetFromTmpFile(m_path);
FancyZonesDataInstance().ParseCustomZoneSetsFromTmpFile(m_path);
const int spacing = 10;
const int zoneCount = grid.rows() * grid.columns();