From 8edeeb0ecc37fcdfda99907c19a20e503ca6b121 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 11 Sep 2014 17:38:23 -0400 Subject: [PATCH] translate music view text --- .../Entities/UserViewBuilder.cs | 64 +++++++++++++++++++ MediaBrowser.Model/Entities/CollectionType.cs | 4 ++ .../Localization/Server/server.json | 4 ++ 3 files changed, 72 insertions(+) diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index 8b39fb5a93..587cfae955 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -192,6 +192,18 @@ namespace MediaBrowser.Controller.Entities case CollectionType.TvFavoriteSeries: return GetFavoriteSeries(parent, user, query); + case CollectionType.MusicFavorites: + return await GetMusicFavorites(parent, user, query).ConfigureAwait(false); + + case CollectionType.MusicFavoriteAlbums: + return GetFavoriteAlbums(parent, user, query); + + case CollectionType.MusicFavoriteArtists: + return GetFavoriteArtists(parent, user, query); + + case CollectionType.MusicFavoriteSongs: + return GetFavoriteSongs(parent, user, query); + default: return GetResult(GetMediaFolders(user).SelectMany(i => i.GetChildren(user, true)), query); } @@ -219,6 +231,20 @@ namespace MediaBrowser.Controller.Entities list.Add(await GetUserView(category, CollectionType.MusicSongs, user, "3", parent).ConfigureAwait(false)); //list.Add(await GetUserView(CollectionType.MusicArtists, user, "3", parent).ConfigureAwait(false)); //list.Add(await GetUserView(CollectionType.MusicGenres, user, "5", parent).ConfigureAwait(false)); + list.Add(await GetUserView(category, CollectionType.MusicFavorites, user, "6", parent).ConfigureAwait(false)); + + return GetResult(list, query); + } + + private async Task> GetMusicFavorites(Folder parent, User user, UserItemsQuery query) + { + var list = new List(); + + var category = "music"; + + list.Add(await GetUserView(category, CollectionType.MusicFavoriteAlbums, user, "0", parent).ConfigureAwait(false)); + list.Add(await GetUserView(category, CollectionType.MusicFavoriteArtists, user, "1", parent).ConfigureAwait(false)); + list.Add(await GetUserView(category, CollectionType.MusicFavoriteSongs, user, "2", parent).ConfigureAwait(false)); return GetResult(list, query); } @@ -271,6 +297,30 @@ namespace MediaBrowser.Controller.Entities return GetResult(artists, query); } + private QueryResult GetFavoriteArtists(Folder parent, User user, UserItemsQuery query) + { + var artists = GetRecursiveChildren(parent, user, new[] { CollectionType.Music }) + .Where(i => !i.IsFolder) + .OfType() + .SelectMany(i => i.AlbumArtists) + .Distinct(StringComparer.OrdinalIgnoreCase) + .Select(i => + { + try + { + return _libraryManager.GetArtist(i); + } + catch + { + // Already logged at lower levels + return null; + } + }) + .Where(i => i != null && _userDataManager.GetUserData(user.Id, i.GetUserDataKey()).IsFavorite); + + return GetResult(artists, query); + } + private QueryResult GetMusicAlbums(Folder parent, User user, UserItemsQuery query) { return GetResult(GetRecursiveChildren(parent, user, new[] { CollectionType.Music }).Where(i => i is MusicAlbum), query); @@ -331,6 +381,20 @@ namespace MediaBrowser.Controller.Entities return GetResult(GetRecursiveChildren(parent, user, new[] { CollectionType.TvShows, string.Empty }).Where(i => i is Episode), query); } + private QueryResult GetFavoriteSongs(Folder parent, User user, UserItemsQuery query) + { + query.IsFavorite = true; + + return GetResult(GetRecursiveChildren(parent, user, new[] { CollectionType.Music }).Where(i => i is Audio.Audio), query); + } + + private QueryResult GetFavoriteAlbums(Folder parent, User user, UserItemsQuery query) + { + query.IsFavorite = true; + + return GetResult(GetRecursiveChildren(parent, user, new[] { CollectionType.Music }).Where(i => i is MusicAlbum), query); + } + private QueryResult GetMovieMovies(Folder parent, User user, UserItemsQuery query) { return GetResult(GetRecursiveChildren(parent, user, new[] { CollectionType.Movies, CollectionType.BoxSets, string.Empty }).Where(i => i is Movie), query); diff --git a/MediaBrowser.Model/Entities/CollectionType.cs b/MediaBrowser.Model/Entities/CollectionType.cs index 12ede04fd3..aaeeafa532 100644 --- a/MediaBrowser.Model/Entities/CollectionType.cs +++ b/MediaBrowser.Model/Entities/CollectionType.cs @@ -57,5 +57,9 @@ public const string MusicGenres = "MusicGenres"; public const string MusicLatest = "MusicLatest"; public const string MusicSongs = "MusicSongs"; + public const string MusicFavorites = "MusicFavorites"; + public const string MusicFavoriteArtists = "MusicFavoriteArtists"; + public const string MusicFavoriteAlbums = "MusicFavoriteAlbums"; + public const string MusicFavoriteSongs = "MusicFavoriteSongs"; } } diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 59357361fd..f5e54e3f99 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -865,6 +865,10 @@ "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", "ViewTypeMusicSongs": "Songs", + "ViewTypeMusicFavorites": "Favorites", + "ViewTypeMusicFavoriteAlbums": "Favorite Albums", + "ViewTypeMusicFavoriteArtists": "Favorite Artists", + "ViewTypeMusicFavoriteSongs": "Favorite Songs", "HeaderMyViews": "My Views", "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.",