using System.ComponentModel; using System.Drawing; using System.Runtime.CompilerServices; using System.Xml.Serialization; using TrackedFolders.Properties; namespace TrackedFolders { [XmlRoot(ElementName = "Folder")] public class Folder : INotifyPropertyChanged { #region Interface public event PropertyChangedEventHandler PropertyChanged; #endregion #region Private Methods [NotifyPropertyChangedInvocator] protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } #endregion #region Public Enums, Properties and Fields [XmlIgnore] public Color Color { get; set; } public int SerializableColor { get => Color.ToArgb(); set { switch (value) { case 0: Color = Color.Empty; break; default: Color = Color.FromArgb(value); break; } } } [XmlElement(ElementName = "Enable")] public bool Enable { get => _enable; set { if (value == _enable) { return; } _enable = value; OnPropertyChanged(); } } [XmlElement(ElementName = "Path")] public string Path { get => _path; set { if (value == _path) { return; } _path = value; OnPropertyChanged(); } } [XmlElement(ElementName = "Recursive")] public bool Recursive { get => _recursive; set { if (value == _recursive) { return; } _recursive = value; OnPropertyChanged(); } } [XmlElement(ElementName = "Delay")] public int Delay { get => _delay; set { if (value == _delay) { return; } _delay = value; OnPropertyChanged(); } } #endregion #region Private Delegates, Events, Enums, Properties, Indexers and Fields private int _delay = Constants.Delay; private string _path; private bool _recursive; private bool _enable; #endregion #region Constructors, Destructors and Finalizers [UsedImplicitly] public Folder() { } public Folder(string path, bool enable) : this() { Path = path; Enable = enable; } #endregion } }