using System; using System.Collections.Generic; using System.Linq; using Windows.UI.Xaml.Controls; using Wino.Core.Domain; using Wino.Core.Domain.Entities.Mail; using Wino.Core.Domain.Enums; using Wino.Core.Domain.Exceptions; using Wino.Core.Domain.Models.Folders; namespace Wino.Dialogs; public sealed partial class SystemFolderConfigurationDialog : ContentDialog { private bool canDismissDialog = false; public SystemFolderConfiguration Configuration { get; set; } public List AvailableFolders { get; } public MailItemFolder Sent { get; set; } public MailItemFolder Draft { get; set; } public MailItemFolder Archive { get; set; } public MailItemFolder Junk { get; set; } public MailItemFolder Trash { get; set; } public SystemFolderConfigurationDialog(List availableFolders) { InitializeComponent(); AvailableFolders = availableFolders; Sent = AvailableFolders.Find(a => a.SpecialFolderType == Core.Domain.Enums.SpecialFolderType.Sent); Draft = AvailableFolders.Find(a => a.SpecialFolderType == Core.Domain.Enums.SpecialFolderType.Draft); Archive = AvailableFolders.Find(a => a.SpecialFolderType == Core.Domain.Enums.SpecialFolderType.Archive); Junk = AvailableFolders.Find(a => a.SpecialFolderType == Core.Domain.Enums.SpecialFolderType.Junk); Trash = AvailableFolders.Find(a => a.SpecialFolderType == Core.Domain.Enums.SpecialFolderType.Deleted); } private void DialogClosing(ContentDialog sender, ContentDialogClosingEventArgs args) { args.Cancel = !canDismissDialog; } private void CancelClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args) => canDismissDialog = true; private void SaveClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args) { ValidationErrorTextBlock.Text = string.Empty; var allSpecialFolders = new List() { Sent, Draft, Archive, Trash, Junk }; if (allSpecialFolders.Any(a => a != null && a.SpecialFolderType == SpecialFolderType.Inbox)) ValidationErrorTextBlock.Text = Translator.SystemFolderConfigDialogValidation_InboxSelected; if (new HashSet(allSpecialFolders.Where(a => a != null).Select(x => x.Id)).Count != allSpecialFolders.Where(a => a != null).Count()) ValidationErrorTextBlock.Text = Translator.SystemFolderConfigDialogValidation_DuplicateSystemFolders; // Check if we can save. if (string.IsNullOrEmpty(ValidationErrorTextBlock.Text)) { var configuration = new SystemFolderConfiguration(Sent, Draft, Archive, Trash, Junk); canDismissDialog = true; Configuration = configuration; } } }