mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-07 19:57:07 +02:00
[FancyZones Editor] Highlight the user-defined default layout when no layout applied (#27879)
This commit is contained in:
@@ -171,5 +171,20 @@ LayoutData DefaultLayouts::GetDefaultLayout(MonitorConfigurationType type) const
|
|||||||
return iter->second;
|
return iter->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case MonitorConfigurationType::Horizontal:
|
||||||
|
return LayoutData{};
|
||||||
|
case MonitorConfigurationType::Vertical:
|
||||||
|
return LayoutData{
|
||||||
|
.uuid = GUID_NULL,
|
||||||
|
.type = FancyZonesDataTypes::ZoneSetLayoutType::Rows,
|
||||||
|
.showSpacing = DefaultValues::ShowSpacing,
|
||||||
|
.spacing = DefaultValues::Spacing,
|
||||||
|
.zoneCount = DefaultValues::ZoneCount,
|
||||||
|
.sensitivityRadius = DefaultValues::SensitivityRadius
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
return LayoutData{};
|
return LayoutData{};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,15 +96,21 @@ namespace FancyZonesUnitTests
|
|||||||
.sensitivityRadius = DefaultValues::SensitivityRadius
|
.sensitivityRadius = DefaultValues::SensitivityRadius
|
||||||
};
|
};
|
||||||
|
|
||||||
|
LayoutData rows{
|
||||||
|
.uuid = GUID_NULL,
|
||||||
|
.type = FancyZonesDataTypes::ZoneSetLayoutType::Rows,
|
||||||
|
.showSpacing = DefaultValues::ShowSpacing,
|
||||||
|
.spacing = DefaultValues::Spacing,
|
||||||
|
.zoneCount = DefaultValues::ZoneCount,
|
||||||
|
.sensitivityRadius = DefaultValues::SensitivityRadius
|
||||||
|
};
|
||||||
|
|
||||||
Assert::IsTrue(priorityGrid == DefaultLayouts::instance().GetDefaultLayout(MonitorConfigurationType::Horizontal));
|
Assert::IsTrue(priorityGrid == DefaultLayouts::instance().GetDefaultLayout(MonitorConfigurationType::Horizontal));
|
||||||
Assert::IsTrue(priorityGrid == DefaultLayouts::instance().GetDefaultLayout(MonitorConfigurationType::Vertical));
|
Assert::IsTrue(rows == DefaultLayouts::instance().GetDefaultLayout(MonitorConfigurationType::Vertical));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_METHOD (DefaultLayoutsNoFile)
|
TEST_METHOD (DefaultLayoutsNoFile)
|
||||||
{
|
{
|
||||||
// test
|
|
||||||
DefaultLayouts::instance().LoadData();
|
|
||||||
|
|
||||||
LayoutData priorityGrid{
|
LayoutData priorityGrid{
|
||||||
.uuid = GUID_NULL,
|
.uuid = GUID_NULL,
|
||||||
.type = FancyZonesDataTypes::ZoneSetLayoutType::PriorityGrid,
|
.type = FancyZonesDataTypes::ZoneSetLayoutType::PriorityGrid,
|
||||||
@@ -114,8 +120,20 @@ namespace FancyZonesUnitTests
|
|||||||
.sensitivityRadius = DefaultValues::SensitivityRadius
|
.sensitivityRadius = DefaultValues::SensitivityRadius
|
||||||
};
|
};
|
||||||
|
|
||||||
|
LayoutData rows{
|
||||||
|
.uuid = GUID_NULL,
|
||||||
|
.type = FancyZonesDataTypes::ZoneSetLayoutType::Rows,
|
||||||
|
.showSpacing = DefaultValues::ShowSpacing,
|
||||||
|
.spacing = DefaultValues::Spacing,
|
||||||
|
.zoneCount = DefaultValues::ZoneCount,
|
||||||
|
.sensitivityRadius = DefaultValues::SensitivityRadius
|
||||||
|
};
|
||||||
|
|
||||||
|
// test
|
||||||
|
DefaultLayouts::instance().LoadData();
|
||||||
|
|
||||||
Assert::IsTrue(priorityGrid == DefaultLayouts::instance().GetDefaultLayout(MonitorConfigurationType::Horizontal));
|
Assert::IsTrue(priorityGrid == DefaultLayouts::instance().GetDefaultLayout(MonitorConfigurationType::Horizontal));
|
||||||
Assert::IsTrue(priorityGrid == DefaultLayouts::instance().GetDefaultLayout(MonitorConfigurationType::Vertical));
|
Assert::IsTrue(rows == DefaultLayouts::instance().GetDefaultLayout(MonitorConfigurationType::Vertical));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -78,8 +78,6 @@ namespace FancyZonesEditor
|
|||||||
|
|
||||||
_themeManager = new ThemeManager(this);
|
_themeManager = new ThemeManager(this);
|
||||||
|
|
||||||
var parseResult = FancyZonesEditorIO.ParseParams();
|
|
||||||
|
|
||||||
RunnerHelper.WaitForPowerToysRunner(PowerToysPID, () =>
|
RunnerHelper.WaitForPowerToysRunner(PowerToysPID, () =>
|
||||||
{
|
{
|
||||||
Logger.LogInfo("Runner exited");
|
Logger.LogInfo("Runner exited");
|
||||||
@@ -87,27 +85,8 @@ namespace FancyZonesEditor
|
|||||||
Application.Current.Dispatcher.Invoke(Application.Current.Shutdown);
|
Application.Current.Dispatcher.Invoke(Application.Current.Shutdown);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!parseResult.Result)
|
var parseResult = FancyZonesEditorIO.ParseParams();
|
||||||
{
|
|
||||||
Logger.LogError(ParsingErrorReportTag + ": " + parseResult.Message + "; " + ParsingErrorDataTag + ": " + parseResult.MalformedData);
|
|
||||||
MessageBox.Show(parseResult.Message, FancyZonesEditor.Properties.Resources.Error_Parsing_Data_Title, MessageBoxButton.OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
parseResult = FancyZonesEditorIO.ParseAppliedLayouts();
|
|
||||||
if (!parseResult.Result)
|
|
||||||
{
|
|
||||||
Logger.LogError(ParsingErrorReportTag + ": " + parseResult.Message + "; " + ParsingErrorDataTag + ": " + parseResult.MalformedData);
|
|
||||||
MessageBox.Show(parseResult.Message, FancyZonesEditor.Properties.Resources.Error_Parsing_Data_Title, MessageBoxButton.OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
parseResult = FancyZonesEditorIO.ParseCustomLayouts();
|
|
||||||
if (!parseResult.Result)
|
|
||||||
{
|
|
||||||
Logger.LogError(ParsingErrorReportTag + ": " + parseResult.Message + "; " + ParsingErrorDataTag + ": " + parseResult.MalformedData);
|
|
||||||
MessageBox.Show(parseResult.Message, FancyZonesEditor.Properties.Resources.Error_Parsing_Data_Title, MessageBoxButton.OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
parseResult = FancyZonesEditorIO.ParseLayoutHotkeys();
|
|
||||||
if (!parseResult.Result)
|
if (!parseResult.Result)
|
||||||
{
|
{
|
||||||
Logger.LogError(ParsingErrorReportTag + ": " + parseResult.Message + "; " + ParsingErrorDataTag + ": " + parseResult.MalformedData);
|
Logger.LogError(ParsingErrorReportTag + ": " + parseResult.Message + "; " + ParsingErrorDataTag + ": " + parseResult.MalformedData);
|
||||||
@@ -121,6 +100,13 @@ namespace FancyZonesEditor
|
|||||||
MessageBox.Show(parseResult.Message, FancyZonesEditor.Properties.Resources.Error_Parsing_Data_Title, MessageBoxButton.OK);
|
MessageBox.Show(parseResult.Message, FancyZonesEditor.Properties.Resources.Error_Parsing_Data_Title, MessageBoxButton.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
parseResult = FancyZonesEditorIO.ParseCustomLayouts();
|
||||||
|
if (!parseResult.Result)
|
||||||
|
{
|
||||||
|
Logger.LogError(ParsingErrorReportTag + ": " + parseResult.Message + "; " + ParsingErrorDataTag + ": " + parseResult.MalformedData);
|
||||||
|
MessageBox.Show(parseResult.Message, FancyZonesEditor.Properties.Resources.Error_Parsing_Data_Title, MessageBoxButton.OK);
|
||||||
|
}
|
||||||
|
|
||||||
parseResult = FancyZonesEditorIO.ParseDefaultLayouts();
|
parseResult = FancyZonesEditorIO.ParseDefaultLayouts();
|
||||||
if (!parseResult.Result)
|
if (!parseResult.Result)
|
||||||
{
|
{
|
||||||
@@ -128,6 +114,20 @@ namespace FancyZonesEditor
|
|||||||
MessageBox.Show(parseResult.Message, FancyZonesEditor.Properties.Resources.Error_Parsing_Data_Title, MessageBoxButton.OK);
|
MessageBox.Show(parseResult.Message, FancyZonesEditor.Properties.Resources.Error_Parsing_Data_Title, MessageBoxButton.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
parseResult = FancyZonesEditorIO.ParseLayoutHotkeys();
|
||||||
|
if (!parseResult.Result)
|
||||||
|
{
|
||||||
|
Logger.LogError(ParsingErrorReportTag + ": " + parseResult.Message + "; " + ParsingErrorDataTag + ": " + parseResult.MalformedData);
|
||||||
|
MessageBox.Show(parseResult.Message, FancyZonesEditor.Properties.Resources.Error_Parsing_Data_Title, MessageBoxButton.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
parseResult = FancyZonesEditorIO.ParseAppliedLayouts();
|
||||||
|
if (!parseResult.Result)
|
||||||
|
{
|
||||||
|
Logger.LogError(ParsingErrorReportTag + ": " + parseResult.Message + "; " + ParsingErrorDataTag + ": " + parseResult.MalformedData);
|
||||||
|
MessageBox.Show(parseResult.Message, FancyZonesEditor.Properties.Resources.Error_Parsing_Data_Title, MessageBoxButton.OK);
|
||||||
|
}
|
||||||
|
|
||||||
MainWindowSettingsModel settings = ((App)Current).MainWindowSettings;
|
MainWindowSettingsModel settings = ((App)Current).MainWindowSettings;
|
||||||
settings.UpdateSelectedLayoutModel();
|
settings.UpdateSelectedLayoutModel();
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ namespace FancyZonesEditor
|
|||||||
|
|
||||||
MainWindowSettingsModel settings = ((App)Application.Current).MainWindowSettings;
|
MainWindowSettingsModel settings = ((App)Application.Current).MainWindowSettings;
|
||||||
settings.SetAppliedModel(model);
|
settings.SetAppliedModel(model);
|
||||||
App.Overlay.SetLayoutSettings(App.Overlay.Monitors[App.Overlay.CurrentDesktop], model);
|
App.Overlay.Monitors[App.Overlay.CurrentDesktop].SetLayoutSettings(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
App.FancyZonesEditorIO.SerializeLayoutTemplates();
|
App.FancyZonesEditorIO.SerializeLayoutTemplates();
|
||||||
|
|||||||
@@ -296,7 +296,7 @@ namespace FancyZonesEditor
|
|||||||
|
|
||||||
model.Persist();
|
model.Persist();
|
||||||
|
|
||||||
App.Overlay.SetLayoutSettings(App.Overlay.Monitors[App.Overlay.CurrentDesktop], model);
|
App.Overlay.Monitors[App.Overlay.CurrentDesktop].SetLayoutSettings(model);
|
||||||
App.FancyZonesEditorIO.SerializeAppliedLayouts();
|
App.FancyZonesEditorIO.SerializeAppliedLayouts();
|
||||||
App.FancyZonesEditorIO.SerializeCustomLayouts();
|
App.FancyZonesEditorIO.SerializeCustomLayouts();
|
||||||
}
|
}
|
||||||
@@ -318,7 +318,7 @@ namespace FancyZonesEditor
|
|||||||
if (mainEditor.CurrentDataContext is LayoutModel model)
|
if (mainEditor.CurrentDataContext is LayoutModel model)
|
||||||
{
|
{
|
||||||
_settings.SetAppliedModel(model);
|
_settings.SetAppliedModel(model);
|
||||||
App.Overlay.SetLayoutSettings(App.Overlay.Monitors[App.Overlay.CurrentDesktop], model);
|
App.Overlay.Monitors[App.Overlay.CurrentDesktop].SetLayoutSettings(model);
|
||||||
App.FancyZonesEditorIO.SerializeAppliedLayouts();
|
App.FancyZonesEditorIO.SerializeAppliedLayouts();
|
||||||
App.FancyZonesEditorIO.SerializeCustomLayouts();
|
App.FancyZonesEditorIO.SerializeCustomLayouts();
|
||||||
}
|
}
|
||||||
@@ -366,7 +366,7 @@ namespace FancyZonesEditor
|
|||||||
_backup = new CanvasLayoutModel(canvas);
|
_backup = new CanvasLayoutModel(canvas);
|
||||||
}
|
}
|
||||||
|
|
||||||
_defaultLayoutsBackup = new List<LayoutModel>(MainWindowSettingsModel.DefaultLayouts.DefaultLayouts);
|
_defaultLayoutsBackup = new List<LayoutModel>(MainWindowSettingsModel.DefaultLayouts.Layouts);
|
||||||
|
|
||||||
Keyboard.ClearFocus();
|
Keyboard.ClearFocus();
|
||||||
EditLayoutDialogTitle.Text = string.Format(CultureInfo.CurrentCulture, Properties.Resources.Edit_Template, ((LayoutModel)dataContext).Name);
|
EditLayoutDialogTitle.Text = string.Format(CultureInfo.CurrentCulture, Properties.Resources.Edit_Template, ((LayoutModel)dataContext).Name);
|
||||||
@@ -480,7 +480,7 @@ namespace FancyZonesEditor
|
|||||||
// update current settings
|
// update current settings
|
||||||
if (model == _settings.AppliedModel)
|
if (model == _settings.AppliedModel)
|
||||||
{
|
{
|
||||||
App.Overlay.SetLayoutSettings(App.Overlay.Monitors[App.Overlay.CurrentDesktop], model);
|
App.Overlay.Monitors[App.Overlay.CurrentDesktop].SetLayoutSettings(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
App.FancyZonesEditorIO.SerializeAppliedLayouts();
|
App.FancyZonesEditorIO.SerializeAppliedLayouts();
|
||||||
@@ -528,7 +528,7 @@ namespace FancyZonesEditor
|
|||||||
{
|
{
|
||||||
if (monitor.Settings.ZonesetUuid == model.Uuid)
|
if (monitor.Settings.ZonesetUuid == model.Uuid)
|
||||||
{
|
{
|
||||||
App.Overlay.SetLayoutSettings(monitor, _settings.BlankModel);
|
monitor.SetLayoutSettings(_settings.BlankModel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace FancyZonesEditor.Models
|
|||||||
{
|
{
|
||||||
private static int Count { get; } = Enum.GetValues(typeof(MonitorConfigurationType)).Length;
|
private static int Count { get; } = Enum.GetValues(typeof(MonitorConfigurationType)).Length;
|
||||||
|
|
||||||
public List<LayoutModel> DefaultLayouts { get; } = new List<LayoutModel>(Count);
|
public List<LayoutModel> Layouts { get; } = new List<LayoutModel>(Count);
|
||||||
|
|
||||||
public DefaultLayoutsModel()
|
public DefaultLayoutsModel()
|
||||||
{
|
{
|
||||||
@@ -23,30 +23,39 @@ namespace FancyZonesEditor.Models
|
|||||||
|
|
||||||
public void Reset(MonitorConfigurationType type)
|
public void Reset(MonitorConfigurationType type)
|
||||||
{
|
{
|
||||||
Set(MainWindowSettingsModel.TemplateModels[(int)LayoutType.PriorityGrid], type);
|
switch (type)
|
||||||
|
{
|
||||||
|
case MonitorConfigurationType.Horizontal:
|
||||||
|
Set(MainWindowSettingsModel.TemplateModels[(int)LayoutType.PriorityGrid], type);
|
||||||
|
break;
|
||||||
|
case MonitorConfigurationType.Vertical:
|
||||||
|
Set(MainWindowSettingsModel.TemplateModels[(int)LayoutType.Rows], type);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Reset(string uuid)
|
public void Reset(string uuid)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < Count; i++)
|
if (Layouts[(int)MonitorConfigurationType.Horizontal].Uuid == uuid)
|
||||||
{
|
{
|
||||||
if (DefaultLayouts[i].Uuid == uuid)
|
Set(MainWindowSettingsModel.TemplateModels[(int)LayoutType.PriorityGrid], MonitorConfigurationType.Horizontal);
|
||||||
{
|
}
|
||||||
Set(MainWindowSettingsModel.TemplateModels[(int)LayoutType.PriorityGrid], (MonitorConfigurationType)i);
|
|
||||||
break;
|
if (Layouts[(int)MonitorConfigurationType.Vertical].Uuid == uuid)
|
||||||
}
|
{
|
||||||
|
Set(MainWindowSettingsModel.TemplateModels[(int)LayoutType.Rows], MonitorConfigurationType.Vertical);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Set(LayoutModel layout, MonitorConfigurationType type)
|
public void Set(LayoutModel layout, MonitorConfigurationType type)
|
||||||
{
|
{
|
||||||
if (DefaultLayouts.Count <= (int)type)
|
if (Layouts.Count <= (int)type)
|
||||||
{
|
{
|
||||||
DefaultLayouts.Insert((int)type, layout);
|
Layouts.Insert((int)type, layout);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DefaultLayouts[(int)type] = layout;
|
Layouts[(int)type] = layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
FirePropertyChanged();
|
FirePropertyChanged();
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ namespace FancyZonesEditor.Models
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return MainWindowSettingsModel.DefaultLayouts.DefaultLayouts[(int)MonitorConfigurationType.Horizontal].Uuid == this.Uuid;
|
return MainWindowSettingsModel.DefaultLayouts.Layouts[(int)MonitorConfigurationType.Horizontal].Uuid == this.Uuid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -158,7 +158,7 @@ namespace FancyZonesEditor.Models
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return MainWindowSettingsModel.DefaultLayouts.DefaultLayouts[(int)MonitorConfigurationType.Horizontal].Uuid != this.Uuid;
|
return MainWindowSettingsModel.DefaultLayouts.Layouts[(int)MonitorConfigurationType.Horizontal].Uuid != this.Uuid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,7 +166,7 @@ namespace FancyZonesEditor.Models
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return MainWindowSettingsModel.DefaultLayouts.DefaultLayouts[(int)MonitorConfigurationType.Vertical].Uuid == this.Uuid;
|
return MainWindowSettingsModel.DefaultLayouts.Layouts[(int)MonitorConfigurationType.Vertical].Uuid == this.Uuid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,7 +174,7 @@ namespace FancyZonesEditor.Models
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return MainWindowSettingsModel.DefaultLayouts.DefaultLayouts[(int)MonitorConfigurationType.Vertical].Uuid != this.Uuid;
|
return MainWindowSettingsModel.DefaultLayouts.Layouts[(int)MonitorConfigurationType.Vertical].Uuid != this.Uuid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ namespace FancyZonesEditor
|
|||||||
|
|
||||||
// set default layouts
|
// set default layouts
|
||||||
DefaultLayouts.Set(priorityGridModel, MonitorConfigurationType.Horizontal);
|
DefaultLayouts.Set(priorityGridModel, MonitorConfigurationType.Horizontal);
|
||||||
DefaultLayouts.Set(priorityGridModel, MonitorConfigurationType.Vertical);
|
DefaultLayouts.Set(rowsModel, MonitorConfigurationType.Vertical);
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsShiftKeyPressed - is the shift key currently being held down
|
// IsShiftKeyPressed - is the shift key currently being held down
|
||||||
@@ -261,11 +261,6 @@ namespace FancyZonesEditor
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (foundModel == null)
|
|
||||||
{
|
|
||||||
foundModel = TemplateModels[(int)LayoutType.PriorityGrid];
|
|
||||||
}
|
|
||||||
|
|
||||||
SetSelectedModel(foundModel);
|
SetSelectedModel(foundModel);
|
||||||
SetAppliedModel(foundModel);
|
SetAppliedModel(foundModel);
|
||||||
FirePropertyChanged(nameof(IsCustomLayoutActive));
|
FirePropertyChanged(nameof(IsCustomLayoutActive));
|
||||||
|
|||||||
@@ -14,21 +14,45 @@ namespace FancyZonesEditor.Models
|
|||||||
{
|
{
|
||||||
public LayoutOverlayWindow Window { get; private set; }
|
public LayoutOverlayWindow Window { get; private set; }
|
||||||
|
|
||||||
public LayoutSettings Settings { get; set; }
|
|
||||||
|
|
||||||
public Device Device { get; set; }
|
public Device Device { get; set; }
|
||||||
|
|
||||||
|
public LayoutSettings Settings
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_settings != null)
|
||||||
|
{
|
||||||
|
return _settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
return DefaultLayoutSettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_settings = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsInitialized
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _settings != null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public MonitorConfigurationType MonitorConfigurationType
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Device.MonitorSize.Width > Device.MonitorSize.Height ? MonitorConfigurationType.Horizontal : MonitorConfigurationType.Vertical;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Monitor(Rect workArea, Size monitorSize)
|
public Monitor(Rect workArea, Size monitorSize)
|
||||||
{
|
{
|
||||||
Window = new LayoutOverlayWindow();
|
Window = new LayoutOverlayWindow();
|
||||||
Settings = new LayoutSettings();
|
|
||||||
|
|
||||||
// provide a good default for vertical monitors
|
|
||||||
if (monitorSize.Height > monitorSize.Width)
|
|
||||||
{
|
|
||||||
Settings.Type = LayoutType.Rows;
|
|
||||||
}
|
|
||||||
|
|
||||||
Device = new Device(workArea, monitorSize);
|
Device = new Device(workArea, monitorSize);
|
||||||
|
|
||||||
if (App.DebugMode)
|
if (App.DebugMode)
|
||||||
@@ -54,6 +78,8 @@ namespace FancyZonesEditor.Models
|
|||||||
Device = new Device(monitorName, monitorInstanceId, monitorSerialNumber, virtualDesktop, dpi, workArea, monitorSize);
|
Device = new Device(monitorName, monitorInstanceId, monitorSerialNumber, virtualDesktop, dpi, workArea, monitorSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private LayoutSettings _settings;
|
||||||
|
|
||||||
public void Scale(double scaleFactor)
|
public void Scale(double scaleFactor)
|
||||||
{
|
{
|
||||||
Device.Scale(scaleFactor);
|
Device.Scale(scaleFactor);
|
||||||
@@ -64,5 +90,48 @@ namespace FancyZonesEditor.Models
|
|||||||
Window.Width = workArea.Width;
|
Window.Width = workArea.Width;
|
||||||
Window.Height = workArea.Height;
|
Window.Height = workArea.Height;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetLayoutSettings(LayoutModel model)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_settings == null)
|
||||||
|
{
|
||||||
|
_settings = new LayoutSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
_settings.ZonesetUuid = model.Uuid;
|
||||||
|
_settings.Type = model.Type;
|
||||||
|
_settings.SensitivityRadius = model.SensitivityRadius;
|
||||||
|
_settings.ZoneCount = model.TemplateZoneCount;
|
||||||
|
|
||||||
|
if (model is GridLayoutModel grid)
|
||||||
|
{
|
||||||
|
_settings.ShowSpacing = grid.ShowSpacing;
|
||||||
|
_settings.Spacing = grid.Spacing;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_settings.ShowSpacing = false;
|
||||||
|
_settings.Spacing = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private LayoutSettings DefaultLayoutSettings
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
LayoutSettings settings = new LayoutSettings();
|
||||||
|
if (MonitorConfigurationType == MonitorConfigurationType.Vertical)
|
||||||
|
{
|
||||||
|
settings.Type = LayoutType.Rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
return settings;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -180,30 +180,6 @@ namespace FancyZonesEditor
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetLayoutSettings(Monitor monitor, LayoutModel model)
|
|
||||||
{
|
|
||||||
if (model == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
monitor.Settings.ZonesetUuid = model.Uuid;
|
|
||||||
monitor.Settings.Type = model.Type;
|
|
||||||
monitor.Settings.SensitivityRadius = model.SensitivityRadius;
|
|
||||||
monitor.Settings.ZoneCount = model.TemplateZoneCount;
|
|
||||||
|
|
||||||
if (model is GridLayoutModel grid)
|
|
||||||
{
|
|
||||||
monitor.Settings.ShowSpacing = grid.ShowSpacing;
|
|
||||||
monitor.Settings.Spacing = grid.Spacing;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
monitor.Settings.ShowSpacing = false;
|
|
||||||
monitor.Settings.Spacing = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void OpenEditor(LayoutModel model)
|
public void OpenEditor(LayoutModel model)
|
||||||
{
|
{
|
||||||
Logger.LogTrace();
|
Logger.LogTrace();
|
||||||
|
|||||||
@@ -1159,15 +1159,17 @@ namespace FancyZonesEditor.Utils
|
|||||||
|
|
||||||
foreach (var layout in layouts)
|
foreach (var layout in layouts)
|
||||||
{
|
{
|
||||||
|
LayoutModel defaultLayoutModel = null;
|
||||||
|
MonitorConfigurationType type = JsonTagToMonitorConfigurationType(layout.MonitorConfiguration);
|
||||||
|
|
||||||
if (layout.Layout.Uuid != null && layout.Layout.Uuid != string.Empty)
|
if (layout.Layout.Uuid != null && layout.Layout.Uuid != string.Empty)
|
||||||
{
|
{
|
||||||
MonitorConfigurationType type = JsonTagToMonitorConfigurationType(layout.MonitorConfiguration);
|
|
||||||
|
|
||||||
foreach (var customLayout in MainWindowSettingsModel.CustomModels)
|
foreach (var customLayout in MainWindowSettingsModel.CustomModels)
|
||||||
{
|
{
|
||||||
if (customLayout.Uuid == layout.Layout.Uuid)
|
if (customLayout.Uuid == layout.Layout.Uuid)
|
||||||
{
|
{
|
||||||
MainWindowSettingsModel.DefaultLayouts.Set(customLayout, type);
|
MainWindowSettingsModel.DefaultLayouts.Set(customLayout, type);
|
||||||
|
defaultLayoutModel = customLayout;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1175,8 +1177,28 @@ namespace FancyZonesEditor.Utils
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
LayoutType layoutType = JsonTagToLayoutType(layout.Layout.Type);
|
LayoutType layoutType = JsonTagToLayoutType(layout.Layout.Type);
|
||||||
MonitorConfigurationType type = JsonTagToMonitorConfigurationType(layout.MonitorConfiguration);
|
defaultLayoutModel = MainWindowSettingsModel.TemplateModels[(int)layoutType];
|
||||||
MainWindowSettingsModel.DefaultLayouts.Set(MainWindowSettingsModel.TemplateModels[(int)layoutType], type);
|
defaultLayoutModel.TemplateZoneCount = layout.Layout.ZoneCount;
|
||||||
|
defaultLayoutModel.SensitivityRadius = layout.Layout.SensitivityRadius;
|
||||||
|
|
||||||
|
if (defaultLayoutModel is GridLayoutModel gridDefaultLayoutModel)
|
||||||
|
{
|
||||||
|
gridDefaultLayoutModel.ShowSpacing = layout.Layout.ShowSpacing;
|
||||||
|
gridDefaultLayoutModel.Spacing = layout.Layout.Spacing;
|
||||||
|
}
|
||||||
|
|
||||||
|
MainWindowSettingsModel.DefaultLayouts.Set(defaultLayoutModel, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (defaultLayoutModel != null)
|
||||||
|
{
|
||||||
|
foreach (Monitor monitor in App.Overlay.Monitors)
|
||||||
|
{
|
||||||
|
if (!monitor.IsInitialized && monitor.MonitorConfigurationType == type)
|
||||||
|
{
|
||||||
|
monitor.SetLayoutSettings(defaultLayoutModel);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user