using Windows.System; using Wino.Core.Domain.Enums; namespace Wino.Mail.WinUI.Extensions; /// /// Extension methods for converting between Windows VirtualKeyModifiers and Domain ModifierKeys. /// public static class ModifierKeysExtensions { /// /// Converts Windows VirtualKeyModifiers to Domain ModifierKeys. /// /// The Windows VirtualKeyModifiers to convert. /// The equivalent Domain ModifierKeys. public static ModifierKeys ToDomainModifierKeys(this VirtualKeyModifiers virtualKeyModifiers) { var modifierKeys = ModifierKeys.None; if (virtualKeyModifiers.HasFlag(VirtualKeyModifiers.Control)) modifierKeys |= ModifierKeys.Control; if (virtualKeyModifiers.HasFlag(VirtualKeyModifiers.Menu)) // Alt key modifierKeys |= ModifierKeys.Alt; if (virtualKeyModifiers.HasFlag(VirtualKeyModifiers.Shift)) modifierKeys |= ModifierKeys.Shift; if (virtualKeyModifiers.HasFlag(VirtualKeyModifiers.Windows)) modifierKeys |= ModifierKeys.Windows; return modifierKeys; } /// /// Converts Domain ModifierKeys to Windows VirtualKeyModifiers. /// /// The Domain ModifierKeys to convert. /// The equivalent Windows VirtualKeyModifiers. public static VirtualKeyModifiers ToVirtualKeyModifiers(this ModifierKeys modifierKeys) { var virtualKeyModifiers = VirtualKeyModifiers.None; if (modifierKeys.HasFlag(ModifierKeys.Control)) virtualKeyModifiers |= VirtualKeyModifiers.Control; if (modifierKeys.HasFlag(ModifierKeys.Alt)) virtualKeyModifiers |= VirtualKeyModifiers.Menu; // Alt key if (modifierKeys.HasFlag(ModifierKeys.Shift)) virtualKeyModifiers |= VirtualKeyModifiers.Shift; if (modifierKeys.HasFlag(ModifierKeys.Windows)) virtualKeyModifiers |= VirtualKeyModifiers.Windows; return virtualKeyModifiers; } }