New AI actions panel. Replaced new command bar.

This commit is contained in:
Burak Kaan Köse
2026-04-03 19:50:52 +02:00
parent 27e91316d3
commit 1211e9b28a
21 changed files with 1231 additions and 443 deletions
@@ -60,7 +60,7 @@ public partial class MailListPageViewModel : MailBaseViewModel,
public WinoMailCollection MailCollection { get; set; } = new WinoMailCollection();
public ObservableCollection<FolderPivotViewModel> PivotFolders { get; set; } = [];
public ObservableCollection<MailOperationMenuItem> ActionItems { get; set; } = [];
public ObservableCollection<IMenuOperation> ActionItems { get; set; } = [];
private readonly SemaphoreSlim listManipulationSemepahore = new SemaphoreSlim(1);
private CancellationTokenSource listManipulationCancellationTokenSource = new CancellationTokenSource();
@@ -439,11 +439,11 @@ public partial class MailListPageViewModel : MailBaseViewModel,
public Task ExecuteHoverAction(MailOperationPreperationRequest request) => ExecuteMailOperationAsync(request);
[RelayCommand]
private async Task ExecuteTopBarAction(MailOperationMenuItem menuItem)
private async Task ExecuteTopBarAction(IMenuOperation menuItem)
{
if (menuItem == null || MailCollection.SelectedItemsCount == 0) return;
if (menuItem is not MailOperationMenuItem mailOperationMenuItem || MailCollection.SelectedItemsCount == 0) return;
await HandleMailOperation(menuItem.Operation, MailCollection.SelectedItems);
await HandleMailOperation(mailOperationMenuItem.Operation, MailCollection.SelectedItems);
}
/// <summary>
@@ -133,7 +133,7 @@ public partial class MailRenderingPageViewModel : MailBaseViewModel,
public ObservableCollection<AccountContactViewModel> CcItems { get; set; } = [];
public ObservableCollection<AccountContactViewModel> BccItems { get; set; } = [];
public ObservableCollection<MailAttachmentViewModel> Attachments { get; set; } = [];
public ObservableCollection<MailOperationMenuItem> MenuItems { get; set; } = [];
public ObservableCollection<IMenuOperation> MenuItems { get; set; } = [];
#endregion
@@ -255,21 +255,18 @@ public partial class MailRenderingPageViewModel : MailBaseViewModel,
}
[RelayCommand]
private async Task OperationClicked(MailOperationMenuItem menuItem)
private async Task OperationClicked(IMenuOperation menuItem)
{
if (menuItem == null) return;
if (menuItem is not MailOperationMenuItem mailOperationMenuItem) return;
await HandleMailOperationAsync(menuItem.Operation);
await HandleMailOperationAsync(mailOperationMenuItem.Operation);
}
private async Task HandleMailOperationAsync(MailOperation operation)
{
try
{
// Toggle theme
if (operation == MailOperation.DarkEditor || operation == MailOperation.LightEditor)
IsDarkWebviewRenderer = !IsDarkWebviewRenderer;
else if (operation == MailOperation.SaveAs)
if (operation == MailOperation.SaveAs)
{
await SaveAsAsync();
}
@@ -589,12 +586,6 @@ public partial class MailRenderingPageViewModel : MailBaseViewModel,
{
MenuItems.Clear();
// Add light/dark editor theme switch.
if (IsDarkWebviewRenderer)
MenuItems.Add(MailOperationMenuItem.Create(MailOperation.LightEditor));
else
MenuItems.Add(MailOperationMenuItem.Create(MailOperation.DarkEditor));
// Save As PDF
MenuItems.Add(MailOperationMenuItem.Create(MailOperation.SaveAs, true, true));