using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using System.Xml.Serialization; namespace Configuration { [XmlRoot(ElementName = "OutboundDragDrop")] public class OutboundDragDrop : INotifyPropertyChanged { private bool _stripTagsOnDragDrop = true; private bool _renameOnDragDrop = true; private DragDropRenameMethod _dragDropRenameMethod = DragDropRenameMethod.Random; private string _dragDropConvertType = "image/jpeg"; private bool _convertOnDragDrop = true; private DragDropConvertExclude _dragDropConvertExclude = new DragDropConvertExclude(new[] { "image/gif" }); [XmlElement(ElementName = "RenameOnDragDrop")] public bool RenameOnDragDrop { get => _renameOnDragDrop; set { if (value == _renameOnDragDrop) { return; } _renameOnDragDrop = value; OnPropertyChanged(); } } [XmlElement(ElementName = "StripTagsOnDragDrop")] public bool StripTagsOnDragDrop { get => _stripTagsOnDragDrop; set { if (value == _stripTagsOnDragDrop) return; _stripTagsOnDragDrop = value; OnPropertyChanged(); } } [XmlElement(ElementName = "DragDropRenameMethod")] public DragDropRenameMethod DragDropRenameMethod { get => _dragDropRenameMethod; set { if (value == _dragDropRenameMethod) return; _dragDropRenameMethod = value; OnPropertyChanged(); } } [XmlElement(ElementName = "ConvertOnDragDrop")] public bool ConvertOnDragDrop { get => _convertOnDragDrop; set { if (value == _convertOnDragDrop) return; _convertOnDragDrop = value; OnPropertyChanged(); } } [XmlElement(ElementName = "DragDropConvertType")] public string DragDropConvertType { get => _dragDropConvertType; set { if (Equals(value, _dragDropConvertType)) return; _dragDropConvertType = value; OnPropertyChanged(); } } [XmlElement(ElementName = "DragDropConvertExclude")] public DragDropConvertExclude DragDropConvertExclude { get => _dragDropConvertExclude; set { if (Equals(value, _dragDropConvertExclude)) return; _dragDropConvertExclude = value; OnPropertyChanged(); } } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } protected bool SetField(ref T field, T value, [CallerMemberName] string propertyName = null) { if (EqualityComparer.Default.Equals(field, value)) return false; field = value; OnPropertyChanged(propertyName); return true; } } }