Fixing modiufiers.
This commit is contained in:
@@ -44,18 +44,18 @@ public partial class KeyboardShortcutViewModel : ObservableObject
|
|||||||
{
|
{
|
||||||
return MailOperation switch
|
return MailOperation switch
|
||||||
{
|
{
|
||||||
MailOperation.Archive => "Archive",
|
MailOperation.Archive => Translator.MailOperation_Archive,
|
||||||
MailOperation.UnArchive => "Unarchive",
|
MailOperation.UnArchive => Translator.MailOperation_Unarchive,
|
||||||
MailOperation.SoftDelete => "Delete",
|
MailOperation.SoftDelete => Translator.MailOperation_Delete,
|
||||||
MailOperation.Move => "Move",
|
MailOperation.Move => Translator.MailOperation_Move,
|
||||||
MailOperation.MoveToJunk => "Move to Junk",
|
MailOperation.MoveToJunk => Translator.MailOperation_MoveJunk,
|
||||||
MailOperation.SetFlag => "Set Flag",
|
MailOperation.SetFlag => Translator.MailOperation_SetFlag,
|
||||||
MailOperation.ClearFlag => "Clear Flag",
|
MailOperation.ClearFlag => Translator.MailOperation_ClearFlag,
|
||||||
MailOperation.MarkAsRead => "Mark as Read",
|
MailOperation.MarkAsRead => Translator.MailOperation_MarkAsRead,
|
||||||
MailOperation.MarkAsUnread => "Mark as Unread",
|
MailOperation.MarkAsUnread => Translator.MailOperation_MarkAsUnread,
|
||||||
MailOperation.Reply => "Reply",
|
MailOperation.Reply => Translator.MailOperation_Reply,
|
||||||
MailOperation.ReplyAll => "Reply All",
|
MailOperation.ReplyAll => Translator.MailOperation_ReplyAll,
|
||||||
MailOperation.Forward => "Forward",
|
MailOperation.Forward => Translator.MailOperation_Forward,
|
||||||
_ => MailOperation.ToString()
|
_ => MailOperation.ToString()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using CommunityToolkit.Mvvm.ComponentModel;
|
using CommunityToolkit.Mvvm.ComponentModel;
|
||||||
|
using Wino.Core.Domain;
|
||||||
using Wino.Core.Domain.Enums;
|
using Wino.Core.Domain.Enums;
|
||||||
|
|
||||||
namespace Wino.Mail.ViewModels.Data;
|
namespace Wino.Mail.ViewModels.Data;
|
||||||
@@ -39,7 +40,7 @@ public partial class ThreadMailItemViewModel : ObservableRecipient, IMailListIte
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the latest email's sender name for display
|
/// Gets the latest email's sender name for display
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string FromName => latestMailViewModel?.MailCopy?.SenderContact.Name;
|
public string FromName => latestMailViewModel?.MailCopy?.SenderContact?.Name ?? Translator.UnknownSender;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the latest email's creation date for sorting
|
/// Gets the latest email's creation date for sorting
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
using Windows.System;
|
||||||
|
using Wino.Core.Domain.Enums;
|
||||||
|
|
||||||
|
namespace Wino.Mail.WinUI.Extensions;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Extension methods for converting between Windows VirtualKeyModifiers and Domain ModifierKeys.
|
||||||
|
/// </summary>
|
||||||
|
public static class ModifierKeysExtensions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Converts Windows VirtualKeyModifiers to Domain ModifierKeys.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="virtualKeyModifiers">The Windows VirtualKeyModifiers to convert.</param>
|
||||||
|
/// <returns>The equivalent Domain ModifierKeys.</returns>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Converts Domain ModifierKeys to Windows VirtualKeyModifiers.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="modifierKeys">The Domain ModifierKeys to convert.</param>
|
||||||
|
/// <returns>The equivalent Windows VirtualKeyModifiers.</returns>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -24,6 +24,7 @@ using Wino.Core.Domain.Models.Navigation;
|
|||||||
using Wino.Mail.ViewModels.Data;
|
using Wino.Mail.ViewModels.Data;
|
||||||
using Wino.Mail.ViewModels.Messages;
|
using Wino.Mail.ViewModels.Messages;
|
||||||
using Wino.Mail.WinUI.Controls.ListView;
|
using Wino.Mail.WinUI.Controls.ListView;
|
||||||
|
using Wino.Mail.WinUI.Extensions;
|
||||||
using Wino.MenuFlyouts.Context;
|
using Wino.MenuFlyouts.Context;
|
||||||
using Wino.Messaging.Client.Mails;
|
using Wino.Messaging.Client.Mails;
|
||||||
using Wino.Views.Abstract;
|
using Wino.Views.Abstract;
|
||||||
@@ -40,7 +41,7 @@ public sealed partial class MailListPage : MailListPageAbstract,
|
|||||||
|
|
||||||
private IStatePersistanceService StatePersistenceService { get; } = Core.WinUI.WinoApplication.Current.Services.GetService<IStatePersistanceService>() ?? throw new Exception($"Can't resolve {nameof(KeyPressService)}");
|
private IStatePersistanceService StatePersistenceService { get; } = Core.WinUI.WinoApplication.Current.Services.GetService<IStatePersistanceService>() ?? throw new Exception($"Can't resolve {nameof(KeyPressService)}");
|
||||||
private IKeyPressService KeyPressService { get; } = Core.WinUI.WinoApplication.Current.Services.GetService<IKeyPressService>() ?? throw new Exception($"Can't resolve {nameof(KeyPressService)}");
|
private IKeyPressService KeyPressService { get; } = Core.WinUI.WinoApplication.Current.Services.GetService<IKeyPressService>() ?? throw new Exception($"Can't resolve {nameof(KeyPressService)}");
|
||||||
|
private IKeyboardShortcutService KeyboardShortcutService { get; } = Core.WinUI.WinoApplication.Current.Services.GetService<IKeyboardShortcutService>() ?? throw new Exception($"Can't resolve {nameof(IKeyboardShortcutService)}");
|
||||||
public MailListPage()
|
public MailListPage()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
@@ -540,6 +541,22 @@ public sealed partial class MailListPage : MailListPageAbstract,
|
|||||||
{
|
{
|
||||||
await ViewModel.MailCollection.ToggleSelectAllAsync();
|
await ViewModel.MailCollection.ToggleSelectAllAsync();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Check keyboard shortcuts from service.
|
||||||
|
ModifierKeys modifiers = args.Modifiers.ToDomainModifierKeys();
|
||||||
|
|
||||||
|
var operation = await KeyboardShortcutService.GetMailOperationForKeyAsync(args.Key.ToString(), modifiers);
|
||||||
|
|
||||||
|
if (operation != null)
|
||||||
|
{
|
||||||
|
ViewModel.ExecuteMailOperationCommand.Execute(operation);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
args.Handled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void WinoListViewItemClicked(object sender, ItemClickEventArgs e)
|
private async void WinoListViewItemClicked(object sender, ItemClickEventArgs e)
|
||||||
|
|||||||
Reference in New Issue
Block a user