aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Controller/Channels/IChannel.cs5
-rw-r--r--MediaBrowser.Controller/Channels/IChannelManager.cs3
-rw-r--r--MediaBrowser.Dlna/Didl/DidlBuilder.cs4
-rw-r--r--MediaBrowser.Model/Querying/NextUpQuery.cs12
-rw-r--r--MediaBrowser.Server.Implementations/Channels/ChannelManager.cs27
-rw-r--r--MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifier.cs12
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/server.json5
-rw-r--r--MediaBrowser.ServerApplication/ApplicationHost.cs2
-rw-r--r--MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj24
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>