diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-05-03 19:38:23 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-05-03 19:38:23 -0400 |
| commit | f031bb744b00d139a71036678abd6586e6595cb5 (patch) | |
| tree | 11d7df9ef93724305ead973f05afb7a11b801039 | |
| parent | ac2c1563d574fdbaa3529b68b6dd3100377ecf8a (diff) | |
add new web client sidebar
9 files changed, 80 insertions, 14 deletions
diff --git a/MediaBrowser.Controller/Channels/IChannel.cs b/MediaBrowser.Controller/Channels/IChannel.cs index 0c4be8630..ca4b7f551 100644 --- a/MediaBrowser.Controller/Channels/IChannel.cs +++ b/MediaBrowser.Controller/Channels/IChannel.cs @@ -61,6 +61,11 @@ namespace MediaBrowser.Controller.Channels IEnumerable<ImageType> GetSupportedChannelImages(); } + public interface IChannelFactory + { + IEnumerable<IChannel> GetChannels(); + } + public class ChannelInfo { /// <summary> diff --git a/MediaBrowser.Controller/Channels/IChannelManager.cs b/MediaBrowser.Controller/Channels/IChannelManager.cs index b34e77415..05f9afcf0 100644 --- a/MediaBrowser.Controller/Channels/IChannelManager.cs +++ b/MediaBrowser.Controller/Channels/IChannelManager.cs @@ -13,7 +13,8 @@ namespace MediaBrowser.Controller.Channels /// Adds the parts. /// </summary> /// <param name="channels">The channels.</param> - void AddParts(IEnumerable<IChannel> channels); + /// <param name="factories">The factories.</param> + void AddParts(IEnumerable<IChannel> channels, IEnumerable<IChannelFactory> factories); /// <summary> /// Gets the channels. diff --git a/MediaBrowser.Dlna/Didl/DidlBuilder.cs b/MediaBrowser.Dlna/Didl/DidlBuilder.cs index b5129fdb4..7c627104b 100644 --- a/MediaBrowser.Dlna/Didl/DidlBuilder.cs +++ b/MediaBrowser.Dlna/Didl/DidlBuilder.cs @@ -414,11 +414,11 @@ namespace MediaBrowser.Dlna.Didl { classType = "object.container.album.musicAlbum"; } - if (item is MusicArtist) + else if (item is MusicArtist) { classType = "object.container.person.musicArtist"; } - if (item is Series || item is Season || item is BoxSet || item is CollectionFolder) + else if (item is Series || item is Season || item is BoxSet) { classType = "object.container.album.videoAlbum"; } diff --git a/MediaBrowser.Model/Querying/NextUpQuery.cs b/MediaBrowser.Model/Querying/NextUpQuery.cs index cdce2e307..913fae4d9 100644 --- a/MediaBrowser.Model/Querying/NextUpQuery.cs +++ b/MediaBrowser.Model/Querying/NextUpQuery.cs @@ -10,6 +10,12 @@ namespace MediaBrowser.Model.Querying public string UserId { get; set; } /// <summary> + /// Gets or sets the parent identifier. + /// </summary> + /// <value>The parent identifier.</value> + public string ParentId { get; set; } + + /// <summary> /// Gets or sets the series id. /// </summary> /// <value>The series id.</value> @@ -43,6 +49,12 @@ namespace MediaBrowser.Model.Querying public string UserId { get; set; } /// <summary> + /// Gets or sets the parent identifier. + /// </summary> + /// <value>The parent identifier.</value> + public string ParentId { get; set; } + + /// <summary> /// Skips over a given number of items within the results. Use for paging. /// </summary> /// <value>The start index.</value> diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs index e028065c3..dc3a04769 100644 --- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs +++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs @@ -23,6 +23,7 @@ namespace MediaBrowser.Server.Implementations.Channels public class ChannelManager : IChannelManager { private IChannel[] _channels; + private IChannelFactory[] _factories; private List<Channel> _channelEntities = new List<Channel>(); private readonly IUserManager _userManager; @@ -44,9 +45,29 @@ namespace MediaBrowser.Server.Implementations.Channels _userDataManager = userDataManager; } - public void AddParts(IEnumerable<IChannel> channels) + public void AddParts(IEnumerable<IChannel> channels, IEnumerable<IChannelFactory> factories) { _channels = channels.ToArray(); + _factories = factories.ToArray(); + } + + private IEnumerable<IChannel> GetAllChannels() + { + return _factories + .SelectMany(i => + { + try + { + return i.GetChannels().ToList(); + } + catch (Exception ex) + { + _logger.ErrorException("Error getting channel list", ex); + return new List<IChannel>(); + } + }) + .Concat(_channels) + .OrderBy(i => i.Name); } public Task<QueryResult<BaseItemDto>> GetChannels(ChannelQuery query, CancellationToken cancellationToken) @@ -82,7 +103,7 @@ namespace MediaBrowser.Server.Implementations.Channels public async Task RefreshChannels(IProgress<double> progress, CancellationToken cancellationToken) { - var allChannelsList = _channels.ToList(); + var allChannelsList = GetAllChannels().ToList(); var list = new List<Channel>(); @@ -380,7 +401,7 @@ namespace MediaBrowser.Server.Implementations.Channels internal IChannel GetChannelProvider(Channel channel) { - return _channels.First(i => string.Equals(i.Name, channel.OriginalChannelName, StringComparison.OrdinalIgnoreCase)); + return GetAllChannels().First(i => string.Equals(i.Name, channel.OriginalChannelName, StringComparison.OrdinalIgnoreCase)); } private IEnumerable<BaseItem> ApplyFilters(IEnumerable<BaseItem> items, IEnumerable<ItemFilter> filters, User user) diff --git a/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifier.cs b/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifier.cs index 1e3f8b0b0..cc3221711 100644 --- a/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifier.cs +++ b/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifier.cs @@ -81,7 +81,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints.Notifications notification.Variables["Version"] = e.Argument.versionStr; notification.Variables["ReleaseNotes"] = e.Argument.description; - + await SendNotification(notification).ConfigureAwait(false); } @@ -164,7 +164,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints.Notifications var item = e.MediaInfo; - if (e.Item !=null && e.Item.Parent == null) + if (e.Item != null && e.Item.Parent == null) { // Don't report theme song or local trailer playback // TODO: This will also cause movie specials to not be reported @@ -185,7 +185,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints.Notifications await SendNotification(notification).ConfigureAwait(false); } - + private string GetPlaybackNotificationType(string mediaType) { if (string.Equals(mediaType, MediaType.Audio, StringComparison.OrdinalIgnoreCase)) @@ -218,7 +218,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints.Notifications }; notification.Variables["Name"] = item.Name; - + await SendNotification(notification).ConfigureAwait(false); } } @@ -260,7 +260,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints.Notifications async void _installationManager_PluginUninstalled(object sender, GenericEventArgs<IPlugin> e) { var type = NotificationType.PluginUninstalled.ToString(); - + var plugin = e.Argument; var notification = new NotificationRequest @@ -270,7 +270,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints.Notifications notification.Variables["Name"] = plugin.Name; notification.Variables["Version"] = plugin.Version.ToString(); - + await SendNotification(notification).ConfigureAwait(false); } diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 8e2fa18b9..0c99b3a57 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -624,5 +624,8 @@ "ButtonMute": "Mute", "HeaderLatestMedia": "Latest Media", "OptionNoSubtitles": "No Subtitles", - "OptionSpecialFeatures": "Special Features" + "OptionSpecialFeatures": "Special Features", + "HeaderCollections": "Collections", + "HeaderChannels": "Channels", + "HeaderMyLibrary": "My Library" }
\ No newline at end of file diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs index 0740feece..555899f3b 100644 --- a/MediaBrowser.ServerApplication/ApplicationHost.cs +++ b/MediaBrowser.ServerApplication/ApplicationHost.cs @@ -712,7 +712,7 @@ namespace MediaBrowser.ServerApplication SessionManager.AddParts(GetExports<ISessionControllerFactory>()); - ChannelManager.AddParts(GetExports<IChannel>()); + ChannelManager.AddParts(GetExports<IChannel>(), GetExports<IChannelFactory>()); NotificationManager.AddParts(GetExports<INotificationService>(), GetExports<INotificationTypeFactory>()); } diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index 03c77c227..540e54f3b 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -211,6 +211,30 @@ <Content Include="dashboard-ui\css\images\items\detail\tv.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\css\images\items\folders\books.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\css\images\items\folders\channels.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\css\images\items\folders\games.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\css\images\items\folders\homevideos.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\css\images\items\folders\movies.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\css\images\items\folders\music.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\css\images\items\folders\photos.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\css\images\items\folders\tv.png">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\css\images\items\list\remotesearch.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
|
