Files
Wino-Mail/Wino.Mail.WinUI/Dialogs/EditMailCategoryDialog.xaml.cs
T
2026-04-15 01:18:07 +02:00

60 lines
2.2 KiB
C#

using System.Linq;
using Microsoft.UI.Xaml.Controls;
using Wino.Core.Domain;
using Wino.Core.Domain.Entities.Mail;
using Wino.Core.Domain.Models.MailItem;
namespace Wino.Dialogs;
public sealed partial class EditMailCategoryDialog : ContentDialog
{
public MailCategoryDialogResult? Result { get; private set; }
public string CategoryName { get; set; }
public MailCategoryColorOption? SelectedColor { get; set; }
public System.Collections.Generic.IReadOnlyList<MailCategoryColorOption> AvailableColors => MailCategoryPalette.DefaultOptions;
public EditMailCategoryDialog(MailCategory? category = null)
{
InitializeComponent();
Title = category == null ? Translator.MailCategoryDialog_CreateTitle : Translator.MailCategoryDialog_EditTitle;
CategoryName = category?.Name ?? string.Empty;
SelectedColor = MailCategoryPalette.DefaultOptions.FirstOrDefault(a =>
a.BackgroundColorHex == category?.BackgroundColorHex &&
a.TextColorHex == category?.TextColorHex) ?? MailCategoryPalette.DefaultOptions.First();
IsPrimaryButtonEnabled = !string.IsNullOrWhiteSpace(CategoryName);
}
private void CategoryNameTextChanged(object sender, TextChangedEventArgs e)
=> IsPrimaryButtonEnabled = !string.IsNullOrWhiteSpace(CategoryNameTextBox.Text) && SelectedColor != null;
private void ColorOptionClicked(object sender, ItemClickEventArgs e)
{
if (e.ClickedItem is MailCategoryColorOption option)
{
SelectedColor = option;
ColorsGridView.SelectedItem = option;
IsPrimaryButtonEnabled = !string.IsNullOrWhiteSpace(CategoryNameTextBox.Text);
}
}
private void SaveClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args)
{
if (SelectedColor == null)
{
args.Cancel = true;
return;
}
Result = new MailCategoryDialogResult(CategoryNameTextBox.Text?.Trim(), SelectedColor.BackgroundColorHex, SelectedColor.TextColorHex);
Hide();
}
private void CancelClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args)
{
Hide();
}
}