73 lines
2.9 KiB
C#
73 lines
2.9 KiB
C#
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<MailItemFolder> 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<MailItemFolder> 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<MailItemFolder>()
|
|
{
|
|
Sent, Draft, Archive, Trash, Junk
|
|
};
|
|
|
|
if (allSpecialFolders.Any(a => a != null && a.SpecialFolderType == SpecialFolderType.Inbox))
|
|
ValidationErrorTextBlock.Text = Translator.SystemFolderConfigDialogValidation_InboxSelected;
|
|
|
|
if (new HashSet<Guid>(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;
|
|
}
|
|
}
|
|
}
|
|
}
|