added multilang and settings
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Windows.Media;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
|
||||
namespace CursorLang.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Настройки приложения. Все изменения применяются на лету: подсказка и окно
|
||||
/// настроек привязаны к этим свойствам, а <c>SettingsService</c> сохраняет их на диск.
|
||||
/// </summary>
|
||||
public sealed partial class AppSettings : ObservableObject
|
||||
{
|
||||
/// <summary>Язык интерфейса в виде кода культуры: «ru», «en».</summary>
|
||||
[ObservableProperty]
|
||||
private string _language = "en";
|
||||
|
||||
[ObservableProperty]
|
||||
private PopupPlacementMode _placementMode = PopupPlacementMode.AtCursor;
|
||||
|
||||
[ObservableProperty]
|
||||
private CursorCorner _cursorCorner = CursorCorner.BottomRight;
|
||||
|
||||
/// <summary>Отступ от курсора в единицах WPF.</summary>
|
||||
[ObservableProperty]
|
||||
private double _cursorOffset = 16;
|
||||
|
||||
[ObservableProperty]
|
||||
private ScreenPosition _screenPosition = ScreenPosition.BottomRight;
|
||||
|
||||
/// <summary>Отступ от края монитора в единицах WPF.</summary>
|
||||
[ObservableProperty]
|
||||
private double _screenMargin = 24;
|
||||
|
||||
[ObservableProperty]
|
||||
private double _fontSize = 20;
|
||||
|
||||
/// <summary>Непрозрачность подсказки: 1.0 — полностью непрозрачная.</summary>
|
||||
[ObservableProperty]
|
||||
private double _opacity = 0.9;
|
||||
|
||||
/// <summary>Сколько подсказка держится на экране, в миллисекундах.</summary>
|
||||
[ObservableProperty]
|
||||
private double _durationMilliseconds = 500;
|
||||
|
||||
[ObservableProperty]
|
||||
private Color _backgroundColor = Color.FromRgb(0x20, 0x20, 0x20);
|
||||
|
||||
[JsonIgnore]
|
||||
public TimeSpan Duration => TimeSpan.FromMilliseconds(DurationMilliseconds);
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
namespace CursorLang.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Способ выбора места для подсказки.
|
||||
/// </summary>
|
||||
public enum PopupPlacementMode
|
||||
{
|
||||
/// <summary>Рядом с курсором мыши.</summary>
|
||||
AtCursor,
|
||||
|
||||
/// <summary>В заданной точке монитора с активным окном.</summary>
|
||||
FixedPoint,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// С какой стороны от курсора показывать подсказку.
|
||||
/// </summary>
|
||||
public enum CursorCorner
|
||||
{
|
||||
BottomRight,
|
||||
BottomLeft,
|
||||
TopRight,
|
||||
TopLeft,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Место на мониторе для режима <see cref="PopupPlacementMode.FixedPoint"/>.
|
||||
/// </summary>
|
||||
public enum ScreenPosition
|
||||
{
|
||||
TopLeft,
|
||||
TopRight,
|
||||
BottomLeft,
|
||||
BottomRight,
|
||||
Center,
|
||||
}
|
||||
Reference in New Issue
Block a user