Files
Wino-Mail/Wino.Mail/MenuFlyouts/WinoOperationFlyoutItem.cs

50 lines
1.6 KiB
C#
Raw Normal View History

2024-04-18 01:44:37 +02:00
using System;
using Windows.UI.Xaml.Controls;
using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Models.Folders;
using Wino.Core.Domain.Models.Menus;
using Wino.Core.UWP.Controls;
2024-04-18 01:44:37 +02:00
using Wino.Helpers;
2025-02-16 11:54:23 +01:00
namespace Wino.MenuFlyouts;
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
public partial class WinoOperationFlyoutItem<TOperationMenuItem> : MenuFlyoutItem, IDisposable where TOperationMenuItem : IMenuOperation
{
public TOperationMenuItem Operation { get; set; }
Action<TOperationMenuItem> Clicked { get; set; }
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
public WinoOperationFlyoutItem(TOperationMenuItem operationMenuItem, Action<TOperationMenuItem> clicked)
{
Operation = operationMenuItem;
IsEnabled = operationMenuItem.IsEnabled;
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
if (Operation is FolderOperationMenuItem folderOperationMenuItem)
{
var internalOperation = folderOperationMenuItem.Operation;
2025-02-16 11:35:43 +01:00
2025-02-16 11:54:23 +01:00
Icon = new WinoFontIcon() { Icon = XamlHelpers.GetPathGeometry(internalOperation) };
Text = XamlHelpers.GetOperationString(internalOperation);
}
2025-02-16 11:54:23 +01:00
else if (Operation is MailOperationMenuItem mailOperationMenuItem)
{
2025-02-16 11:54:23 +01:00
var internalOperation = mailOperationMenuItem.Operation;
2025-02-16 11:35:43 +01:00
2025-02-16 11:54:23 +01:00
Icon = new WinoFontIcon() { Icon = XamlHelpers.GetWinoIconGlyph(internalOperation) };
Text = XamlHelpers.GetOperationString(internalOperation);
}
2025-02-16 11:54:23 +01:00
Clicked = clicked;
Click += MenuClicked;
}
private void MenuClicked(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
Clicked(Operation);
}
public void Dispose()
{
Click -= MenuClicked;
2024-04-18 01:44:37 +02:00
}
}