mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-15 19:27:56 +01:00
[FancyZonesEditor] Introduce const strings in LayoutModel.cs (#5196)
* Introduce const strings in LayoutModel.cs * Address PR comments - Update FirePropertyChanged
This commit is contained in:
@@ -27,7 +27,7 @@ namespace FancyZonesEditor.Models
|
||||
if (_rows != value)
|
||||
{
|
||||
_rows = value;
|
||||
FirePropertyChanged("Rows");
|
||||
FirePropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -47,7 +47,7 @@ namespace FancyZonesEditor.Models
|
||||
if (_cols != value)
|
||||
{
|
||||
_cols = value;
|
||||
FirePropertyChanged("Columns");
|
||||
FirePropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text.Json;
|
||||
using System.Windows;
|
||||
|
||||
@@ -27,11 +28,46 @@ namespace FancyZonesEditor.Models
|
||||
// Manages common properties and base persistence
|
||||
public abstract class LayoutModel : INotifyPropertyChanged
|
||||
{
|
||||
public static void ShowExceptionMessageBox(string message, Exception ex)
|
||||
// Localizable strings
|
||||
private const string ErrorMessageBoxTitle = "FancyZones Editor Exception Handler";
|
||||
private const string ErrorMessageBoxMessage = "Please report the bug to ";
|
||||
private const string ErrorSerializingDeletedLayouts = "Error serializing deleted layouts";
|
||||
private const string ErrorLoadingCustomLayouts = "Error loading custom layouts";
|
||||
private const string ErrorApplyingLayout = "Error applying layout";
|
||||
|
||||
// Non-localizable strings
|
||||
private const string NameStr = "name";
|
||||
private const string CustomZoneSetsJsonTag = "custom-zone-sets";
|
||||
private const string TypeJsonTag = "type";
|
||||
private const string UuidJsonTag = "uuid";
|
||||
private const string InfoJsonTag = "info";
|
||||
private const string GridJsonTag = "grid";
|
||||
private const string RowsJsonTag = "rows";
|
||||
private const string ColumnsJsonTag = "columns";
|
||||
private const string RowsPercentageJsonTag = "rows-percentage";
|
||||
private const string ColumnsPercentageJsonTag = "columns-percentage";
|
||||
private const string CellChildMapJsonTag = "cell-child-map";
|
||||
private const string ZonesJsonTag = "zones";
|
||||
private const string CanvasJsonTag = "canvas";
|
||||
private const string RefWidthJsonTag = "ref-width";
|
||||
private const string RefHeightJsonTag = "ref-height";
|
||||
private const string XJsonTag = "X";
|
||||
private const string YJsonTag = "Y";
|
||||
private const string WidthJsonTag = "width";
|
||||
private const string HeightJsonTag = "height";
|
||||
private const string FocusJsonTag = "focus";
|
||||
private const string PriorityGridJsonTag = "priority-grid";
|
||||
private const string CustomJsonTag = "custom";
|
||||
|
||||
public static void ShowExceptionMessageBox(string message, Exception exception = null)
|
||||
{
|
||||
string title = "FancyZones Editor Exception Handler";
|
||||
string fullMessage = "Please report the bug to https://github.com/microsoft/PowerToys/issues \n" + message + ": " + ex.Message;
|
||||
MessageBox.Show(fullMessage, title);
|
||||
string fullMessage = ErrorMessageBoxMessage + "https://github.com/microsoft/PowerToys/issues \n" + message;
|
||||
if (exception != null)
|
||||
{
|
||||
fullMessage += ": " + exception.Message;
|
||||
}
|
||||
|
||||
MessageBox.Show(fullMessage, ErrorMessageBoxTitle);
|
||||
}
|
||||
|
||||
protected LayoutModel()
|
||||
@@ -74,7 +110,7 @@ namespace FancyZonesEditor.Models
|
||||
if (_name != value)
|
||||
{
|
||||
_name = value;
|
||||
FirePropertyChanged("Name");
|
||||
FirePropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -107,7 +143,7 @@ namespace FancyZonesEditor.Models
|
||||
if (_isSelected != value)
|
||||
{
|
||||
_isSelected = value;
|
||||
FirePropertyChanged("IsSelected");
|
||||
FirePropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -118,7 +154,7 @@ namespace FancyZonesEditor.Models
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
// FirePropertyChanged -- wrapper that calls INPC.PropertyChanged
|
||||
protected virtual void FirePropertyChanged(string propertyName)
|
||||
protected virtual void FirePropertyChanged([CallerMemberName] string propertyName = null)
|
||||
{
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
@@ -158,7 +194,7 @@ namespace FancyZonesEditor.Models
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowExceptionMessageBox("Error serializing deleted layouts", ex);
|
||||
ShowExceptionMessageBox(ErrorSerializingDeletedLayouts, ex);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -171,36 +207,36 @@ namespace FancyZonesEditor.Models
|
||||
{
|
||||
FileStream inputStream = File.Open(Settings.FancyZonesSettingsFile, FileMode.Open);
|
||||
JsonDocument jsonObject = JsonDocument.Parse(inputStream, options: default);
|
||||
JsonElement.ArrayEnumerator customZoneSetsEnumerator = jsonObject.RootElement.GetProperty("custom-zone-sets").EnumerateArray();
|
||||
JsonElement.ArrayEnumerator customZoneSetsEnumerator = jsonObject.RootElement.GetProperty(CustomZoneSetsJsonTag).EnumerateArray();
|
||||
|
||||
while (customZoneSetsEnumerator.MoveNext())
|
||||
{
|
||||
var current = customZoneSetsEnumerator.Current;
|
||||
string name = current.GetProperty("name").GetString();
|
||||
string type = current.GetProperty("type").GetString();
|
||||
string uuid = current.GetProperty("uuid").GetString();
|
||||
var info = current.GetProperty("info");
|
||||
if (type.Equals("grid"))
|
||||
string name = current.GetProperty(NameStr).GetString();
|
||||
string type = current.GetProperty(TypeJsonTag).GetString();
|
||||
string uuid = current.GetProperty(UuidJsonTag).GetString();
|
||||
var info = current.GetProperty(InfoJsonTag);
|
||||
if (type.Equals(GridJsonTag))
|
||||
{
|
||||
int rows = info.GetProperty("rows").GetInt32();
|
||||
int columns = info.GetProperty("columns").GetInt32();
|
||||
int rows = info.GetProperty(RowsJsonTag).GetInt32();
|
||||
int columns = info.GetProperty(ColumnsJsonTag).GetInt32();
|
||||
|
||||
List<int> rowsPercentage = new List<int>(rows);
|
||||
JsonElement.ArrayEnumerator rowsPercentageEnumerator = info.GetProperty("rows-percentage").EnumerateArray();
|
||||
JsonElement.ArrayEnumerator rowsPercentageEnumerator = info.GetProperty(RowsPercentageJsonTag).EnumerateArray();
|
||||
while (rowsPercentageEnumerator.MoveNext())
|
||||
{
|
||||
rowsPercentage.Add(rowsPercentageEnumerator.Current.GetInt32());
|
||||
}
|
||||
|
||||
List<int> columnsPercentage = new List<int>(columns);
|
||||
JsonElement.ArrayEnumerator columnsPercentageEnumerator = info.GetProperty("columns-percentage").EnumerateArray();
|
||||
JsonElement.ArrayEnumerator columnsPercentageEnumerator = info.GetProperty(ColumnsPercentageJsonTag).EnumerateArray();
|
||||
while (columnsPercentageEnumerator.MoveNext())
|
||||
{
|
||||
columnsPercentage.Add(columnsPercentageEnumerator.Current.GetInt32());
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
JsonElement.ArrayEnumerator cellChildMapRows = info.GetProperty("cell-child-map").EnumerateArray();
|
||||
JsonElement.ArrayEnumerator cellChildMapRows = info.GetProperty(CellChildMapJsonTag).EnumerateArray();
|
||||
int[,] cellChildMap = new int[rows, columns];
|
||||
while (cellChildMapRows.MoveNext())
|
||||
{
|
||||
@@ -216,19 +252,19 @@ namespace FancyZonesEditor.Models
|
||||
|
||||
_customModels.Add(new GridLayoutModel(uuid, name, LayoutType.Custom, rows, columns, rowsPercentage, columnsPercentage, cellChildMap));
|
||||
}
|
||||
else if (type.Equals("canvas"))
|
||||
else if (type.Equals(CanvasJsonTag))
|
||||
{
|
||||
int lastWorkAreaWidth = info.GetProperty("ref-width").GetInt32();
|
||||
int lastWorkAreaHeight = info.GetProperty("ref-height").GetInt32();
|
||||
int lastWorkAreaWidth = info.GetProperty(RefWidthJsonTag).GetInt32();
|
||||
int lastWorkAreaHeight = info.GetProperty(RefHeightJsonTag).GetInt32();
|
||||
|
||||
JsonElement.ArrayEnumerator zonesEnumerator = info.GetProperty("zones").EnumerateArray();
|
||||
JsonElement.ArrayEnumerator zonesEnumerator = info.GetProperty(ZonesJsonTag).EnumerateArray();
|
||||
IList<Int32Rect> zones = new List<Int32Rect>();
|
||||
while (zonesEnumerator.MoveNext())
|
||||
{
|
||||
int x = zonesEnumerator.Current.GetProperty("X").GetInt32();
|
||||
int y = zonesEnumerator.Current.GetProperty("Y").GetInt32();
|
||||
int width = zonesEnumerator.Current.GetProperty("width").GetInt32();
|
||||
int height = zonesEnumerator.Current.GetProperty("height").GetInt32();
|
||||
int x = zonesEnumerator.Current.GetProperty(XJsonTag).GetInt32();
|
||||
int y = zonesEnumerator.Current.GetProperty(YJsonTag).GetInt32();
|
||||
int width = zonesEnumerator.Current.GetProperty(WidthJsonTag).GetInt32();
|
||||
int height = zonesEnumerator.Current.GetProperty(HeightJsonTag).GetInt32();
|
||||
zones.Add(new Int32Rect(x, y, width, height));
|
||||
}
|
||||
|
||||
@@ -240,7 +276,7 @@ namespace FancyZonesEditor.Models
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowExceptionMessageBox("Error loading custom layouts", ex);
|
||||
ShowExceptionMessageBox(ErrorLoadingCustomLayouts, ex);
|
||||
return new ObservableCollection<LayoutModel>();
|
||||
}
|
||||
|
||||
@@ -291,22 +327,22 @@ namespace FancyZonesEditor.Models
|
||||
switch (Type)
|
||||
{
|
||||
case LayoutType.Focus:
|
||||
activeZoneSet.Type = "focus";
|
||||
activeZoneSet.Type = FocusJsonTag;
|
||||
break;
|
||||
case LayoutType.Rows:
|
||||
activeZoneSet.Type = "rows";
|
||||
activeZoneSet.Type = RowsJsonTag;
|
||||
break;
|
||||
case LayoutType.Columns:
|
||||
activeZoneSet.Type = "columns";
|
||||
activeZoneSet.Type = ColumnsJsonTag;
|
||||
break;
|
||||
case LayoutType.Grid:
|
||||
activeZoneSet.Type = "grid";
|
||||
activeZoneSet.Type = GridJsonTag;
|
||||
break;
|
||||
case LayoutType.PriorityGrid:
|
||||
activeZoneSet.Type = "priority-grid";
|
||||
activeZoneSet.Type = PriorityGridJsonTag;
|
||||
break;
|
||||
case LayoutType.Custom:
|
||||
activeZoneSet.Type = "custom";
|
||||
activeZoneSet.Type = CustomJsonTag;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -333,7 +369,7 @@ namespace FancyZonesEditor.Models
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowExceptionMessageBox("Error applying layout", ex);
|
||||
ShowExceptionMessageBox(ErrorApplyingLayout, ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text.Json;
|
||||
using System.Windows;
|
||||
using FancyZonesEditor.Models;
|
||||
@@ -169,7 +170,7 @@ namespace FancyZonesEditor
|
||||
{
|
||||
_zoneCount = value;
|
||||
UpdateLayoutModels();
|
||||
FirePropertyChanged("ZoneCount");
|
||||
FirePropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -189,7 +190,7 @@ namespace FancyZonesEditor
|
||||
if (_spacing != value)
|
||||
{
|
||||
_spacing = value;
|
||||
FirePropertyChanged("Spacing");
|
||||
FirePropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -209,7 +210,7 @@ namespace FancyZonesEditor
|
||||
if (_showSpacing != value)
|
||||
{
|
||||
_showSpacing = value;
|
||||
FirePropertyChanged("ShowSpacing");
|
||||
FirePropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -229,7 +230,7 @@ namespace FancyZonesEditor
|
||||
if (_isShiftKeyPressed != value)
|
||||
{
|
||||
_isShiftKeyPressed = value;
|
||||
FirePropertyChanged("IsShiftKeyPressed");
|
||||
FirePropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -249,7 +250,7 @@ namespace FancyZonesEditor
|
||||
if (_isCtrlKeyPressed != value)
|
||||
{
|
||||
_isCtrlKeyPressed = value;
|
||||
FirePropertyChanged("IsCtrlKeyPressed");
|
||||
FirePropertyChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -521,7 +522,7 @@ namespace FancyZonesEditor
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
// FirePropertyChanged -- wrapper that calls INPC.PropertyChanged
|
||||
protected virtual void FirePropertyChanged(string propertyName)
|
||||
protected virtual void FirePropertyChanged([CallerMemberName] string propertyName = null)
|
||||
{
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user