Remove new contact fromm menu list.

This commit is contained in:
Burak Kaan Köse
2026-04-12 20:12:48 +02:00
parent 3977401057
commit b6bf5f2cd1
4 changed files with 41 additions and 49 deletions
@@ -24,7 +24,6 @@ public partial class NavigationMenuTemplateSelector : DataTemplateSelector
public DataTemplate CreateNewFolderTemplate { get; set; } = null!; public DataTemplate CreateNewFolderTemplate { get; set; } = null!;
public DataTemplate SeperatorTemplate { get; set; } = null!; public DataTemplate SeperatorTemplate { get; set; } = null!;
public DataTemplate NewMailTemplate { get; set; } = null!; public DataTemplate NewMailTemplate { get; set; } = null!;
public DataTemplate NewContactTemplate { get; set; } = null!;
public DataTemplate CalendarNewEventTemplate { get; set; } = null!; public DataTemplate CalendarNewEventTemplate { get; set; } = null!;
public DataTemplate CategoryItemsTemplate { get; set; } = null!; public DataTemplate CategoryItemsTemplate { get; set; } = null!;
public DataTemplate FixAuthenticationIssueTemplate { get; set; } = null!; public DataTemplate FixAuthenticationIssueTemplate { get; set; } = null!;
@@ -34,8 +33,6 @@ public partial class NavigationMenuTemplateSelector : DataTemplateSelector
{ {
if (item is NewCalendarEventMenuItem) if (item is NewCalendarEventMenuItem)
return CalendarNewEventTemplate; return CalendarNewEventTemplate;
else if (item is NewContactMenuItem)
return NewContactTemplate;
else if (item is NewMailMenuItem) else if (item is NewMailMenuItem)
return NewMailTemplate; return NewMailTemplate;
else if (item is ContactsMenuItem) else if (item is ContactsMenuItem)
@@ -1,5 +1,4 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using CommunityToolkit.Mvvm.Messaging;
using Wino.Core.Domain; using Wino.Core.Domain;
using Wino.Core.Domain.Enums; using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Interfaces; using Wino.Core.Domain.Interfaces;
@@ -7,14 +6,11 @@ using Wino.Core.Domain.MenuItems;
using Wino.Core.Domain.Models; using Wino.Core.Domain.Models;
using Wino.Core.Domain.Models.Navigation; using Wino.Core.Domain.Models.Navigation;
using Wino.Core.ViewModels; using Wino.Core.ViewModels;
using Wino.Messaging.Client.Contacts;
namespace Wino.Mail.WinUI.ViewModels; namespace Wino.Mail.WinUI.ViewModels;
public sealed class ContactsShellClient(INavigationService navigationService) : CoreBaseViewModel, IShellClient public sealed class ContactsShellClient(INavigationService navigationService) : CoreBaseViewModel, IShellClient
{ {
private readonly NewContactMenuItem _newContactMenuItem = new();
public WinoApplicationMode Mode => WinoApplicationMode.Contacts; public WinoApplicationMode Mode => WinoApplicationMode.Contacts;
public MenuItemCollection? MenuItems { get; private set; } public MenuItemCollection? MenuItems { get; private set; }
public object? SelectedMenuItem { get; set; } public object? SelectedMenuItem { get; set; }
@@ -24,22 +20,12 @@ public sealed class ContactsShellClient(INavigationService navigationService) :
{ {
base.OnDispatcherAssigned(); base.OnDispatcherAssigned();
MenuItems ??= new MenuItemCollection(Dispatcher); MenuItems ??= new MenuItemCollection(Dispatcher);
if (MenuItems.Count == 0)
{
MenuItems.Add(_newContactMenuItem);
}
} }
public void Activate(ShellModeActivationContext activationContext) public void Activate(ShellModeActivationContext activationContext)
{ {
OnNavigatedTo(NavigationMode.New, activationContext); OnNavigatedTo(NavigationMode.New, activationContext);
if (MenuItems?.Count == 0)
{
MenuItems.Add(_newContactMenuItem);
}
navigationService.Navigate(WinoPage.ContactsPage, null, NavigationReferenceFrame.InnerShellFrame); navigationService.Navigate(WinoPage.ContactsPage, null, NavigationReferenceFrame.InnerShellFrame);
} }
@@ -51,22 +37,10 @@ public sealed class ContactsShellClient(INavigationService navigationService) :
public void PrepareForShellShutdown() public void PrepareForShellShutdown()
{ {
SelectedMenuItem = null; SelectedMenuItem = null;
if (MenuItems != null) MenuItems?.Clear();
{
MenuItems.Clear();
MenuItems.Add(_newContactMenuItem);
}
} }
public Task HandleNavigationItemInvokedAsync(IMenuItem? menuItem) public Task HandleNavigationItemInvokedAsync(IMenuItem? menuItem) => Task.CompletedTask;
{
if (menuItem is NewContactMenuItem)
{
WeakReferenceMessenger.Default.Send(new NewContactRequested());
}
return Task.CompletedTask;
}
public Task HandleNavigationSelectionChangedAsync(IMenuItem? menuItem) => Task.CompletedTask; public Task HandleNavigationSelectionChangedAsync(IMenuItem? menuItem) => Task.CompletedTask;
} }
+20 -18
View File
@@ -391,23 +391,6 @@
</coreControls:WinoNavigationViewItem> </coreControls:WinoNavigationViewItem>
</DataTemplate> </DataTemplate>
<DataTemplate x:Key="NewContactTemplate" x:DataType="menu:NewContactMenuItem">
<coreControls:WinoNavigationViewItem
Height="50"
DataContext="{x:Bind}"
SelectsOnInvoked="False">
<muxc:NavigationViewItem.Icon>
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph="&#xE710;" />
</muxc:NavigationViewItem.Icon>
<TextBlock
Margin="0,-2,0,0"
VerticalAlignment="Center"
FontSize="16"
Style="{StaticResource FlyoutPickerTitleTextBlockStyle}"
Text="{x:Bind domain:Translator.ContactsPane_NewContact}" />
</coreControls:WinoNavigationViewItem>
</DataTemplate>
<coreSelectors:NavigationMenuTemplateSelector <coreSelectors:NavigationMenuTemplateSelector
x:Key="NavigationMenuTemplateSelector" x:Key="NavigationMenuTemplateSelector"
ClickableAccountMenuTemplate="{StaticResource ClickableAccountMenuTemplate}" ClickableAccountMenuTemplate="{StaticResource ClickableAccountMenuTemplate}"
@@ -417,7 +400,6 @@
MergedAccountFolderTemplate="{StaticResource MergedAccountFolderMenuItemTemplate}" MergedAccountFolderTemplate="{StaticResource MergedAccountFolderMenuItemTemplate}"
MergedAccountMoreExpansionItemTemplate="{StaticResource MergedAccountMoreFolderItemTemplate}" MergedAccountMoreExpansionItemTemplate="{StaticResource MergedAccountMoreFolderItemTemplate}"
MergedAccountTemplate="{StaticResource MergedAccountTemplate}" MergedAccountTemplate="{StaticResource MergedAccountTemplate}"
NewContactTemplate="{StaticResource NewContactTemplate}"
NewMailTemplate="{StaticResource CreateNewMailTemplate}" NewMailTemplate="{StaticResource CreateNewMailTemplate}"
RatingItemTemplate="{StaticResource RatingItemTemplate}" RatingItemTemplate="{StaticResource RatingItemTemplate}"
SeperatorTemplate="{StaticResource SeperatorTemplate}" SeperatorTemplate="{StaticResource SeperatorTemplate}"
@@ -639,6 +621,26 @@
VerticalScrollMode="Auto" VerticalScrollMode="Auto"
Visibility="Collapsed"> Visibility="Collapsed">
<StackPanel Spacing="6"> <StackPanel Spacing="6">
<coreControls:WinoNavigationViewItem
x:Name="NewContactNavigationItem"
Height="50"
Margin="0,0,0,12"
AutomationProperties.Name="{x:Bind domain:Translator.ContactsPane_NewContact, Mode=OneTime}"
IsTabStop="True"
KeyDown="NewContactNavigationItemKeyDown"
SelectsOnInvoked="False"
Tapped="NewContactNavigationItemTapped">
<muxc:NavigationViewItem.Icon>
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph="&#xE710;" />
</muxc:NavigationViewItem.Icon>
<TextBlock
Margin="0,-2,0,0"
VerticalAlignment="Center"
FontSize="16"
Style="{StaticResource FlyoutPickerTitleTextBlockStyle}"
Text="{x:Bind domain:Translator.ContactsPane_NewContact, Mode=OneTime}" />
</coreControls:WinoNavigationViewItem>
<TextBlock <TextBlock
FontSize="16" FontSize="16"
FontWeight="SemiBold" FontWeight="SemiBold"
@@ -34,6 +34,7 @@ using Wino.MenuFlyouts;
using Wino.MenuFlyouts.Context; using Wino.MenuFlyouts.Context;
using Wino.Messaging.Client.Accounts; using Wino.Messaging.Client.Accounts;
using Wino.Messaging.Client.Calendar; using Wino.Messaging.Client.Calendar;
using Wino.Messaging.Client.Contacts;
using Wino.Messaging.Client.Mails; using Wino.Messaging.Client.Mails;
using Wino.Messaging.Client.Shell; using Wino.Messaging.Client.Shell;
using Wino.Messaging.UI; using Wino.Messaging.UI;
@@ -310,6 +311,24 @@ public sealed partial class WinoAppShell : Views.Abstract.WinoAppShellAbstract,
private Task InvokeNewCalendarEventAsync() private Task InvokeNewCalendarEventAsync()
=> ViewModel.CalendarClient.HandleNavigationItemInvokedAsync(new NewCalendarEventMenuItem()); => 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) private async void SynchronizeCalendarsNavigationItemTapped(object sender, TappedRoutedEventArgs e)
{ {
e.Handled = true; e.Handled = true;