aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Library
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-05-03 00:10:11 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-05-03 00:10:11 -0400
commit6481688d2acc23b789dab6e8ad04a96e48c46064 (patch)
treeddc3fcb30fcc9187563e9cb297e9ae938f0581c0 /MediaBrowser.Controller/Library
parentb79840e20f068f087d845e4abf1e817d211a1783 (diff)
fixes #223 - New Content Localhost Popups Repeat 'Old' 'New Content' on Media Changes
Diffstat (limited to 'MediaBrowser.Controller/Library')
-rw-r--r--MediaBrowser.Controller/Library/ChildrenChangedEventArgs.cs137
-rw-r--r--MediaBrowser.Controller/Library/ILibraryManager.cs49
-rw-r--r--MediaBrowser.Controller/Library/ItemChangeEventArgs.cs16
3 files changed, 48 insertions, 154 deletions
diff --git a/MediaBrowser.Controller/Library/ChildrenChangedEventArgs.cs b/MediaBrowser.Controller/Library/ChildrenChangedEventArgs.cs
deleted file mode 100644
index 94f4c540f..000000000
--- a/MediaBrowser.Controller/Library/ChildrenChangedEventArgs.cs
+++ /dev/null
@@ -1,137 +0,0 @@
-using System.Collections.Concurrent;
-using MediaBrowser.Controller.Entities;
-using System;
-using System.Collections.Generic;
-
-namespace MediaBrowser.Controller.Library
-{
- /// <summary>
- /// Class ChildrenChangedEventArgs
- /// </summary>
- public class ChildrenChangedEventArgs : EventArgs
- {
- /// <summary>
- /// Gets or sets the folder.
- /// </summary>
- /// <value>The folder.</value>
- public Folder Folder { get; set; }
- /// <summary>
- /// Gets or sets the items added.
- /// </summary>
- /// <value>The items added.</value>
- public ConcurrentBag<BaseItem> ItemsAdded { get; set; }
- /// <summary>
- /// Gets or sets the items removed.
- /// </summary>
- /// <value>The items removed.</value>
- public List<BaseItem> ItemsRemoved { get; set; }
- /// <summary>
- /// Gets or sets the items updated.
- /// </summary>
- /// <value>The items updated.</value>
- public ConcurrentBag<BaseItem> ItemsUpdated { get; set; }
-
- /// <summary>
- /// Create the args and set the folder property
- /// </summary>
- /// <param name="folder">The folder.</param>
- /// <exception cref="System.ArgumentNullException"></exception>
- public ChildrenChangedEventArgs(Folder folder)
- {
- if (folder == null)
- {
- throw new ArgumentNullException();
- }
-
- //init the folder property
- Folder = folder;
- //init the list
- ItemsAdded = new ConcurrentBag<BaseItem>();
- ItemsRemoved = new List<BaseItem>();
- ItemsUpdated = new ConcurrentBag<BaseItem>();
- }
-
- /// <summary>
- /// Adds the new item.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <exception cref="System.ArgumentNullException"></exception>
- public void AddNewItem(BaseItem item)
- {
- if (item == null)
- {
- throw new ArgumentNullException();
- }
-
- ItemsAdded.Add(item);
- }
-
- /// <summary>
- /// Adds the updated item.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <exception cref="System.ArgumentNullException"></exception>
- public void AddUpdatedItem(BaseItem item)
- {
- if (item == null)
- {
- throw new ArgumentNullException();
- }
-
- ItemsUpdated.Add(item);
- }
-
- /// <summary>
- /// Adds the removed item.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <exception cref="System.ArgumentNullException"></exception>
- public void AddRemovedItem(BaseItem item)
- {
- if (item == null)
- {
- throw new ArgumentNullException();
- }
-
- ItemsRemoved.Add(item);
- }
-
- /// <summary>
- /// Lists the has change.
- /// </summary>
- /// <param name="list">The list.</param>
- /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
- private bool ListHasChange(List<BaseItem> list)
- {
- return list != null && list.Count > 0;
- }
-
- /// <summary>
- /// Lists the has change.
- /// </summary>
- /// <param name="list">The list.</param>
- /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
- private bool ListHasChange(ConcurrentBag<BaseItem> list)
- {
- return list != null && !list.IsEmpty;
- }
-
- /// <summary>
- /// Gets a value indicating whether this instance has change.
- /// </summary>
- /// <value><c>true</c> if this instance has change; otherwise, <c>false</c>.</value>
- public bool HasChange
- {
- get { return HasAddOrRemoveChange || ListHasChange(ItemsUpdated); }
- }
-
- /// <summary>
- /// Gets a value indicating whether this instance has add or remove change.
- /// </summary>
- /// <value><c>true</c> if this instance has add or remove change; otherwise, <c>false</c>.</value>
- public bool HasAddOrRemoveChange
- {
- get { return ListHasChange(ItemsAdded) || ListHasChange(ItemsRemoved); }
- }
- }
-}
diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs
index a456ee24c..89d17758e 100644
--- a/MediaBrowser.Controller/Library/ILibraryManager.cs
+++ b/MediaBrowser.Controller/Library/ILibraryManager.cs
@@ -1,12 +1,11 @@
-using System.IO;
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
-using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.Resolvers;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
+using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -15,18 +14,6 @@ namespace MediaBrowser.Controller.Library
public interface ILibraryManager
{
/// <summary>
- /// Fires whenever any validation routine adds or removes items. The added and removed items are properties of the args.
- /// *** Will fire asynchronously. ***
- /// </summary>
- event EventHandler<ChildrenChangedEventArgs> LibraryChanged;
-
- /// <summary>
- /// Reports the library changed.
- /// </summary>
- /// <param name="args">The <see cref="ChildrenChangedEventArgs"/> instance containing the event data.</param>
- void ReportLibraryChanged(ChildrenChangedEventArgs args);
-
- /// <summary>
/// Resolves the item.
/// </summary>
/// <param name="args">The args.</param>
@@ -185,14 +172,22 @@ namespace MediaBrowser.Controller.Library
UserRootFolder GetUserRootFolder(string userRootPath);
/// <summary>
- /// Saves the item.
+ /// Creates the item.
/// </summary>
/// <param name="item">The item.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
- Task SaveItem(BaseItem item, CancellationToken cancellationToken);
+ Task CreateItem(BaseItem item, CancellationToken cancellationToken);
/// <summary>
+ /// Updates the item.
+ /// </summary>
+ /// <param name="item">The item.</param>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <returns>Task.</returns>
+ Task UpdateItem(BaseItem item, CancellationToken cancellationToken);
+
+ /// <summary>
/// Retrieves the item.
/// </summary>
/// <param name="id">The id.</param>
@@ -222,5 +217,25 @@ namespace MediaBrowser.Controller.Library
/// <param name="progress">The progress.</param>
/// <returns>Task.</returns>
Task ValidateArtists(CancellationToken cancellationToken, IProgress<double> progress);
+
+ /// <summary>
+ /// Occurs when [item added].
+ /// </summary>
+ event EventHandler<ItemChangeEventArgs> ItemAdded;
+
+ /// <summary>
+ /// Occurs when [item updated].
+ /// </summary>
+ event EventHandler<ItemChangeEventArgs> ItemUpdated;
+ /// <summary>
+ /// Occurs when [item removed].
+ /// </summary>
+ event EventHandler<ItemChangeEventArgs> ItemRemoved;
+
+ /// <summary>
+ /// Reports the item removed.
+ /// </summary>
+ /// <param name="item">The item.</param>
+ void ReportItemRemoved(BaseItem item);
}
} \ No newline at end of file
diff --git a/MediaBrowser.Controller/Library/ItemChangeEventArgs.cs b/MediaBrowser.Controller/Library/ItemChangeEventArgs.cs
new file mode 100644
index 000000000..c83ec54b7
--- /dev/null
+++ b/MediaBrowser.Controller/Library/ItemChangeEventArgs.cs
@@ -0,0 +1,16 @@
+using MediaBrowser.Controller.Entities;
+
+namespace MediaBrowser.Controller.Library
+{
+ /// <summary>
+ /// Class ItemChangeEventArgs
+ /// </summary>
+ public class ItemChangeEventArgs
+ {
+ /// <summary>
+ /// Gets or sets the item.
+ /// </summary>
+ /// <value>The item.</value>
+ public BaseItem Item { get; set; }
+ }
+}