using System.Collections.Generic; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Wino.Core.Domain; using Wino.Core.Domain.Models.Folders; namespace Wino.Dialogs { public sealed partial class MoveMailDialog : ContentDialog { public IMailItemFolder SelectedFolder { get { return (IMailItemFolder)GetValue(SelectedFolderProperty); } set { SetValue(SelectedFolderProperty, value); } } public static readonly DependencyProperty SelectedFolderProperty = DependencyProperty.Register(nameof(SelectedFolder), typeof(IMailItemFolder), typeof(MoveMailDialog), new PropertyMetadata(null, OnSelectedFolderChanged)); public List FolderList { get; set; } public MoveMailDialog(List allFolders) { InitializeComponent(); if (allFolders == null) return; FolderList = allFolders; } private static void OnSelectedFolderChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args) { if (obj is MoveMailDialog dialog) { dialog.VerifySelection(); } } private void VerifySelection() { if (SelectedFolder != null) { // Don't select non-move capable folders like Categories or More. if (!SelectedFolder.IsMoveTarget) { // Warn users for only proper mail folders. Not ghost folders. InvalidFolderText.Visibility = Visibility.Visible; InvalidFolderText.Text = string.Format(Translator.MoveMailDialog_InvalidFolderMessage, SelectedFolder.FolderName); if (FolderTreeView.SelectedItem != null) { // Toggle the expansion for the selected container if available. // I don't like the expand arrow touch area. It's better this way. if (FolderTreeView.ContainerFromItem(FolderTreeView.SelectedItem) is Microsoft.UI.Xaml.Controls.TreeViewItem container) { container.IsExpanded = !container.IsExpanded; } } SelectedFolder = null; } else { Hide(); } } } private void CancelClicked(ContentDialog sender, ContentDialogButtonClickEventArgs args) { Hide(); } } }