[FancyZones] Remove resolution from "device-id" (#17412)

* removed resolution from device id

* update applied layouts device id

* app zone history device id updated

* moved old device id parsing

* updated tests

* remove resolution in the editor

* remove resolution from device id generation

* update editor params
This commit is contained in:
Seraphima Zykova
2022-04-07 11:48:29 +02:00
committed by GitHub
parent 529bccc0bf
commit 98268cc10a
19 changed files with 969 additions and 928 deletions

View File

@@ -11,7 +11,9 @@ namespace FancyZonesEditor.Utils
{
public class Device
{
public string Id { get; set; }
public string MonitorName { get; set; }
public string VirtualDesktopId { get; set; }
public Rect UnscaledBounds { get; private set; }
@@ -21,9 +23,10 @@ namespace FancyZonesEditor.Utils
public int Dpi { get; set; }
public Device(string id, int dpi, Rect bounds, Rect workArea)
public Device(string monitorName, string virtualDesktopId, int dpi, Rect bounds, Rect workArea)
{
Id = id;
MonitorName = monitorName;
VirtualDesktopId = virtualDesktopId;
Dpi = dpi;
WorkAreaRect = workArea;
UnscaledBounds = bounds;
@@ -55,7 +58,8 @@ namespace FancyZonesEditor.Utils
{
var sb = new StringBuilder();
sb.AppendFormat(CultureInfo.InvariantCulture, "ID: {0}{1}", Id, Environment.NewLine);
sb.AppendFormat(CultureInfo.InvariantCulture, "MonitorName: {0}{1}", MonitorName, Environment.NewLine);
sb.AppendFormat(CultureInfo.InvariantCulture, "Virtual desktop: {0}{1}", VirtualDesktopId, Environment.NewLine);
sb.AppendFormat(CultureInfo.InvariantCulture, "DPI: {0}{1}", Dpi, Environment.NewLine);
string workArea = string.Format(CultureInfo.InvariantCulture, "({0}, {1}, {2}, {3})", WorkAreaRect.X, WorkAreaRect.Y, WorkAreaRect.Width, WorkAreaRect.Height);

View File

@@ -41,10 +41,10 @@ namespace FancyZonesEditor.Models
Window.Height = workArea.Height;
}
public Monitor(string id, int dpi, Rect bounds, Rect workArea)
public Monitor(string monitorName, string virtualDesktop, int dpi, Rect bounds, Rect workArea)
: this(bounds, workArea)
{
Device = new Device(id, dpi, bounds, workArea);
Device = new Device(monitorName, virtualDesktop, dpi, bounds, workArea);
}
public void Scale(double scaleFactor)

View File

@@ -75,7 +75,9 @@ namespace FancyZonesEditor.Utils
// parsing cmd args
private struct NativeMonitorData
{
public string MonitorId { get; set; }
public string Monitor { get; set; }
public string VirtualDesktop { get; set; }
public int Dpi { get; set; }
@@ -94,8 +96,10 @@ namespace FancyZonesEditor.Utils
var sb = new StringBuilder();
// using CultureInfo.InvariantCulture since this is internal data
sb.Append("ID: ");
sb.AppendLine(MonitorId);
sb.Append("Monitor: ");
sb.AppendLine(Monitor);
sb.Append("Virtual desktop: ");
sb.AppendLine(VirtualDesktop);
sb.Append("DPI: ");
sb.AppendLine(Dpi.ToString(CultureInfo.InvariantCulture));
@@ -111,6 +115,13 @@ namespace FancyZonesEditor.Utils
// applied-layouts.json
private struct AppliedLayoutWrapper
{
public struct DeviceIdWrapper
{
public string Monitor { get; set; }
public string VirtualDesktop { get; set; }
}
public struct LayoutWrapper
{
public string Uuid { get; set; }
@@ -126,7 +137,7 @@ namespace FancyZonesEditor.Utils
public int SensitivityRadius { get; set; }
}
public string DeviceId { get; set; }
public DeviceIdWrapper Device { get; set; }
public LayoutWrapper AppliedLayout { get; set; }
}
@@ -329,7 +340,7 @@ namespace FancyZonesEditor.Utils
for (int i = 0; i < count; i++)
{
var nativeData = default(NativeMonitorData);
nativeData.MonitorId = argsParts[(int)CmdArgs.MonitorId + (i * monitorArgsCount)];
nativeData.Monitor = argsParts[(int)CmdArgs.MonitorId + (i * monitorArgsCount)];
nativeData.Dpi = int.Parse(argsParts[(int)CmdArgs.DPI + (i * monitorArgsCount)], CultureInfo.InvariantCulture);
nativeData.LeftCoordinate = int.Parse(argsParts[(int)CmdArgs.MonitorLeft + (i * monitorArgsCount)], CultureInfo.InvariantCulture);
nativeData.TopCoordinate = int.Parse(argsParts[(int)CmdArgs.MonitorTop + (i * monitorArgsCount)], CultureInfo.InvariantCulture);
@@ -346,14 +357,13 @@ namespace FancyZonesEditor.Utils
{
foreach (NativeMonitorData nativeData in nativeMonitorData)
{
var splittedId = nativeData.MonitorId.Split('_');
int width = int.Parse(splittedId[1], CultureInfo.InvariantCulture);
int height = int.Parse(splittedId[2], CultureInfo.InvariantCulture);
var splittedId = nativeData.Monitor.Split('_');
Rect bounds = new Rect(nativeData.LeftCoordinate, nativeData.TopCoordinate, nativeData.Width, nativeData.Height);
Monitor monitor = new Monitor(bounds, bounds);
monitor.Device.Id = nativeData.MonitorId;
monitor.Device.MonitorName = nativeData.Monitor.Substring(0, nativeData.Monitor.LastIndexOf("_", StringComparison.Ordinal));
monitor.Device.VirtualDesktopId = nativeData.Monitor.Substring(nativeData.Monitor.LastIndexOf("_", StringComparison.Ordinal) + 1);
monitor.Device.Dpi = nativeData.Dpi;
monitors.Add(monitor);
@@ -366,11 +376,12 @@ namespace FancyZonesEditor.Utils
Rect workArea = new Rect(nativeData.LeftCoordinate, nativeData.TopCoordinate, nativeData.Width, nativeData.Height);
if (nativeData.IsSelected)
{
targetMonitorName = nativeData.MonitorId;
targetMonitorName = nativeData.Monitor;
}
var monitor = new Monitor(workArea, workArea);
monitor.Device.Id = nativeData.MonitorId;
monitor.Device.MonitorName = nativeData.Monitor.Substring(0, nativeData.Monitor.LastIndexOf("_", StringComparison.Ordinal));
monitor.Device.VirtualDesktopId = nativeData.Monitor.Substring(nativeData.Monitor.LastIndexOf("_", StringComparison.Ordinal) + 1);
monitor.Device.Dpi = nativeData.Dpi;
App.Overlay.AddMonitor(monitor);
@@ -381,7 +392,11 @@ namespace FancyZonesEditor.Utils
for (int i = 0; i < monitors.Count; i++)
{
var monitor = monitors[i];
if (monitor.Device.Id == targetMonitorName)
var monitorName = targetMonitorName.Substring(0, targetMonitorName.LastIndexOf("_", StringComparison.Ordinal));
var virtualDesktop = targetMonitorName.Substring(targetMonitorName.LastIndexOf("_", StringComparison.Ordinal) + 1);
if (monitor.Device.MonitorName == monitorName && monitor.Device.VirtualDesktopId == virtualDesktop)
{
App.Overlay.CurrentDesktop = i;
break;
@@ -399,7 +414,7 @@ namespace FancyZonesEditor.Utils
for (int i = 0; i < count; i++)
{
var nativeData = default(NativeMonitorData);
nativeData.MonitorId = argsParts[(int)CmdArgs.MonitorId + (i * monitorArgsCount)];
nativeData.Monitor = argsParts[(int)CmdArgs.MonitorId + (i * monitorArgsCount)];
nativeData.Dpi = int.Parse(argsParts[(int)CmdArgs.DPI + (i * monitorArgsCount)], CultureInfo.InvariantCulture);
nativeData.LeftCoordinate = int.Parse(argsParts[(int)CmdArgs.MonitorLeft + (i * monitorArgsCount)], CultureInfo.InvariantCulture);
nativeData.TopCoordinate = int.Parse(argsParts[(int)CmdArgs.MonitorTop + (i * monitorArgsCount)], CultureInfo.InvariantCulture);
@@ -419,7 +434,11 @@ namespace FancyZonesEditor.Utils
}
var monitor = new Monitor(workAreaUnion, workAreaUnion);
monitor.Device.Id = targetMonitorName;
var monitorName = targetMonitorName.Substring(0, targetMonitorName.LastIndexOf("_", StringComparison.Ordinal));
var virtualDesktop = targetMonitorName.Substring(targetMonitorName.LastIndexOf("_", StringComparison.Ordinal) + 1);
monitor.Device.MonitorName = monitorName;
monitor.Device.VirtualDesktopId = virtualDesktop;
App.Overlay.Monitors.Add(monitor);
}
@@ -453,18 +472,21 @@ namespace FancyZonesEditor.Utils
if (!App.Overlay.SpanZonesAcrossMonitors)
{
string targetMonitorName = string.Empty;
string targetMonitorId = string.Empty;
string targetVirtualDesktop = string.Empty;
foreach (NativeMonitorData nativeData in editorParams.Monitors)
{
Rect workArea = new Rect(nativeData.LeftCoordinate, nativeData.TopCoordinate, nativeData.Width, nativeData.Height);
if (nativeData.IsSelected)
{
targetMonitorName = nativeData.MonitorId;
targetMonitorId = nativeData.Monitor;
targetVirtualDesktop = nativeData.VirtualDesktop;
}
var monitor = new Monitor(workArea, workArea);
monitor.Device.Id = nativeData.MonitorId;
monitor.Device.MonitorName = nativeData.Monitor;
monitor.Device.VirtualDesktopId = nativeData.VirtualDesktop;
monitor.Device.Dpi = nativeData.Dpi;
App.Overlay.AddMonitor(monitor);
@@ -475,7 +497,7 @@ namespace FancyZonesEditor.Utils
for (int i = 0; i < monitors.Count; i++)
{
var monitor = monitors[i];
if (monitor.Device.Id == targetMonitorName)
if (monitor.Device.MonitorName == targetMonitorId && monitor.Device.VirtualDesktopId == targetVirtualDesktop)
{
App.Overlay.CurrentDesktop = i;
break;
@@ -493,7 +515,9 @@ namespace FancyZonesEditor.Utils
Rect workArea = new Rect(nativeData.LeftCoordinate, nativeData.TopCoordinate, nativeData.Width, nativeData.Height);
var monitor = new Monitor(workArea, workArea);
monitor.Device.Id = nativeData.MonitorId;
monitor.Device.MonitorName = nativeData.Monitor;
monitor.Device.VirtualDesktopId = nativeData.VirtualDesktop;
App.Overlay.AddMonitor(monitor);
}
}
@@ -688,7 +712,12 @@ namespace FancyZonesEditor.Utils
layouts.AppliedLayouts.Add(new AppliedLayoutWrapper
{
DeviceId = monitor.Device.Id,
Device = new AppliedLayoutWrapper.DeviceIdWrapper
{
Monitor = monitor.Device.MonitorName,
VirtualDesktop = monitor.Device.VirtualDesktopId,
},
AppliedLayout = new AppliedLayoutWrapper.LayoutWrapper
{
Uuid = zoneset.ZonesetUuid,
@@ -936,7 +965,12 @@ namespace FancyZonesEditor.Utils
var monitors = App.Overlay.Monitors;
foreach (var layout in layouts)
{
if (layout.DeviceId == null || layout.DeviceId.Length == 0 || layout.AppliedLayout.Uuid == null || layout.AppliedLayout.Uuid.Length == 0)
if (layout.Device.Monitor == null ||
layout.Device.Monitor.Length == 0 ||
layout.Device.VirtualDesktop == null ||
layout.Device.VirtualDesktop.Length == 0 ||
layout.AppliedLayout.Uuid == null ||
layout.AppliedLayout.Uuid.Length == 0)
{
result = false;
continue;
@@ -945,13 +979,7 @@ namespace FancyZonesEditor.Utils
bool unused = true;
foreach (Monitor monitor in monitors)
{
string deviceIdSaved = monitor.Device.Id.Substring(0, monitor.Device.Id.LastIndexOf("_", StringComparison.Ordinal));
string deviceIdReadFromSettings = layout.DeviceId.Substring(0, layout.DeviceId.LastIndexOf("_", StringComparison.Ordinal));
string virtualDesktopIdSaved = monitor.Device.Id.Substring(monitor.Device.Id.LastIndexOf("_", StringComparison.Ordinal) + 1);
string virtualDesktopIdReadFromSettings = layout.DeviceId.Substring(layout.DeviceId.LastIndexOf("_", StringComparison.Ordinal) + 1);
if (deviceIdSaved == deviceIdReadFromSettings && (virtualDesktopIdSaved == virtualDesktopIdReadFromSettings || virtualDesktopIdReadFromSettings == DefaultVirtualDesktopGuid))
if (monitor.Device.MonitorName == layout.Device.Monitor && (monitor.Device.VirtualDesktopId == layout.Device.VirtualDesktop || layout.Device.VirtualDesktop == DefaultVirtualDesktopGuid))
{
var settings = new LayoutSettings
{