extended models

This commit is contained in:
2026-08-09 20:07:20 +05:00
parent 7e4e569d53
commit 1a91d837cf
4 changed files with 102 additions and 0 deletions
+25
View File
@@ -19,12 +19,14 @@ public sealed partial class AppSettings : ObservableObject
[ObservableProperty]
private AppTheme _theme = AppTheme.System;
/// <summary>Where the popup is shown: at the cursor, at the caret or at a fixed point.</summary>
[ObservableProperty]
private PopupPlacementMode _placementMode = PopupPlacementMode.AtCursor;
// The side and the offset are stored per mode: the cursor and the caret call for
// different settings, and switching the mode does not reset them
/// <summary>The side of the cursor the popup is put on.</summary>
[ObservableProperty]
private AnchorSide _cursorSide = AnchorSide.BottomRight;
@@ -32,6 +34,7 @@ public sealed partial class AppSettings : ObservableObject
[ObservableProperty]
private double _cursorOffset = 16;
/// <summary>The side of the caret the popup is put on.</summary>
[ObservableProperty]
private AnchorSide _caretSide = AnchorSide.BottomRight;
@@ -39,6 +42,9 @@ public sealed partial class AppSettings : ObservableObject
[ObservableProperty]
private double _caretOffset = 16;
/// <summary>
/// The place on the monitor for the <see cref="PopupPlacementMode.FixedPoint"/> mode.
/// </summary>
[ObservableProperty]
private ScreenPosition _screenPosition = ScreenPosition.BottomRight;
@@ -46,6 +52,7 @@ public sealed partial class AppSettings : ObservableObject
[ObservableProperty]
private double _screenMargin = 24;
/// <summary>The size of the layout name in the popup, in WPF units.</summary>
[ObservableProperty]
private double _fontSize = 20;
@@ -71,15 +78,33 @@ public sealed partial class AppSettings : ObservableObject
[ObservableProperty]
private double _capsLockHoldMilliseconds = 300;
/// <summary>
/// Ask the repository about new versions on startup. A check can always be
/// started by hand — this setting turns off only the automatic one.
/// </summary>
[ObservableProperty]
private bool _checkForUpdates = true;
/// <summary>
/// When the application last asked about new versions successfully.
/// Stored so as not to go to the network on every startup.
/// </summary>
[ObservableProperty]
private DateTimeOffset? _lastUpdateCheck;
/// <summary>The fill of the popup. The opacity is set by <see cref="Opacity"/>.</summary>
[ObservableProperty]
private Color _backgroundColor = Color.FromRgb(0x20, 0x20, 0x20);
/// <summary>The colour of the layout name in the popup.</summary>
[ObservableProperty]
private Color _foregroundColor = Color.FromRgb(0xFF, 0xFF, 0xFF);
/// <summary><see cref="DurationMilliseconds"/> as a <see cref="TimeSpan"/>.</summary>
[JsonIgnore]
public TimeSpan Duration => TimeSpan.FromMilliseconds(DurationMilliseconds);
/// <summary><see cref="CapsLockHoldMilliseconds"/> as a <see cref="TimeSpan"/>.</summary>
[JsonIgnore]
public TimeSpan CapsLockHoldDelay => TimeSpan.FromMilliseconds(CapsLockHoldMilliseconds);
}