Files
Wino-Mail/Wino.Core.ViewModels/Data/KeyboardShortcutViewModel.cs
T

95 lines
3.1 KiB
C#
Raw Normal View History

2025-10-29 16:26:46 +01:00
using System;
using CommunityToolkit.Mvvm.ComponentModel;
using Wino.Core.Domain;
using Wino.Core.Domain.Entities.Shared;
using Wino.Core.Domain.Enums;
namespace Wino.Core.ViewModels.Data;
/// <summary>
/// ViewModel wrapper for KeyboardShortcut entity.
/// </summary>
public partial class KeyboardShortcutViewModel : ObservableObject
{
[ObservableProperty]
2025-10-29 17:03:17 +01:00
public partial bool IsEnabled { get; set; }
2025-10-29 16:26:46 +01:00
public Guid Id { get; }
2026-03-08 13:21:42 +01:00
public WinoApplicationMode Mode { get; }
2025-10-29 16:26:46 +01:00
public string Key { get; }
public ModifierKeys ModifierKeys { get; }
2026-03-08 13:21:42 +01:00
public KeyboardShortcutAction Action { get; }
2025-10-29 16:26:46 +01:00
public DateTime CreatedAt { get; }
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;
}
}
2026-03-08 13:21:42 +01:00
public string ModeDisplayName => Mode switch
{
WinoApplicationMode.Mail => Translator.KeyboardShortcuts_ModeMail,
WinoApplicationMode.Calendar => Translator.KeyboardShortcuts_ModeCalendar,
_ => Mode.ToString()
};
public string ActionDisplayName
2025-10-29 16:26:46 +01:00
{
get
{
2026-03-08 13:21:42 +01:00
return Action switch
2025-10-29 16:26:46 +01:00
{
2026-03-08 13:21:42 +01:00
KeyboardShortcutAction.NewMail => Translator.MenuNewMail,
KeyboardShortcutAction.ToggleReadUnread => Translator.KeyboardShortcuts_ActionToggleReadUnread,
KeyboardShortcutAction.ToggleFlag => Translator.KeyboardShortcuts_ActionToggleFlag,
KeyboardShortcutAction.ToggleArchive => Translator.KeyboardShortcuts_ActionToggleArchive,
KeyboardShortcutAction.Delete => Translator.Buttons_Delete,
KeyboardShortcutAction.Move => Translator.MailOperation_Move,
KeyboardShortcutAction.Reply => Translator.MailOperation_Reply,
KeyboardShortcutAction.ReplyAll => Translator.MailOperation_ReplyAll,
KeyboardShortcutAction.Send => Translator.Buttons_Send,
KeyboardShortcutAction.NewEvent => Translator.CalendarEventCompose_NewEventButton,
_ => Action.ToString()
2025-10-29 16:26:46 +01:00
};
}
}
public KeyboardShortcutViewModel(KeyboardShortcut shortcut)
{
Id = shortcut.Id;
2026-03-08 13:21:42 +01:00
Mode = shortcut.Mode;
2025-10-29 16:26:46 +01:00
Key = shortcut.Key;
ModifierKeys = shortcut.ModifierKeys;
2026-03-08 13:21:42 +01:00
Action = shortcut.Action;
2025-10-29 16:26:46 +01:00
CreatedAt = shortcut.CreatedAt;
IsEnabled = shortcut.IsEnabled;
}
public KeyboardShortcut ToEntity()
{
return new KeyboardShortcut
{
Id = Id,
2026-03-08 13:21:42 +01:00
Mode = Mode,
2025-10-29 16:26:46 +01:00
Key = Key,
ModifierKeys = ModifierKeys,
2026-03-08 13:21:42 +01:00
Action = Action,
2025-10-29 16:26:46 +01:00
CreatedAt = CreatedAt,
IsEnabled = IsEnabled
};
}
}