using System.Collections.Concurrent; using MediaBrowser.Controller.Entities; using System; using System.Collections.Generic; namespace MediaBrowser.Controller.Library { /// /// Class ChildrenChangedEventArgs /// public class ChildrenChangedEventArgs : EventArgs { /// /// Gets or sets the folder. /// /// The folder. public Folder Folder { get; set; } /// /// Gets or sets the items added. /// /// The items added. public ConcurrentBag ItemsAdded { get; set; } /// /// Gets or sets the items removed. /// /// The items removed. public List ItemsRemoved { get; set; } /// /// Gets or sets the items updated. /// /// The items updated. public ConcurrentBag ItemsUpdated { get; set; } /// /// Create the args and set the folder property /// /// The folder. /// public ChildrenChangedEventArgs(Folder folder) { if (folder == null) { throw new ArgumentNullException(); } //init the folder property Folder = folder; //init the list ItemsAdded = new ConcurrentBag(); ItemsRemoved = new List(); ItemsUpdated = new ConcurrentBag(); } /// /// Adds the new item. /// /// The item. /// public void AddNewItem(BaseItem item) { if (item == null) { throw new ArgumentNullException(); } ItemsAdded.Add(item); } /// /// Adds the updated item. /// /// The item. /// public void AddUpdatedItem(BaseItem item) { if (item == null) { throw new ArgumentNullException(); } ItemsUpdated.Add(item); } /// /// Adds the removed item. /// /// The item. /// public void AddRemovedItem(BaseItem item) { if (item == null) { throw new ArgumentNullException(); } ItemsRemoved.Add(item); } /// /// Lists the has change. /// /// The list. /// true if XXXX, false otherwise private bool ListHasChange(List list) { return list != null && list.Count > 0; } /// /// Lists the has change. /// /// The list. /// true if XXXX, false otherwise private bool ListHasChange(ConcurrentBag list) { return list != null && !list.IsEmpty; } /// /// Gets a value indicating whether this instance has change. /// /// true if this instance has change; otherwise, false. public bool HasChange { get { return HasAddOrRemoveChange || ListHasChange(ItemsUpdated); } } /// /// Gets a value indicating whether this instance has add or remove change. /// /// true if this instance has add or remove change; otherwise, false. public bool HasAddOrRemoveChange { get { return ListHasChange(ItemsAdded) || ListHasChange(ItemsRemoved); } } } }