Files
2026-03-08 13:21:42 +01:00

66 lines
1.8 KiB
C#

using System;
using SQLite;
using Wino.Core.Domain.Enums;
namespace Wino.Core.Domain.Entities.Shared;
/// <summary>
/// Represents a user-defined keyboard shortcut for mail operations.
/// </summary>
public class KeyboardShortcut
{
[PrimaryKey]
public Guid Id { get; set; }
/// <summary>
/// The application mode this shortcut applies to.
/// </summary>
public WinoApplicationMode Mode { get; set; } = WinoApplicationMode.Mail;
/// <summary>
/// The key combination string (e.g., "D", "Delete", "F1").
/// </summary>
public string Key { get; set; }
/// <summary>
/// The modifier keys for this shortcut.
/// </summary>
public ModifierKeys ModifierKeys { get; set; }
/// <summary>
/// The shortcut action this shortcut triggers.
/// </summary>
public KeyboardShortcutAction Action { get; set; }
/// <summary>
/// Whether this shortcut is enabled.
/// </summary>
public bool IsEnabled { get; set; } = true;
/// <summary>
/// When this shortcut was created.
/// </summary>
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
/// <summary>
/// User-friendly display name for the shortcut.
/// </summary>
public string DisplayName
{
get
{
var modifierText = string.Empty;
if (ModifierKeys.HasFlag(ModifierKeys.Control))
modifierText += "Ctrl+";
if (ModifierKeys.HasFlag(ModifierKeys.Alt))
modifierText += "Alt+";
if (ModifierKeys.HasFlag(ModifierKeys.Shift))
modifierText += "Shift+";
if (ModifierKeys.HasFlag(ModifierKeys.Windows))
modifierText += "Win+";
return modifierText + Key;
}
}
}