diff --git a/Wino.Mail.WinUI/Selectors/NavigationMenuTemplateSelector.cs b/Wino.Mail.WinUI/Selectors/NavigationMenuTemplateSelector.cs index 3542317a..339fd155 100644 --- a/Wino.Mail.WinUI/Selectors/NavigationMenuTemplateSelector.cs +++ b/Wino.Mail.WinUI/Selectors/NavigationMenuTemplateSelector.cs @@ -24,7 +24,6 @@ public partial class NavigationMenuTemplateSelector : DataTemplateSelector public DataTemplate CreateNewFolderTemplate { get; set; } = null!; public DataTemplate SeperatorTemplate { get; set; } = null!; public DataTemplate NewMailTemplate { get; set; } = null!; - public DataTemplate NewContactTemplate { get; set; } = null!; public DataTemplate CalendarNewEventTemplate { get; set; } = null!; public DataTemplate CategoryItemsTemplate { get; set; } = null!; public DataTemplate FixAuthenticationIssueTemplate { get; set; } = null!; @@ -34,8 +33,6 @@ public partial class NavigationMenuTemplateSelector : DataTemplateSelector { if (item is NewCalendarEventMenuItem) return CalendarNewEventTemplate; - else if (item is NewContactMenuItem) - return NewContactTemplate; else if (item is NewMailMenuItem) return NewMailTemplate; else if (item is ContactsMenuItem) diff --git a/Wino.Mail.WinUI/ViewModels/ContactsShellClient.cs b/Wino.Mail.WinUI/ViewModels/ContactsShellClient.cs index fe530331..6143d5c2 100644 --- a/Wino.Mail.WinUI/ViewModels/ContactsShellClient.cs +++ b/Wino.Mail.WinUI/ViewModels/ContactsShellClient.cs @@ -1,5 +1,4 @@ using System.Threading.Tasks; -using CommunityToolkit.Mvvm.Messaging; using Wino.Core.Domain; using Wino.Core.Domain.Enums; using Wino.Core.Domain.Interfaces; @@ -7,14 +6,11 @@ using Wino.Core.Domain.MenuItems; using Wino.Core.Domain.Models; using Wino.Core.Domain.Models.Navigation; using Wino.Core.ViewModels; -using Wino.Messaging.Client.Contacts; namespace Wino.Mail.WinUI.ViewModels; public sealed class ContactsShellClient(INavigationService navigationService) : CoreBaseViewModel, IShellClient { - private readonly NewContactMenuItem _newContactMenuItem = new(); - public WinoApplicationMode Mode => WinoApplicationMode.Contacts; public MenuItemCollection? MenuItems { get; private set; } public object? SelectedMenuItem { get; set; } @@ -24,22 +20,12 @@ public sealed class ContactsShellClient(INavigationService navigationService) : { base.OnDispatcherAssigned(); MenuItems ??= new MenuItemCollection(Dispatcher); - - if (MenuItems.Count == 0) - { - MenuItems.Add(_newContactMenuItem); - } } public void Activate(ShellModeActivationContext activationContext) { OnNavigatedTo(NavigationMode.New, activationContext); - if (MenuItems?.Count == 0) - { - MenuItems.Add(_newContactMenuItem); - } - navigationService.Navigate(WinoPage.ContactsPage, null, NavigationReferenceFrame.InnerShellFrame); } @@ -51,22 +37,10 @@ public sealed class ContactsShellClient(INavigationService navigationService) : public void PrepareForShellShutdown() { SelectedMenuItem = null; - if (MenuItems != null) - { - MenuItems.Clear(); - MenuItems.Add(_newContactMenuItem); - } + MenuItems?.Clear(); } - public Task HandleNavigationItemInvokedAsync(IMenuItem? menuItem) - { - if (menuItem is NewContactMenuItem) - { - WeakReferenceMessenger.Default.Send(new NewContactRequested()); - } - - return Task.CompletedTask; - } + public Task HandleNavigationItemInvokedAsync(IMenuItem? menuItem) => Task.CompletedTask; public Task HandleNavigationSelectionChangedAsync(IMenuItem? menuItem) => Task.CompletedTask; } diff --git a/Wino.Mail.WinUI/Views/WinoAppShell.xaml b/Wino.Mail.WinUI/Views/WinoAppShell.xaml index 80be8260..a6c759be 100644 --- a/Wino.Mail.WinUI/Views/WinoAppShell.xaml +++ b/Wino.Mail.WinUI/Views/WinoAppShell.xaml @@ -391,23 +391,6 @@ - - - - - - - - - + + + + + + + ViewModel.CalendarClient.HandleNavigationItemInvokedAsync(new NewCalendarEventMenuItem()); + private void NewContactNavigationItemTapped(object sender, TappedRoutedEventArgs e) + { + e.Handled = true; + InvokeNewContact(); + } + + private void NewContactNavigationItemKeyDown(object sender, KeyRoutedEventArgs e) + { + if (e.Key is not (VirtualKey.Enter or VirtualKey.Space)) + return; + + e.Handled = true; + InvokeNewContact(); + } + + private static void InvokeNewContact() + => WeakReferenceMessenger.Default.Send(new NewContactRequested()); + private async void SynchronizeCalendarsNavigationItemTapped(object sender, TappedRoutedEventArgs e) { e.Handled = true;