aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-01-03 15:32:27 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-01-03 15:32:27 -0500
commitecc6fcfbab7006c7c9bfcf76d329c663a2fa5a2c (patch)
treed849f61148c2da3c2323379413682dc5f4448a00 /MediaBrowser.Controller
parentede84702d1805fac2f452bf298e59549893baea5 (diff)
add custom collection sort orders to edit page
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Entities/IHasDisplayOrder.cs15
-rw-r--r--MediaBrowser.Controller/Entities/Movies/BoxSet.cs21
-rw-r--r--MediaBrowser.Controller/Entities/TV/Series.cs4
-rw-r--r--MediaBrowser.Controller/Entities/Video.cs11
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj1
-rw-r--r--MediaBrowser.Controller/Providers/BaseItemXmlParser.cs15
6 files changed, 63 insertions, 4 deletions
diff --git a/MediaBrowser.Controller/Entities/IHasDisplayOrder.cs b/MediaBrowser.Controller/Entities/IHasDisplayOrder.cs
new file mode 100644
index 000000000..5e1ae2179
--- /dev/null
+++ b/MediaBrowser.Controller/Entities/IHasDisplayOrder.cs
@@ -0,0 +1,15 @@
+
+namespace MediaBrowser.Controller.Entities
+{
+ /// <summary>
+ /// Interface IHasDisplayOrder
+ /// </summary>
+ public interface IHasDisplayOrder
+ {
+ /// <summary>
+ /// Gets or sets the display order.
+ /// </summary>
+ /// <value>The display order.</value>
+ string DisplayOrder { get; set; }
+ }
+}
diff --git a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs
index 8623e2ff6..c0f7570e8 100644
--- a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs
+++ b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs
@@ -9,7 +9,7 @@ namespace MediaBrowser.Controller.Entities.Movies
/// <summary>
/// Class BoxSet
/// </summary>
- public class BoxSet : Folder, IHasTrailers, IHasTags, IHasPreferredMetadataLanguage
+ public class BoxSet : Folder, IHasTrailers, IHasTags, IHasPreferredMetadataLanguage, IHasDisplayOrder
{
public BoxSet()
{
@@ -40,6 +40,12 @@ namespace MediaBrowser.Controller.Entities.Movies
/// <value>The preferred metadata country code.</value>
public string PreferredMetadataCountryCode { get; set; }
+ /// <summary>
+ /// Gets or sets the display order.
+ /// </summary>
+ /// <value>The display order.</value>
+ public string DisplayOrder { get; set; }
+
protected override bool GetBlockUnratedValue(UserConfiguration config)
{
return config.BlockUnratedMovies;
@@ -49,6 +55,19 @@ namespace MediaBrowser.Controller.Entities.Movies
{
var children = base.GetChildren(user, includeLinkedChildren);
+ if (string.Equals(DisplayOrder, "SortName", StringComparison.OrdinalIgnoreCase))
+ {
+ // Sort by name
+ return LibraryManager.Sort(children, user, new[] { ItemSortBy.SortName }, SortOrder.Ascending);
+ }
+
+ if (string.Equals(DisplayOrder, "PremiereDate", StringComparison.OrdinalIgnoreCase))
+ {
+ // Sort by release date
+ return LibraryManager.Sort(children, user, new[] { ItemSortBy.ProductionYear, ItemSortBy.PremiereDate, ItemSortBy.SortName }, SortOrder.Ascending);
+ }
+
+ // Default sorting
return LibraryManager.Sort(children, user, new[] { ItemSortBy.ProductionYear, ItemSortBy.PremiereDate, ItemSortBy.SortName }, SortOrder.Ascending);
}
}
diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs
index f7e78ccd4..135547a37 100644
--- a/MediaBrowser.Controller/Entities/TV/Series.cs
+++ b/MediaBrowser.Controller/Entities/TV/Series.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Controller.Entities.TV
/// <summary>
/// Class Series
/// </summary>
- public class Series : Folder, IHasSoundtracks, IHasTrailers, IHasTags, IHasPreferredMetadataLanguage
+ public class Series : Folder, IHasSoundtracks, IHasTrailers, IHasTags, IHasPreferredMetadataLanguage, IHasDisplayOrder
{
public List<Guid> SpecialFeatureIds { get; set; }
public List<Guid> SoundtrackIds { get; set; }
@@ -45,6 +45,8 @@ namespace MediaBrowser.Controller.Entities.TV
public List<MediaUrl> RemoteTrailers { get; set; }
+ public string DisplayOrder { get; set; }
+
/// <summary>
/// Gets or sets the tags.
/// </summary>
diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs
index 19cad7948..8ca475650 100644
--- a/MediaBrowser.Controller/Entities/Video.cs
+++ b/MediaBrowser.Controller/Entities/Video.cs
@@ -238,7 +238,7 @@ namespace MediaBrowser.Controller.Entities
if (string.IsNullOrEmpty(parentPath))
{
- throw new ApplicationException("Unable to get parent path info from " + path);
+ throw new IOException("Unable to get parent path info from " + path);
}
files = new DirectoryInfo(parentPath)
@@ -247,7 +247,14 @@ namespace MediaBrowser.Controller.Entities
}
else
{
- files = ResolveArgs.FileSystemChildren.Where(i =>
+ var resolveArgs = ResolveArgs;
+
+ if (resolveArgs == null)
+ {
+ throw new IOException("ResolveArgs are null for " + path);
+ }
+
+ files = resolveArgs.FileSystemChildren.Where(i =>
{
if ((i.Attributes & FileAttributes.Directory) == FileAttributes.Directory)
{
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index e08361812..707997141 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -85,6 +85,7 @@
<Compile Include="Entities\IHasAspectRatio.cs" />
<Compile Include="Entities\IHasBudget.cs" />
<Compile Include="Entities\IHasCriticRating.cs" />
+ <Compile Include="Entities\IHasDisplayOrder.cs" />
<Compile Include="Entities\IHasImages.cs" />
<Compile Include="Entities\IHasMediaStreams.cs" />
<Compile Include="Entities\IHasPreferredMetadataLanguage.cs" />
diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
index 799f339f1..ea21e18b0 100644
--- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
+++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs
@@ -532,6 +532,21 @@ namespace MediaBrowser.Controller.Providers
break;
}
+ case "DisplayOrder":
+ {
+ var val = reader.ReadElementContentAsString();
+
+ var hasDisplayOrder = item as IHasDisplayOrder;
+ if (hasDisplayOrder != null)
+ {
+ if (!string.IsNullOrWhiteSpace(val))
+ {
+ hasDisplayOrder.DisplayOrder = val;
+ }
+ }
+ break;
+ }
+
case "Trailers":
{
using (var subtree = reader.ReadSubtree())