aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-08-18 21:42:53 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-08-18 21:42:53 -0400
commitb48d15296c1708545f358dc0ccbc48fea9b2cf00 (patch)
treee1d13ad0810dd614a4b3f8da5e05cbc8f52fcb30 /MediaBrowser.Controller
parent6a2f6782d32603593c669632d825f29fb43f3ea6 (diff)
support custom ordering of user views
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Playlists/Playlist.cs59
-rw-r--r--MediaBrowser.Controller/Providers/ItemIdentities.cs5
2 files changed, 42 insertions, 22 deletions
diff --git a/MediaBrowser.Controller/Playlists/Playlist.cs b/MediaBrowser.Controller/Playlists/Playlist.cs
index 05a894223..84fcbb91a 100644
--- a/MediaBrowser.Controller/Playlists/Playlist.cs
+++ b/MediaBrowser.Controller/Playlists/Playlist.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Querying;
using System;
@@ -47,32 +48,54 @@ namespace MediaBrowser.Controller.Playlists
inputItems = inputItems.Where(i => i.IsVisible(user));
}
- inputItems = inputItems.SelectMany(i =>
+ return inputItems.SelectMany(i => GetPlaylistItems(i, user))
+ .Where(m => string.Equals(m.MediaType, playlistMediaType, StringComparison.OrdinalIgnoreCase));
+ }
+
+ private static IEnumerable<BaseItem> GetPlaylistItems(BaseItem i, User user)
+ {
+ var musicGenre = i as MusicGenre;
+ if (musicGenre != null)
{
- var folder = i as Folder;
+ var songs = user.RootFolder
+ .GetRecursiveChildren(user)
+ .OfType<Audio>()
+ .Where(a => a.Genres.Contains(musicGenre.Name, StringComparer.OrdinalIgnoreCase));
- if (folder != null)
- {
- var items = user == null
- ? folder.GetRecursiveChildren()
- : folder.GetRecursiveChildren(user, true);
+ return LibraryManager.Sort(songs, user, new[] { ItemSortBy.SortName }, SortOrder.Ascending);
+ }
- items = items
- .Where(m => !m.IsFolder);
+ var musicArtist = i as MusicArtist;
+ if (musicArtist != null)
+ {
+ var songs = user.RootFolder
+ .GetRecursiveChildren(user)
+ .OfType<Audio>()
+ .Where(a => a.HasArtist(musicArtist.Name));
- if (!folder.IsPreSorted)
- {
- items = LibraryManager.Sort(items, user, new[] { ItemSortBy.SortName }, SortOrder.Ascending);
- }
+ return LibraryManager.Sort(songs, user, new[] { ItemSortBy.SortName }, SortOrder.Ascending);
+ }
+
+ var folder = i as Folder;
- return items;
- }
+ if (folder != null)
+ {
+ var items = user == null
+ ? folder.GetRecursiveChildren()
+ : folder.GetRecursiveChildren(user, true);
+
+ items = items
+ .Where(m => !m.IsFolder);
- return new[] { i };
+ if (!folder.IsPreSorted)
+ {
+ items = LibraryManager.Sort(items, user, new[] { ItemSortBy.SortName }, SortOrder.Ascending);
+ }
- }).Where(m => string.Equals(m.MediaType, playlistMediaType, StringComparison.OrdinalIgnoreCase));
+ return items;
+ }
- return inputItems;
+ return new[] { i };
}
[IgnoreDataMember]
diff --git a/MediaBrowser.Controller/Providers/ItemIdentities.cs b/MediaBrowser.Controller/Providers/ItemIdentities.cs
index 93d468af0..8d24f6c1f 100644
--- a/MediaBrowser.Controller/Providers/ItemIdentities.cs
+++ b/MediaBrowser.Controller/Providers/ItemIdentities.cs
@@ -1,7 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
+using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;