2025-11-15 14:52:01 +01:00
|
|
|
using Microsoft.UI.Xaml;
|
|
|
|
|
using Microsoft.UI.Xaml.Controls;
|
2026-03-24 01:34:54 +01:00
|
|
|
using Wino.Core.Domain;
|
2025-11-15 14:52:01 +01:00
|
|
|
using Wino.Core.Domain.MenuItems;
|
|
|
|
|
|
|
|
|
|
namespace Wino.Mail.WinUI.Selectors;
|
|
|
|
|
|
|
|
|
|
public partial class NavigationMenuTemplateSelector : DataTemplateSelector
|
|
|
|
|
{
|
2026-02-27 20:12:43 +01:00
|
|
|
public DataTemplate MenuItemTemplate { get; set; } = null!;
|
|
|
|
|
public DataTemplate ContactsMenuItemTemplate { get; set; } = null!;
|
|
|
|
|
public DataTemplate ClickableAccountMenuTemplate { get; set; } = null!;
|
|
|
|
|
public DataTemplate MergedAccountTemplate { get; set; } = null!;
|
|
|
|
|
public DataTemplate MergedAccountFolderTemplate { get; set; } = null!;
|
|
|
|
|
public DataTemplate MergedAccountMoreExpansionItemTemplate { get; set; } = null!;
|
|
|
|
|
public DataTemplate FolderMenuTemplate { get; set; } = null!;
|
|
|
|
|
public DataTemplate SettingsItemTemplate { get; set; } = null!;
|
2026-03-12 19:04:47 +01:00
|
|
|
public DataTemplate SettingsShellPageItemTemplate { get; set; } = null!;
|
|
|
|
|
public DataTemplate SettingsShellSectionItemTemplate { get; set; } = null!;
|
2026-03-24 01:34:54 +01:00
|
|
|
public DataTemplate WinoAccountSettingsShellPageItemTemplate { get; set; } = null!;
|
2026-03-08 11:22:41 +01:00
|
|
|
public DataTemplate StoreUpdateItemTemplate { get; set; } = null!;
|
2026-02-27 20:12:43 +01:00
|
|
|
public DataTemplate MoreItemsFolderTemplate { get; set; } = null!;
|
|
|
|
|
public DataTemplate RatingItemTemplate { get; set; } = null!;
|
|
|
|
|
public DataTemplate CreateNewFolderTemplate { get; set; } = null!;
|
|
|
|
|
public DataTemplate SeperatorTemplate { get; set; } = null!;
|
|
|
|
|
public DataTemplate NewMailTemplate { get; set; } = null!;
|
2026-03-11 01:39:32 +01:00
|
|
|
public DataTemplate CalendarNewEventTemplate { get; set; } = null!;
|
2026-02-27 20:12:43 +01:00
|
|
|
public DataTemplate CategoryItemsTemplate { get; set; } = null!;
|
2026-04-15 01:18:07 +02:00
|
|
|
public DataTemplate MergedCategoryItemsTemplate { get; set; } = null!;
|
2026-02-27 20:12:43 +01:00
|
|
|
public DataTemplate FixAuthenticationIssueTemplate { get; set; } = null!;
|
|
|
|
|
public DataTemplate FixMissingFolderConfigTemplate { get; set; } = null!;
|
2025-11-15 14:52:01 +01:00
|
|
|
|
|
|
|
|
protected override DataTemplate SelectTemplateCore(object item)
|
|
|
|
|
{
|
2026-03-11 01:39:32 +01:00
|
|
|
if (item is NewCalendarEventMenuItem)
|
|
|
|
|
return CalendarNewEventTemplate;
|
|
|
|
|
else if (item is NewMailMenuItem)
|
2025-11-15 14:52:01 +01:00
|
|
|
return NewMailTemplate;
|
|
|
|
|
else if (item is ContactsMenuItem)
|
|
|
|
|
return ContactsMenuItemTemplate;
|
|
|
|
|
else if (item is SettingsItem)
|
|
|
|
|
return SettingsItemTemplate;
|
2026-03-24 01:34:54 +01:00
|
|
|
else if (item is SettingsShellPageMenuItem settingsShellPageMenuItem)
|
|
|
|
|
return string.Equals(settingsShellPageMenuItem.Title, Translator.WinoAccount_SettingsSection_Title, System.StringComparison.Ordinal)
|
|
|
|
|
? WinoAccountSettingsShellPageItemTemplate
|
|
|
|
|
: SettingsShellPageItemTemplate;
|
2026-03-12 19:04:47 +01:00
|
|
|
else if (item is SettingsShellSectionMenuItem)
|
|
|
|
|
return SettingsShellSectionItemTemplate;
|
2026-03-08 11:22:41 +01:00
|
|
|
else if (item is StoreUpdateMenuItem)
|
|
|
|
|
return StoreUpdateItemTemplate;
|
2025-11-15 14:52:01 +01:00
|
|
|
else if (item is SeperatorItem)
|
|
|
|
|
return SeperatorTemplate;
|
2026-02-27 20:12:43 +01:00
|
|
|
else if (item is AccountMenuItem)
|
2025-11-15 14:52:01 +01:00
|
|
|
// Merged inbox account menu items must be nested.
|
|
|
|
|
return ClickableAccountMenuTemplate;
|
|
|
|
|
else if (item is RateMenuItem)
|
|
|
|
|
return RatingItemTemplate;
|
|
|
|
|
else if (item is MergedAccountMenuItem)
|
|
|
|
|
return MergedAccountTemplate;
|
|
|
|
|
else if (item is MergedAccountMoreFolderMenuItem)
|
|
|
|
|
return MergedAccountMoreExpansionItemTemplate;
|
2026-04-15 01:18:07 +02:00
|
|
|
else if (item is MailCategoryMenuItem)
|
|
|
|
|
return CategoryItemsTemplate;
|
|
|
|
|
else if (item is MergedMailCategoryMenuItem)
|
|
|
|
|
return MergedCategoryItemsTemplate;
|
2025-11-15 14:52:01 +01:00
|
|
|
else if (item is MergedAccountFolderMenuItem)
|
|
|
|
|
return MergedAccountFolderTemplate;
|
|
|
|
|
else if (item is FolderMenuItem)
|
|
|
|
|
return FolderMenuTemplate;
|
|
|
|
|
else if (item is FixAccountIssuesMenuItem fixAccountIssuesMenuItem)
|
|
|
|
|
return fixAccountIssuesMenuItem.Account.AttentionReason == Wino.Core.Domain.Enums.AccountAttentionReason.MissingSystemFolderConfiguration
|
|
|
|
|
? FixMissingFolderConfigTemplate : FixAuthenticationIssueTemplate;
|
2026-02-27 20:12:43 +01:00
|
|
|
return MenuItemTemplate;
|
2025-11-15 14:52:01 +01:00
|
|
|
}
|
|
|
|
|
}
|
2026-03-08 11:22:41 +01:00
|
|
|
|
|
|
|
|
|