FZConfigProperties.cs
1 // Copyright (c) Microsoft Corporation 2 // The Microsoft Corporation licenses this file to you under the MIT license. 3 // See the LICENSE file in the project root for more information. 4 5 using System.Text.Json; 6 using System.Text.Json.Serialization; 7 8 using Settings.UI.Library.Attributes; 9 10 namespace Microsoft.PowerToys.Settings.UI.Library 11 { 12 public class FZConfigProperties 13 { 14 // in reality, this file needs to be kept in sync currently with src\modules\fancyzones\lib\Settings.h 15 public const int VkOem3 = 0xc0; 16 public const int VkNext = 0x22; 17 public const int VkPrior = 0x21; 18 19 public static readonly HotkeySettings DefaultEditorHotkeyValue = new HotkeySettings(true, false, false, true, VkOem3); 20 public static readonly HotkeySettings DefaultNextTabHotkeyValue = new HotkeySettings(true, false, false, false, VkNext); 21 public static readonly HotkeySettings DefaultPrevTabHotkeyValue = new HotkeySettings(true, false, false, false, VkPrior); 22 23 public FZConfigProperties() 24 { 25 FancyzonesShiftDrag = new BoolProperty(ConfigDefaults.DefaultFancyzonesShiftDrag); 26 FancyzonesOverrideSnapHotkeys = new BoolProperty(); 27 FancyzonesMouseSwitch = new BoolProperty(); 28 FancyzonesMouseMiddleClickSpanningMultipleZones = new BoolProperty(); 29 FancyzonesMoveWindowsAcrossMonitors = new BoolProperty(); 30 FancyzonesMoveWindowsBasedOnPosition = new BoolProperty(); 31 FancyzonesOverlappingZonesAlgorithm = new IntProperty(); 32 FancyzonesDisplayOrWorkAreaChangeMoveWindows = new BoolProperty(ConfigDefaults.DefaultFancyzonesDisplayOrWorkAreaChangeMoveWindows); 33 FancyzonesZoneSetChangeMoveWindows = new BoolProperty(); 34 FancyzonesAppLastZoneMoveWindows = new BoolProperty(); 35 FancyzonesOpenWindowOnActiveMonitor = new BoolProperty(); 36 FancyzonesRestoreSize = new BoolProperty(); 37 FancyzonesQuickLayoutSwitch = new BoolProperty(ConfigDefaults.DefaultFancyzonesQuickLayoutSwitch); 38 FancyzonesFlashZonesOnQuickSwitch = new BoolProperty(ConfigDefaults.DefaultFancyzonesFlashZonesOnQuickSwitch); 39 UseCursorposEditorStartupscreen = new BoolProperty(ConfigDefaults.DefaultUseCursorposEditorStartupscreen); 40 FancyzonesShowOnAllMonitors = new BoolProperty(); 41 FancyzonesSpanZonesAcrossMonitors = new BoolProperty(); 42 FancyzonesZoneHighlightColor = new StringProperty(ConfigDefaults.DefaultFancyZonesZoneHighlightColor); 43 FancyzonesHighlightOpacity = new IntProperty(50); 44 FancyzonesEditorHotkey = new KeyboardKeysProperty(DefaultEditorHotkeyValue); 45 FancyzonesWindowSwitching = new BoolProperty(true); 46 FancyzonesNextTabHotkey = new KeyboardKeysProperty(DefaultNextTabHotkeyValue); 47 FancyzonesPrevTabHotkey = new KeyboardKeysProperty(DefaultPrevTabHotkeyValue); 48 FancyzonesMakeDraggedWindowTransparent = new BoolProperty(); 49 FancyzonesAllowPopupWindowSnap = new BoolProperty(); 50 FancyzonesAllowChildWindowSnap = new BoolProperty(); 51 FancyzonesDisableRoundCornersOnSnap = new BoolProperty(); 52 FancyzonesExcludedApps = new StringProperty(); 53 FancyzonesInActiveColor = new StringProperty(ConfigDefaults.DefaultFancyZonesInActiveColor); 54 FancyzonesBorderColor = new StringProperty(ConfigDefaults.DefaultFancyzonesBorderColor); 55 FancyzonesNumberColor = new StringProperty(ConfigDefaults.DefaultFancyzonesNumberColor); 56 FancyzonesSystemTheme = new BoolProperty(true); 57 FancyzonesShowZoneNumber = new BoolProperty(true); 58 } 59 60 [JsonPropertyName("fancyzones_shiftDrag")] 61 public BoolProperty FancyzonesShiftDrag { get; set; } 62 63 [JsonPropertyName("fancyzones_mouseSwitch")] 64 public BoolProperty FancyzonesMouseSwitch { get; set; } 65 66 [JsonPropertyName("fancyzones_mouseMiddleClickSpanningMultipleZones")] 67 public BoolProperty FancyzonesMouseMiddleClickSpanningMultipleZones { get; set; } 68 69 [JsonPropertyName("fancyzones_overrideSnapHotkeys")] 70 public BoolProperty FancyzonesOverrideSnapHotkeys { get; set; } 71 72 [JsonPropertyName("fancyzones_moveWindowAcrossMonitors")] 73 public BoolProperty FancyzonesMoveWindowsAcrossMonitors { get; set; } 74 75 [JsonPropertyName("fancyzones_moveWindowsBasedOnPosition")] 76 public BoolProperty FancyzonesMoveWindowsBasedOnPosition { get; set; } 77 78 [JsonPropertyName("fancyzones_overlappingZonesAlgorithm")] 79 public IntProperty FancyzonesOverlappingZonesAlgorithm { get; set; } 80 81 [JsonPropertyName("fancyzones_displayOrWorkAreaChange_moveWindows")] 82 public BoolProperty FancyzonesDisplayOrWorkAreaChangeMoveWindows { get; set; } 83 84 [JsonPropertyName("fancyzones_zoneSetChange_moveWindows")] 85 public BoolProperty FancyzonesZoneSetChangeMoveWindows { get; set; } 86 87 [JsonPropertyName("fancyzones_appLastZone_moveWindows")] 88 public BoolProperty FancyzonesAppLastZoneMoveWindows { get; set; } 89 90 [JsonPropertyName("fancyzones_openWindowOnActiveMonitor")] 91 public BoolProperty FancyzonesOpenWindowOnActiveMonitor { get; set; } 92 93 [JsonPropertyName("fancyzones_restoreSize")] 94 public BoolProperty FancyzonesRestoreSize { get; set; } 95 96 [JsonPropertyName("fancyzones_quickLayoutSwitch")] 97 public BoolProperty FancyzonesQuickLayoutSwitch { get; set; } 98 99 [JsonPropertyName("fancyzones_flashZonesOnQuickSwitch")] 100 public BoolProperty FancyzonesFlashZonesOnQuickSwitch { get; set; } 101 102 [JsonPropertyName("use_cursorpos_editor_startupscreen")] 103 public BoolProperty UseCursorposEditorStartupscreen { get; set; } 104 105 [JsonPropertyName("fancyzones_show_on_all_monitors")] 106 public BoolProperty FancyzonesShowOnAllMonitors { get; set; } 107 108 [JsonPropertyName("fancyzones_span_zones_across_monitors")] 109 public BoolProperty FancyzonesSpanZonesAcrossMonitors { get; set; } 110 111 [JsonPropertyName("fancyzones_makeDraggedWindowTransparent")] 112 public BoolProperty FancyzonesMakeDraggedWindowTransparent { get; set; } 113 114 [JsonPropertyName("fancyzones_allowPopupWindowSnap")] 115 [CmdConfigureIgnore] 116 public BoolProperty FancyzonesAllowPopupWindowSnap { get; set; } 117 118 [JsonPropertyName("fancyzones_allowChildWindowSnap")] 119 public BoolProperty FancyzonesAllowChildWindowSnap { get; set; } 120 121 [JsonPropertyName("fancyzones_disableRoundCornersOnSnap")] 122 public BoolProperty FancyzonesDisableRoundCornersOnSnap { get; set; } 123 124 [JsonPropertyName("fancyzones_zoneHighlightColor")] 125 public StringProperty FancyzonesZoneHighlightColor { get; set; } 126 127 [JsonPropertyName("fancyzones_highlight_opacity")] 128 public IntProperty FancyzonesHighlightOpacity { get; set; } 129 130 [JsonPropertyName("fancyzones_editor_hotkey")] 131 public KeyboardKeysProperty FancyzonesEditorHotkey { get; set; } 132 133 [JsonPropertyName("fancyzones_windowSwitching")] 134 public BoolProperty FancyzonesWindowSwitching { get; set; } 135 136 [JsonPropertyName("fancyzones_nextTab_hotkey")] 137 public KeyboardKeysProperty FancyzonesNextTabHotkey { get; set; } 138 139 [JsonPropertyName("fancyzones_prevTab_hotkey")] 140 public KeyboardKeysProperty FancyzonesPrevTabHotkey { get; set; } 141 142 [JsonPropertyName("fancyzones_excluded_apps")] 143 public StringProperty FancyzonesExcludedApps { get; set; } 144 145 [JsonPropertyName("fancyzones_zoneBorderColor")] 146 public StringProperty FancyzonesBorderColor { get; set; } 147 148 [JsonPropertyName("fancyzones_zoneColor")] 149 public StringProperty FancyzonesInActiveColor { get; set; } 150 151 [JsonPropertyName("fancyzones_zoneNumberColor")] 152 public StringProperty FancyzonesNumberColor { get; set; } 153 154 [JsonPropertyName("fancyzones_systemTheme")] 155 public BoolProperty FancyzonesSystemTheme { get; set; } 156 157 [JsonPropertyName("fancyzones_showZoneNumber")] 158 public BoolProperty FancyzonesShowZoneNumber { get; set; } 159 160 // converts the current to a json string. 161 public string ToJsonString() 162 { 163 return JsonSerializer.Serialize(this); 164 } 165 } 166 }