fixes #791 - Support server-side playlists

This commit is contained in:
Luke Pulverenti
2014-08-02 22:16:37 -04:00
parent f0464dfa17
commit 2714127d2b
33 changed files with 638 additions and 132 deletions

View File

@@ -1006,6 +1006,18 @@ namespace MediaBrowser.Controller.Entities
private BaseItem FindLinkedChild(LinkedChild info)
{
if (!string.IsNullOrWhiteSpace(info.ItemName))
{
if (string.Equals(info.ItemType, "musicgenre", StringComparison.OrdinalIgnoreCase))
{
return LibraryManager.GetMusicGenre(info.ItemName);
}
if (string.Equals(info.ItemType, "musicartist", StringComparison.OrdinalIgnoreCase))
{
return LibraryManager.GetArtist(info.ItemName);
}
}
if (!string.IsNullOrEmpty(info.Path))
{
var itemByPath = LibraryManager.RootFolder.FindByPath(info.Path);
@@ -1028,7 +1040,17 @@ namespace MediaBrowser.Controller.Entities
{
if (info.ItemYear.HasValue)
{
return info.ItemYear.Value == (i.ProductionYear ?? -1);
if (info.ItemYear.Value != (i.ProductionYear ?? -1))
{
return false;
}
}
if (info.ItemIndexNumber.HasValue)
{
if (info.ItemIndexNumber.Value != (i.IndexNumber ?? -1))
{
return false;
}
}
return true;
}

View File

@@ -7,11 +7,6 @@ namespace MediaBrowser.Controller.Entities
/// </summary>
public abstract class BasePluginFolder : Folder, ICollectionFolder, IByReferenceItem
{
protected BasePluginFolder()
{
DisplayMediaType = "CollectionFolder";
}
public virtual string CollectionType
{
get { return null; }

View File

@@ -38,6 +38,12 @@ namespace MediaBrowser.Controller.Entities
Tags = new List<string>();
}
[IgnoreDataMember]
public virtual bool IsPreSorted
{
get { return false; }
}
/// <summary>
/// Gets a value indicating whether this instance is folder.
/// </summary>
@@ -855,7 +861,7 @@ namespace MediaBrowser.Controller.Entities
/// <param name="includeLinkedChildren">if set to <c>true</c> [include linked children].</param>
/// <returns>IEnumerable{BaseItem}.</returns>
/// <exception cref="System.ArgumentNullException"></exception>
public IEnumerable<BaseItem> GetRecursiveChildren(User user, bool includeLinkedChildren = true)
public virtual IEnumerable<BaseItem> GetRecursiveChildren(User user, bool includeLinkedChildren = true)
{
if (user == null)
{

View File

@@ -12,12 +12,25 @@ namespace MediaBrowser.Controller.Entities
public string ItemName { get; set; }
public string ItemType { get; set; }
public int? ItemYear { get; set; }
public int? ItemIndexNumber { get; set; }
/// <summary>
/// Serves as a cache
/// </summary>
[IgnoreDataMember]
public Guid? ItemId { get; set; }
public static LinkedChild Create(BaseItem item)
{
return new LinkedChild
{
ItemName = item.Name,
ItemYear = item.ProductionYear,
ItemType = item.GetType().Name,
Type = LinkedChildType.Manual,
ItemIndexNumber = item.IndexNumber
};
}
}
public enum LinkedChildType

View File

@@ -1,4 +1,5 @@
using MediaBrowser.Common.Progress;
using System.Runtime.Serialization;
using MediaBrowser.Common.Progress;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Entities;
@@ -58,6 +59,15 @@ namespace MediaBrowser.Controller.Entities.Movies
return config.BlockUnratedItems.Contains(UnratedItem.Movie);
}
[IgnoreDataMember]
public override bool IsPreSorted
{
get
{
return true;
}
}
public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren)
{
var children = base.GetChildren(user, includeLinkedChildren);

View File

@@ -29,6 +29,15 @@ namespace MediaBrowser.Controller.Entities.TV
}
}
[IgnoreDataMember]
public override bool IsPreSorted
{
get
{
return true;
}
}
/// <summary>
/// We want to group into our Series
/// </summary>

View File

@@ -39,6 +39,15 @@ namespace MediaBrowser.Controller.Entities.TV
DisplaySpecialsWithSeasons = true;
}
[IgnoreDataMember]
public override bool IsPreSorted
{
get
{
return true;
}
}
public bool DisplaySpecialsWithSeasons { get; set; }
public List<Guid> LocalTrailerIds { get; set; }

View File

@@ -1,7 +1,6 @@
using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Model.Entities;
using MoreLinq;
using System;
using System.Collections.Generic;
using System.Linq;