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;
|
2024-11-10 23:28:25 +01:00
|
|
|
|
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:43:30 +01:00
|
|
|
|
}
|
2025-02-16 11:54:23 +01:00
|
|
|
|
else if (Operation is MailOperationMenuItem mailOperationMenuItem)
|
2025-02-16 11:43:30 +01:00
|
|
|
|
{
|
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:43:30 +01:00
|
|
|
|
}
|
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
|
|
|
|
}
|
|
|
|
|
|
}
|