Files
Wino-Mail/Wino.Mail/Dialogs/SignatureEditorDialog.xaml.cs

81 lines
2.5 KiB
C#
Raw Permalink Normal View History

using System;
using System.Text.RegularExpressions;
using Windows.UI.Xaml.Controls;
using Wino.Core.Domain;
using Wino.Core.Domain.Entities.Mail;
2025-02-16 11:54:23 +01:00
namespace Wino.Dialogs;
public sealed partial class SignatureEditorDialog : ContentDialog
{
2025-02-16 11:54:23 +01:00
public AccountSignature Result;
public SignatureEditorDialog()
{
2025-02-16 11:54:23 +01:00
InitializeComponent();
2025-02-16 11:54:23 +01:00
SignatureNameTextBox.Header = Translator.SignatureEditorDialog_SignatureName_TitleNew;
2025-02-16 11:54:23 +01:00
// TODO: Should be added additional logic to enable/disable primary button when webview content changed.
IsPrimaryButtonEnabled = true;
}
2025-02-16 11:54:23 +01:00
public SignatureEditorDialog(AccountSignature signatureModel)
{
InitializeComponent();
SignatureNameTextBox.Text = signatureModel.Name.Trim();
SignatureNameTextBox.Header = string.Format(Translator.SignatureEditorDialog_SignatureName_TitleEdit, signatureModel.Name);
Result = new AccountSignature
{
2025-02-16 11:54:23 +01:00
Id = signatureModel.Id,
Name = signatureModel.Name,
MailAccountId = signatureModel.MailAccountId,
HtmlBody = signatureModel.HtmlBody
};
// TODO: Should be added additional logic to enable/disable primary button when webview content changed.
IsPrimaryButtonEnabled = true;
}
2025-02-16 11:54:23 +01:00
private async void SignatureDialogOpened(ContentDialog sender, ContentDialogOpenedEventArgs args)
{
await WebViewEditor.RenderHtmlAsync(Result?.HtmlBody ?? string.Empty);
2025-02-16 11:54:23 +01:00
}
private void DialogClosed(ContentDialog sender, ContentDialogClosedEventArgs args)
{
WebViewEditor.Dispose();
2025-02-16 11:54:23 +01:00
}
2025-02-16 11:54:23 +01:00
private async void SaveClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args)
{
var newSignature = Regex.Unescape(await WebViewEditor.GetHtmlBodyAsync());
2025-02-16 11:54:23 +01:00
if (Result == null)
{
Result = new AccountSignature
{
2025-02-16 11:54:23 +01:00
Id = Guid.NewGuid(),
Name = SignatureNameTextBox.Text.Trim(),
HtmlBody = newSignature
};
}
2025-02-16 11:54:23 +01:00
else
{
2025-02-16 11:54:23 +01:00
Result.Name = SignatureNameTextBox.Text.Trim();
Result.HtmlBody = newSignature;
}
2025-02-16 11:54:23 +01:00
Hide();
}
2025-02-16 11:54:23 +01:00
private void CancelClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args)
{
Hide();
}
2025-02-16 11:54:23 +01:00
private void SignatureNameTextBoxTextChanged(object sender, TextChangedEventArgs e) => IsPrimaryButtonEnabled = !string.IsNullOrWhiteSpace(SignatureNameTextBox.Text);
}