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
@@ -4,4 +4,5 @@ public interface IMenuOperation
{
bool IsEnabled { get; }
string Identifier { get; }
bool IsSecondaryMenuPreferred { get; }
}
@@ -69,6 +69,16 @@ public interface IMimeFileService
/// </summary>
Task SaveTranslatedHtmlAsync(Guid accountId, Guid fileId, string targetLanguage, string html, CancellationToken cancellationToken = default);
/// <summary>
/// Returns cached summary text for the given mime resource if it exists.
/// </summary>
Task<string> GetSummaryTextAsync(Guid accountId, Guid fileId, CancellationToken cancellationToken = default);
/// <summary>
/// Saves summary text for the given mime resource.
/// </summary>
Task SaveSummaryTextAsync(Guid accountId, Guid fileId, string summary, CancellationToken cancellationToken = default);
/// <summary>
/// Prepares the final model containing rendering details.
/// </summary>
@@ -1,13 +1,15 @@
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Models.Menus;
namespace Wino.Core.Domain.Models.Folders;
public class FolderOperationMenuItem : MenuOperationItemBase<FolderOperation>, IMenuOperation
public class FolderOperationMenuItem : MenuOperationItemBase<FolderOperation>
{
protected FolderOperationMenuItem(FolderOperation operation, bool isEnabled) : base(operation, isEnabled) { }
protected FolderOperationMenuItem(FolderOperation operation, bool isEnabled, bool isSecondaryMenuItem = false) : base(operation, isEnabled)
{
IsSecondaryMenuPreferred = isSecondaryMenuItem;
}
public static FolderOperationMenuItem Create(FolderOperation operation, bool isEnabled = true)
=> new FolderOperationMenuItem(operation, isEnabled);
public static FolderOperationMenuItem Create(FolderOperation operation, bool isEnabled = true, bool isSecondaryMenuItem = false)
=> new FolderOperationMenuItem(operation, isEnabled, isSecondaryMenuItem);
}
@@ -1,15 +1,9 @@
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Enums;
namespace Wino.Core.Domain.Models.Menus;
public class MailOperationMenuItem : MenuOperationItemBase<MailOperation>, IMenuOperation
public class MailOperationMenuItem : MenuOperationItemBase<MailOperation>
{
/// <summary>
/// Gets or sets whether this menu item should be placed in SecondaryCommands if used in CommandBar.
/// </summary>
public bool IsSecondaryMenuPreferred { get; set; }
protected MailOperationMenuItem(MailOperation operation, bool isEnabled, bool isSecondaryMenuItem = false) : base(operation, isEnabled)
{
IsSecondaryMenuPreferred = isSecondaryMenuItem;
@@ -1,9 +1,16 @@
using System;
using System;
using CommunityToolkit.Mvvm.ComponentModel;
using Wino.Core.Domain.Interfaces;
namespace Wino.Core.Domain.Models.Menus;
public class MenuOperationItemBase<TOperation> where TOperation : Enum
public class MenuOperationItemBase<TOperation> : ObservableObject, IMenuOperation where TOperation : Enum
{
private TOperation _operation;
private string _identifier = string.Empty;
private bool _isEnabled;
private bool _isSecondaryMenuPreferred;
public MenuOperationItemBase(TOperation operation, bool isEnabled)
{
Operation = operation;
@@ -11,7 +18,33 @@ public class MenuOperationItemBase<TOperation> where TOperation : Enum
Identifier = operation.ToString();
}
public TOperation Operation { get; set; }
public string Identifier { get; set; }
public bool IsEnabled { get; set; }
public TOperation Operation
{
get => _operation;
set
{
if (SetProperty(ref _operation, value))
{
Identifier = value.ToString();
}
}
}
public string Identifier
{
get => _identifier;
protected set => SetProperty(ref _identifier, value);
}
public bool IsEnabled
{
get => _isEnabled;
set => SetProperty(ref _isEnabled, value);
}
public bool IsSecondaryMenuPreferred
{
get => _isSecondaryMenuPreferred;
set => SetProperty(ref _isSecondaryMenuPreferred, value);
}
}
@@ -1062,6 +1062,7 @@
"Composer_SmimeEncryption": "S/MIME Encryption",
"Composer_EmailTemplatesPlaceholder": "E-mail templates",
"Composer_AiSummarize": "Summarize with AI",
"Composer_AiSummarizeDescription": "Extract key points, action items, and decisions from this email.",
"Composer_AiTranslate": "Translate with AI",
"Composer_AiActions": "AI Actions",
"Composer_AiRewrite": "Rewrite with AI",