diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/CanvasZone.xaml.cs b/src/modules/fancyzones/editor/FancyZonesEditor/CanvasZone.xaml.cs
index 20d3be4394..c0416a9c78 100644
--- a/src/modules/fancyzones/editor/FancyZonesEditor/CanvasZone.xaml.cs
+++ b/src/modules/fancyzones/editor/FancyZonesEditor/CanvasZone.xaml.cs
@@ -19,7 +19,7 @@ namespace FancyZonesEditor
public CanvasZone()
{
InitializeComponent();
- Canvas.SetZIndex(this, c_zIndex++);
+ Panel.SetZIndex(this, _zIndex++);
}
public CanvasLayoutModel Model;
@@ -66,9 +66,9 @@ namespace FancyZonesEditor
}
else if (xDelta > 0)
{
- if ((rect.Width - (int)xDelta) < c_minZoneWidth)
+ if ((rect.Width - (int)xDelta) < _minZoneWidth)
{
- xDelta = rect.Width - c_minZoneWidth;
+ xDelta = rect.Width - _minZoneWidth;
}
}
@@ -81,9 +81,9 @@ namespace FancyZonesEditor
}
else if (yDelta > 0)
{
- if ((rect.Height - (int)yDelta) < c_minZoneHeight)
+ if ((rect.Height - (int)yDelta) < _minZoneHeight)
{
- yDelta = rect.Height - c_minZoneHeight;
+ yDelta = rect.Height - _minZoneHeight;
}
}
@@ -107,9 +107,9 @@ namespace FancyZonesEditor
{
int newWidth = rect.Width + (int)xDelta;
- if (newWidth < c_minZoneWidth)
+ if (newWidth < _minZoneWidth)
{
- newWidth = c_minZoneWidth;
+ newWidth = _minZoneWidth;
}
else if (newWidth > (_settings.WorkArea.Width - rect.X))
{
@@ -123,9 +123,9 @@ namespace FancyZonesEditor
{
int newHeight = rect.Height + (int)yDelta;
- if (newHeight < c_minZoneHeight)
+ if (newHeight < _minZoneHeight)
{
- newHeight = c_minZoneHeight;
+ newHeight = _minZoneHeight;
}
else if (newHeight > (_settings.WorkArea.Height - rect.Y))
{
@@ -138,13 +138,13 @@ namespace FancyZonesEditor
Model.Zones[ZoneIndex] = rect;
}
- private static int c_zIndex = 0;
- private static int c_minZoneWidth = 64;
- private static int c_minZoneHeight = 72;
+ private static int _zIndex = 0;
+ private static int _minZoneWidth = 64;
+ private static int _minZoneHeight = 72;
protected override void OnPreviewMouseDown(MouseButtonEventArgs e)
{
- Canvas.SetZIndex(this, c_zIndex++);
+ Panel.SetZIndex(this, _zIndex++);
base.OnPreviewMouseDown(e);
}
diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/EditorOverlay.xaml.cs b/src/modules/fancyzones/editor/FancyZonesEditor/EditorOverlay.xaml.cs
index 5eb8ead2ef..146196b68b 100644
--- a/src/modules/fancyzones/editor/FancyZonesEditor/EditorOverlay.xaml.cs
+++ b/src/modules/fancyzones/editor/FancyZonesEditor/EditorOverlay.xaml.cs
@@ -14,21 +14,21 @@ namespace FancyZonesEditor
///
public partial class EditorOverlay : Window
{
+ public static EditorOverlay Current { get; set; }
+
public Int32Rect[] GetZoneRects()
{
// TODO: the ideal here is that the ArrangeRects logic is entirely inside the model, so we don't have to walk the UIElement children to get the rect info
- Panel previewPanel = null;
-
+ Panel previewPanel;
if (_editor != null)
{
- GridEditor gridEditor = _editor as GridEditor;
- if (gridEditor != null)
+ if (_editor is GridEditor gridEditor)
{
previewPanel = gridEditor.PreviewPanel;
}
else
{
- //CanvasEditor
+ // CanvasEditor
previewPanel = ((CanvasEditor)_editor).Preview;
}
}
@@ -43,7 +43,7 @@ namespace FancyZonesEditor
int i = 0;
foreach (FrameworkElement child in previewPanel.Children)
{
- Point topLeft = child.TransformToAncestor(previewPanel).Transform(new Point());
+ Point topLeft = child.TransformToAncestor(previewPanel).Transform(default(Point));
var right = topLeft.X + child.ActualWidth;
var bottom = topLeft.Y + child.ActualHeight;
@@ -57,8 +57,6 @@ namespace FancyZonesEditor
return zones;
}
- public static EditorOverlay Current;
-
public EditorOverlay()
{
InitializeComponent();
diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/EditorWindow.cs b/src/modules/fancyzones/editor/FancyZonesEditor/EditorWindow.cs
index ac439a4a1b..f8ef6c257a 100644
--- a/src/modules/fancyzones/editor/FancyZonesEditor/EditorWindow.cs
+++ b/src/modules/fancyzones/editor/FancyZonesEditor/EditorWindow.cs
@@ -14,14 +14,14 @@ namespace FancyZonesEditor
protected void OnSaveApplyTemplate(object sender, RoutedEventArgs e)
{
EditorOverlay mainEditor = EditorOverlay.Current;
- LayoutModel model = mainEditor.DataContext as LayoutModel;
+ var model = mainEditor.DataContext as LayoutModel;
if (model != null)
{
model.Persist(mainEditor.GetZoneRects());
}
_choosing = true;
- this.Close();
+ Close();
EditorOverlay.Current.Close();
}
@@ -36,7 +36,7 @@ namespace FancyZonesEditor
protected void OnCancel(object sender, RoutedEventArgs e)
{
_choosing = true;
- this.Close();
+ Close();
EditorOverlay.Current.ShowLayoutPicker();
}
diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/FancyZonesEditor.csproj b/src/modules/fancyzones/editor/FancyZonesEditor/FancyZonesEditor.csproj
index 4b676aa78a..47f698736a 100644
--- a/src/modules/fancyzones/editor/FancyZonesEditor/FancyZonesEditor.csproj
+++ b/src/modules/fancyzones/editor/FancyZonesEditor/FancyZonesEditor.csproj
@@ -90,6 +90,7 @@
EditorOverlay.xaml
+
GridEditorWindow.xaml
diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/GlobalSuppressions.cs b/src/modules/fancyzones/editor/FancyZonesEditor/GlobalSuppressions.cs
index 5446e1a88b..b257bd7cc6 100644
--- a/src/modules/fancyzones/editor/FancyZonesEditor/GlobalSuppressions.cs
+++ b/src/modules/fancyzones/editor/FancyZonesEditor/GlobalSuppressions.cs
@@ -1,5 +1,5 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
+// Copyright (c) Microsoft Corporation
+// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
// This file is used by Code Analysis to maintain SuppressMessage
diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/GridEditor.xaml.cs b/src/modules/fancyzones/editor/FancyZonesEditor/GridEditor.xaml.cs
index 6e71fadc2b..676aa97e0f 100644
--- a/src/modules/fancyzones/editor/FancyZonesEditor/GridEditor.xaml.cs
+++ b/src/modules/fancyzones/editor/FancyZonesEditor/GridEditor.xaml.cs
@@ -343,8 +343,9 @@ namespace FancyZonesEditor
model.Columns++;
}
- else // Horizontal
+ else
{
+ // Horizontal
if (splitee.HorizontalSnapPoints != null)
{
offset += Canvas.GetTop(splitee);
@@ -553,7 +554,7 @@ namespace FancyZonesEditor
return;
}
- Settings settings = ((App)(Application.Current)).ZoneSettings;
+ Settings settings = ((App)Application.Current).ZoneSettings;
int spacing = settings.Spacing;
int gutter = settings.Spacing;
@@ -566,14 +567,14 @@ namespace FancyZonesEditor
double top = gutter;
for (int row = 0; row < rows; row++)
{
- double cellHeight = _rowInfo[row].SetExtent(top, totalHeight);
+ double cellHeight = _rowInfo[row].Recalculate(top, totalHeight);
top += cellHeight + spacing;
}
double left = gutter;
for (int col = 0; col < cols; col++)
{
- double cellWidth = _colInfo[col].SetExtent(left, totalWidth);
+ double cellWidth = _colInfo[col].Recalculate(left, totalWidth);
left += cellWidth + spacing;
}
@@ -861,7 +862,7 @@ namespace FancyZonesEditor
e.Handled = true;
}
- base.OnPreviewMouseMove(e);
+ OnPreviewMouseMove(e);
}
private void ClearSelection()
diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/GridZone.xaml.cs b/src/modules/fancyzones/editor/FancyZonesEditor/GridZone.xaml.cs
index 5e0d9fcd43..760c91f0a6 100644
--- a/src/modules/fancyzones/editor/FancyZonesEditor/GridZone.xaml.cs
+++ b/src/modules/fancyzones/editor/FancyZonesEditor/GridZone.xaml.cs
@@ -19,6 +19,25 @@ namespace FancyZonesEditor
{
public static readonly DependencyProperty IsSelectedProperty = DependencyProperty.Register("IsSelected", typeof(bool), typeof(GridZone), new PropertyMetadata(false, OnSelectionChanged));
+ public event SplitEventHandler Split;
+
+ public event SplitEventHandler FullSplit;
+
+ public event MouseEventHandler MergeDrag;
+
+ public event MouseButtonEventHandler MergeComplete;
+
+ public double[] VerticalSnapPoints { get; set; }
+
+ public double[] HorizontalSnapPoints { get; set; }
+
+ private Rectangle _splitter;
+ private bool _switchOrientation = false;
+ private Point _lastPos = new Point(-1, -1);
+ private Point _mouseDownPos = new Point(-1, -1);
+ private bool _inMergeDrag = false;
+ private Orientation _splitOrientation;
+
private static void OnSelectionChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
((GridZone)d).OnSelectionChanged();
@@ -35,15 +54,14 @@ namespace FancyZonesEditor
set { SetValue(IsSelectedProperty, value); }
}
- public double[] VerticalSnapPoints;
- public double[] HorizontalSnapPoints;
-
public GridZone()
{
InitializeComponent();
OnSelectionChanged();
- _splitter = new Rectangle();
- _splitter.Fill = Brushes.DarkGray;
+ _splitter = new Rectangle
+ {
+ Fill = Brushes.DarkGray,
+ };
Body.Children.Add(_splitter);
((App)Application.Current).ZoneSettings.PropertyChanged += ZoneSettings_PropertyChanged;
@@ -169,8 +187,9 @@ namespace FancyZonesEditor
}
}
}
- else // horizontal split
+ else
{
+ // horizontal split
if (HorizontalSnapPoints != null)
{
int thickness = SplitterThickness;
@@ -237,21 +256,6 @@ namespace FancyZonesEditor
base.OnMouseUp(e);
}
- public event SplitEventHandler Split;
-
- public event SplitEventHandler FullSplit;
-
- public event MouseEventHandler MergeDrag;
-
- public event MouseButtonEventHandler MergeComplete;
-
- private Rectangle _splitter;
- private bool _switchOrientation = false;
- private Point _lastPos = new Point(-1,-1);
- private Point _mouseDownPos = new Point(-1,-1);
- private bool _inMergeDrag = false;
- private Orientation _splitOrientation;
-
private void DoMergeDrag(MouseEventArgs e)
{
if (MergeDrag != null)
diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/LayoutPreview.xaml.cs b/src/modules/fancyzones/editor/FancyZonesEditor/LayoutPreview.xaml.cs
index 4cf6b9ad3b..3a530acc05 100644
--- a/src/modules/fancyzones/editor/FancyZonesEditor/LayoutPreview.xaml.cs
+++ b/src/modules/fancyzones/editor/FancyZonesEditor/LayoutPreview.xaml.cs
@@ -83,14 +83,13 @@ namespace FancyZonesEditor
Body.Children.Clear();
- GridLayoutModel gridModel = _model as GridLayoutModel;
- if (gridModel != null)
+ if (_model is GridLayoutModel gridModel)
{
RenderGridPreview(gridModel);
}
else
{
- CanvasLayoutModel canvasModel = _model as CanvasLayoutModel;
+ var canvasModel = _model as CanvasLayoutModel;
if (canvasModel != null)
{
RenderCanvasPreview(canvasModel);
@@ -126,7 +125,7 @@ namespace FancyZonesEditor
{
for (int col = 0; col < grid.Columns; col++)
{
- int childIndex = grid.CellChildMap[row,col];
+ int childIndex = grid.CellChildMap[row, col];
if (!visited.Contains(childIndex))
{
visited.Add(childIndex);
@@ -135,7 +134,7 @@ namespace FancyZonesEditor
Grid.SetColumn(rect, col);
int span = 1;
int walk = row + 1;
- while ((walk < grid.Rows) && grid.CellChildMap[walk,col] == childIndex)
+ while ((walk < grid.Rows) && grid.CellChildMap[walk, col] == childIndex)
{
span++;
walk++;
diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/MainWindow.xaml.cs b/src/modules/fancyzones/editor/FancyZonesEditor/MainWindow.xaml.cs
index 76d85d45c0..cfafe52805 100644
--- a/src/modules/fancyzones/editor/FancyZonesEditor/MainWindow.xaml.cs
+++ b/src/modules/fancyzones/editor/FancyZonesEditor/MainWindow.xaml.cs
@@ -23,7 +23,7 @@ namespace FancyZonesEditor
public static int MAX_ZONES = 40;
private static string _defaultNamePrefix = "Custom Layout ";
private bool _editing = false;
- private int _WrapPanelItemSize = 262;
+ private int _wrapPanelItemSize = 262;
public MainWindow()
{
@@ -31,8 +31,8 @@ namespace FancyZonesEditor
DataContext = _settings;
if (_settings.WorkArea.Height < 900)
{
- this.SizeToContent = SizeToContent.WidthAndHeight;
- this.WrapPanelItemSize = 180;
+ SizeToContent = SizeToContent.WidthAndHeight;
+ WrapPanelItemSize = 180;
}
}
@@ -40,12 +40,12 @@ namespace FancyZonesEditor
{
get
{
- return _WrapPanelItemSize;
+ return _wrapPanelItemSize;
}
set
{
- _WrapPanelItemSize = value;
+ _wrapPanelItemSize = value;
}
}
@@ -71,7 +71,7 @@ namespace FancyZonesEditor
{
WindowLayout window = new WindowLayout();
window.Show();
- this.Close();
+ Close();
}
private void LayoutItem_Click(object sender, MouseButtonEventArgs e)
@@ -81,30 +81,26 @@ namespace FancyZonesEditor
private void Select(LayoutModel newSelection)
{
- LayoutModel currentSelection = EditorOverlay.Current.DataContext as LayoutModel;
-
- if (currentSelection != null)
+ if (EditorOverlay.Current.DataContext is LayoutModel currentSelection)
{
currentSelection.IsSelected = false;
}
newSelection.IsSelected = true;
-
EditorOverlay.Current.DataContext = newSelection;
}
private void EditLayout_Click(object sender, RoutedEventArgs e)
{
EditorOverlay mainEditor = EditorOverlay.Current;
- LayoutModel model = mainEditor.DataContext as LayoutModel;
- if (model == null)
+ if (!(mainEditor.DataContext is LayoutModel model))
{
return;
}
model.IsSelected = false;
_editing = true;
- this.Close();
+ Close();
bool isPredefinedLayout = Settings.IsPredefinedLayout(model);
@@ -124,7 +120,7 @@ namespace FancyZonesEditor
if (name.StartsWith(_defaultNamePrefix))
{
int i;
- if (Int32.TryParse(name.Substring(_defaultNamePrefix.Length), out i))
+ if (int.TryParse(name.Substring(_defaultNamePrefix.Length), out i))
{
if (maxCustomIndex < i)
{
@@ -157,8 +153,7 @@ namespace FancyZonesEditor
private void Apply_Click(object sender, RoutedEventArgs e)
{
EditorOverlay mainEditor = EditorOverlay.Current;
- LayoutModel model = mainEditor.DataContext as LayoutModel;
- if (model != null)
+ if (mainEditor.DataContext is LayoutModel model)
{
if (model is GridLayoutModel)
{
@@ -169,7 +164,7 @@ namespace FancyZonesEditor
model.Apply((model as CanvasLayoutModel).Zones.ToArray());
}
- this.Close();
+ Close();
}
}
diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/Models/CanvasLayoutModel.cs b/src/modules/fancyzones/editor/FancyZonesEditor/Models/CanvasLayoutModel.cs
index 622718e871..1d2df9c6eb 100644
--- a/src/modules/fancyzones/editor/FancyZonesEditor/Models/CanvasLayoutModel.cs
+++ b/src/modules/fancyzones/editor/FancyZonesEditor/Models/CanvasLayoutModel.cs
@@ -107,18 +107,18 @@ namespace FancyZonesEditor.Models
// Initialize this CanvasLayoutModel based on the given persistence data
// Skip version (2 bytes), id (2 bytes), and type (1 bytes)
int i = 5;
- _referenceWidth = data[i++] * 256 + data[i++];
- _referenceHeight = data[i++] * 256 + data[i++];
+ _referenceWidth = (data[i++] * 256) + data[i++];
+ _referenceHeight = (data[i++] * 256) + data[i++];
int count = data[i++];
while (count-- > 0)
{
Zones.Add(new Int32Rect(
- data[i++] * 256 + data[i++],
- data[i++] * 256 + data[i++],
- data[i++] * 256 + data[i++],
- data[i++] * 256 + data[i++]));
+ (data[i++] * 256) + data[i++],
+ (data[i++] * 256) + data[i++],
+ (data[i++] * 256) + data[i++],
+ (data[i++] * 256) + data[i++]));
}
}
@@ -127,11 +127,13 @@ namespace FancyZonesEditor.Models
// Clones the data from this CanvasLayoutModel to a new CanvasLayoutModel
public override LayoutModel Clone()
{
- CanvasLayoutModel layout = new CanvasLayoutModel(Name);
- layout.ReferenceHeight = ReferenceHeight;
- layout.ReferenceWidth = ReferenceWidth;
+ CanvasLayoutModel layout = new CanvasLayoutModel(Name)
+ {
+ ReferenceHeight = ReferenceHeight,
+ ReferenceWidth = ReferenceWidth,
+ };
- foreach(Int32Rect zone in Zones)
+ foreach (Int32Rect zone in Zones)
{
layout.Zones.Add(zone);
}
diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/Models/GridLayoutModel.cs b/src/modules/fancyzones/editor/FancyZonesEditor/Models/GridLayoutModel.cs
index 0d56284f0b..8fd53aca23 100644
--- a/src/modules/fancyzones/editor/FancyZonesEditor/Models/GridLayoutModel.cs
+++ b/src/modules/fancyzones/editor/FancyZonesEditor/Models/GridLayoutModel.cs
@@ -10,29 +10,7 @@ namespace FancyZonesEditor.Models
// Grid-styled Layout Model, which specifies rows, columns, percentage sizes, and row/column spans
public class GridLayoutModel : LayoutModel
{
- public GridLayoutModel()
- : base()
- {
- }
-
- public GridLayoutModel(string name)
- : base(name)
- {
- }
-
- public GridLayoutModel(string name, ushort id)
- : base(name, id)
- {
- }
-
- public GridLayoutModel(ushort version, string name, ushort id, byte[] data)
- : base(name, id)
- {
- if (version == c_latestVersion)
- {
- Reload(data);
- }
- }
+ private static ushort _latestVersion = 0;
// Rows - number of rows in the Grid
public int Rows
@@ -90,6 +68,30 @@ namespace FancyZonesEditor.Models
// TODO: do I need FreeZones on the data model? - I think I do
public IList FreeZones { get; } = new List();
+ public GridLayoutModel()
+ : base()
+ {
+ }
+
+ public GridLayoutModel(string name)
+ : base(name)
+ {
+ }
+
+ public GridLayoutModel(string name, ushort id)
+ : base(name, id)
+ {
+ }
+
+ public GridLayoutModel(ushort version, string name, ushort id, byte[] data)
+ : base(name, id)
+ {
+ if (version == _latestVersion)
+ {
+ Reload(data);
+ }
+ }
+
public void Reload(byte[] data)
{
// Skip version (2 bytes), id (2 bytes), and type (1 bytes)
@@ -207,8 +209,8 @@ namespace FancyZonesEditor.Models
int i = 0;
// Common persisted values between all layout types
- data[i++] = (byte)(c_latestVersion / 256);
- data[i++] = (byte)(c_latestVersion % 256);
+ data[i++] = (byte)(_latestVersion / 256);
+ data[i++] = (byte)(_latestVersion % 256);
data[i++] = 0; // LayoutModelType: 0 == GridLayoutModel
data[i++] = (byte)(Id / 256);
data[i++] = (byte)(Id % 256);
@@ -241,7 +243,5 @@ namespace FancyZonesEditor.Models
return data;
}
-
- private static ushort c_latestVersion = 0;
}
}
diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/Models/LayoutModel.cs b/src/modules/fancyzones/editor/FancyZonesEditor/Models/LayoutModel.cs
index 0bb5e2f352..1d431c913f 100644
--- a/src/modules/fancyzones/editor/FancyZonesEditor/Models/LayoutModel.cs
+++ b/src/modules/fancyzones/editor/FancyZonesEditor/Models/LayoutModel.cs
@@ -14,6 +14,9 @@ namespace FancyZonesEditor.Models
// Manages common properties and base persistence
public abstract class LayoutModel : INotifyPropertyChanged
{
+ private static readonly string _registryPath = Settings.RegistryPath + "\\Layouts";
+ private static readonly string _fullRegistryPath = Settings.FullRegistryPath + "\\Layouts";
+
protected LayoutModel()
{
}
@@ -24,7 +27,7 @@ namespace FancyZonesEditor.Models
Name = name;
}
- protected LayoutModel(string name, ushort id)
+ protected LayoutModel(string name, ushort id)
: this(name)
{
_id = id;
@@ -58,7 +61,7 @@ namespace FancyZonesEditor.Models
{
if (_id == 0)
{
- _id = ++s_maxId;
+ _id = ++_maxId;
}
return _id;
@@ -106,17 +109,17 @@ namespace FancyZonesEditor.Models
key.DeleteValue(Name);
}
- int i = s_customModels.IndexOf(this);
+ int i = _customModels.IndexOf(this);
if (i != -1)
{
- s_customModels.RemoveAt(i);
+ _customModels.RemoveAt(i);
}
}
// Loads all the Layouts persisted under the Layouts key in the registry
public static ObservableCollection LoadCustomModels()
{
- s_customModels = new ObservableCollection();
+ _customModels = new ObservableCollection();
RegistryKey key = Registry.CurrentUser.OpenSubKey(_registryPath);
if (key != null)
@@ -138,46 +141,28 @@ namespace FancyZonesEditor.Models
if (model != null)
{
- if (s_maxId < id)
+ if (_maxId < id)
{
- s_maxId = id;
+ _maxId = id;
}
- s_customModels.Add(model);
+ _customModels.Add(model);
}
}
}
- return s_customModels;
+ return _customModels;
}
- private static ObservableCollection s_customModels = null;
+ private static ObservableCollection _customModels = null;
- private static ushort s_maxId = 0;
+ private static ushort _maxId = 0;
// Callbacks that the base LayoutModel makes to derived types
protected abstract byte[] GetPersistData();
public abstract LayoutModel Clone();
- // PInvokes to handshake with fancyzones backend
- internal static class Native
- {
- [DllImport("kernel32", SetLastError = true, CharSet = CharSet.Ansi)]
- public static extern IntPtr LoadLibrary([MarshalAs(UnmanagedType.LPStr)]string lpFileName);
-
- [DllImport("kernel32", CharSet = CharSet.Ansi, ExactSpelling = true, SetLastError = true)]
- public static extern IntPtr GetProcAddress(IntPtr hModule, string procName);
-
- internal delegate int PersistZoneSet(
- [MarshalAs(UnmanagedType.LPWStr)] string activeKey,
- [MarshalAs(UnmanagedType.LPWStr)] string resolutionKey,
- uint monitor,
- ushort layoutId,
- int zoneCount,
- [MarshalAs(UnmanagedType.LPArray)] int[] zoneArray);
- }
-
public void Persist(System.Windows.Int32Rect[] zones)
{
// Persist the editor data
@@ -220,8 +205,5 @@ namespace FancyZonesEditor.Models
var persistZoneSet = Marshal.GetDelegateForFunctionPointer(pfn);
persistZoneSet(Settings.UniqueKey, Settings.WorkAreaKey, Settings.Monitor, _id, zoneCount, zoneArray);
}
-
- private static readonly string _registryPath = Settings.RegistryPath + "\\Layouts";
- private static readonly string _fullRegistryPath = Settings.FullRegistryPath + "\\Layouts";
}
}
diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/Models/Settings.cs b/src/modules/fancyzones/editor/FancyZonesEditor/Models/Settings.cs
index 3ca718a949..f28575b5ba 100644
--- a/src/modules/fancyzones/editor/FancyZonesEditor/Models/Settings.cs
+++ b/src/modules/fancyzones/editor/FancyZonesEditor/Models/Settings.cs
@@ -39,25 +39,25 @@ namespace FancyZonesEditor
ParseCommandLineArgs();
// Initialize the five default layout models: Focus, Columns, Rows, Grid, and PriorityGrid
- _defaultModels = new List(5);
+ DefaultModels = new List(5);
_focusModel = new CanvasLayoutModel("Focus", _focusModelId, (int)_workArea.Width, (int)_workArea.Height);
- _defaultModels.Add(_focusModel);
+ DefaultModels.Add(_focusModel);
_columnsModel = new GridLayoutModel("Columns", _columnsModelId);
_columnsModel.Rows = 1;
- _columnsModel.RowPercents = new int[1] { c_multiplier };
- _defaultModels.Add(_columnsModel);
+ _columnsModel.RowPercents = new int[1] { _multiplier };
+ DefaultModels.Add(_columnsModel);
_rowsModel = new GridLayoutModel("Rows", _rowsModelId);
_rowsModel.Columns = 1;
- _rowsModel.ColumnPercents = new int[1] { c_multiplier };
- _defaultModels.Add(_rowsModel);
+ _rowsModel.ColumnPercents = new int[1] { _multiplier };
+ DefaultModels.Add(_rowsModel);
_gridModel = new GridLayoutModel("Grid", _gridModelId);
- _defaultModels.Add(_gridModel);
+ DefaultModels.Add(_gridModel);
_priorityGridModel = new GridLayoutModel("Priority Grid", _priorityGridModelId);
- _defaultModels.Add(_priorityGridModel);
+ DefaultModels.Add(_priorityGridModel);
_blankCustomModel = new CanvasLayoutModel("Create new custom", _blankCustomModelId, (int)_workArea.Width, (int)_workArea.Height);
@@ -226,7 +226,7 @@ namespace FancyZonesEditor
{
_rowsModel.CellChildMap[i, 0] = i;
_columnsModel.CellChildMap[0, i] = i;
- _rowsModel.RowPercents[i] = c_multiplier / ZoneCount; // _columnsModel is sharing the same array
+ _rowsModel.RowPercents[i] = _multiplier / ZoneCount; // _columnsModel is sharing the same array
}
// Update the "Grid" Default Layout
@@ -258,12 +258,12 @@ namespace FancyZonesEditor
for (int row = 0; row < rows; row++)
{
- _gridModel.RowPercents[row] = c_multiplier / rows;
+ _gridModel.RowPercents[row] = _multiplier / rows;
}
for (int col = 0; col < cols; col++)
{
- _gridModel.ColumnPercents[col] = c_multiplier / cols;
+ _gridModel.ColumnPercents[col] = _multiplier / cols;
}
int index = 0;
@@ -297,10 +297,10 @@ namespace FancyZonesEditor
private void ParseCommandLineArgs()
{
- _workArea = System.Windows.SystemParameters.WorkArea;
+ _workArea = SystemParameters.WorkArea;
Monitor = 0;
_uniqueRegistryPath = FullRegistryPath;
- UniqueKey = "";
+ UniqueKey = string.Empty;
Dpi = 1;
string[] args = Environment.GetCommandLineArgs();
@@ -345,10 +345,7 @@ namespace FancyZonesEditor
}
}
- public IList DefaultModels
- {
- get { return _defaultModels; }
- }
+ public IList DefaultModels { get; }
public ObservableCollection CustomModels
{
@@ -383,8 +380,6 @@ namespace FancyZonesEditor
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
- // storage for Default Layout Models
- private IList _defaultModels;
private CanvasLayoutModel _focusModel;
private GridLayoutModel _rowsModel;
private GridLayoutModel _columnsModel;
@@ -416,6 +411,6 @@ namespace FancyZonesEditor
new byte[] { 0, 0, 0, 0, 0, 3, 4, 13, 5, 13, 6, 13, 5, 9, 196, 9, 196, 9, 196, 9, 196, 0, 1, 2, 3, 4, 1, 5, 6, 7, 8, 9, 10 },
};
- private const int c_multiplier = 10000;
+ private const int _multiplier = 10000;
}
}
diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/Native.cs b/src/modules/fancyzones/editor/FancyZonesEditor/Native.cs
new file mode 100644
index 0000000000..6adce18c97
--- /dev/null
+++ b/src/modules/fancyzones/editor/FancyZonesEditor/Native.cs
@@ -0,0 +1,27 @@
+// Copyright (c) Microsoft Corporation
+// The Microsoft Corporation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace FancyZonesEditor
+{
+ // PInvokes to handshake with fancyzones backend
+ internal static class Native
+ {
+ [DllImport("kernel32", SetLastError = true, CharSet = CharSet.Ansi)]
+ public static extern IntPtr LoadLibrary([MarshalAs(UnmanagedType.LPStr)]string lpFileName);
+
+ [DllImport("kernel32", CharSet = CharSet.Ansi, ExactSpelling = true, SetLastError = true)]
+ public static extern IntPtr GetProcAddress(IntPtr hModule, string procName);
+
+ internal delegate int PersistZoneSet(
+ [MarshalAs(UnmanagedType.LPWStr)] string activeKey,
+ [MarshalAs(UnmanagedType.LPWStr)] string resolutionKey,
+ uint monitor,
+ ushort layoutId,
+ int zoneCount,
+ [MarshalAs(UnmanagedType.LPArray)] int[] zoneArray);
+ }
+}
diff --git a/src/modules/fancyzones/editor/FancyZonesEditor/RowColInfo.cs b/src/modules/fancyzones/editor/FancyZonesEditor/RowColInfo.cs
index e1303dd4b4..a585e64387 100644
--- a/src/modules/fancyzones/editor/FancyZonesEditor/RowColInfo.cs
+++ b/src/modules/fancyzones/editor/FancyZonesEditor/RowColInfo.cs
@@ -6,6 +6,16 @@ namespace FancyZonesEditor
{
public class RowColInfo
{
+ private const int _multiplier = 10000;
+
+ public double Extent { get; set; }
+
+ public double Start { get; set; }
+
+ public double End { get; set; }
+
+ public int Percent { get; set; }
+
public RowColInfo(int percent)
{
Percent = percent;
@@ -13,15 +23,13 @@ namespace FancyZonesEditor
public RowColInfo(int index, int count)
{
- Percent = (c_multiplier / count) + ((index == 0) ? (c_multiplier % count) : 0);
+ Percent = (_multiplier / count) + ((index == 0) ? (_multiplier % count) : 0);
}
- private const int c_multiplier = 10000;
-
- public double SetExtent(double start, double totalExtent)
+ public double Recalculate(double start, double totalExtent)
{
Start = start;
- Extent = totalExtent * Percent / c_multiplier;
+ Extent = totalExtent * Percent / _multiplier;
End = Start + Extent;
return Extent;
}
@@ -35,10 +43,5 @@ namespace FancyZonesEditor
info[1] = new RowColInfo(Percent - newPercent);
return info;
}
-
- public int Percent;
- public double Extent;
- public double Start;
- public double End;
}
}