mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-04-21 17:44:43 +01:00
fixes #912 - Add special views for Dlna
This commit is contained in:
@@ -38,6 +38,7 @@ using MediaBrowser.Controller.Sorting;
|
||||
using MediaBrowser.Controller.Subtitles;
|
||||
using MediaBrowser.Controller.Sync;
|
||||
using MediaBrowser.Controller.Themes;
|
||||
using MediaBrowser.Controller.TV;
|
||||
using MediaBrowser.Dlna;
|
||||
using MediaBrowser.Dlna.ConnectionManager;
|
||||
using MediaBrowser.Dlna.ContentDirectory;
|
||||
@@ -79,6 +80,7 @@ using MediaBrowser.Server.Implementations.ServerManager;
|
||||
using MediaBrowser.Server.Implementations.Session;
|
||||
using MediaBrowser.Server.Implementations.Sync;
|
||||
using MediaBrowser.Server.Implementations.Themes;
|
||||
using MediaBrowser.Server.Implementations.TV;
|
||||
using MediaBrowser.ServerApplication.FFMpeg;
|
||||
using MediaBrowser.ServerApplication.IO;
|
||||
using MediaBrowser.ServerApplication.Native;
|
||||
@@ -213,10 +215,11 @@ namespace MediaBrowser.ServerApplication
|
||||
private ISubtitleManager SubtitleManager { get; set; }
|
||||
private IChapterManager ChapterManager { get; set; }
|
||||
|
||||
private IUserViewManager UserViewManager { get; set; }
|
||||
internal IUserViewManager UserViewManager { get; set; }
|
||||
|
||||
private IAuthenticationRepository AuthenticationRepository { get; set; }
|
||||
private ISyncRepository SyncRepository { get; set; }
|
||||
private ITVSeriesManager TVSeriesManager { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="ApplicationHost" /> class.
|
||||
@@ -466,6 +469,9 @@ namespace MediaBrowser.ServerApplication
|
||||
ChannelManager = new ChannelManager(UserManager, DtoService, LibraryManager, Logger, ServerConfigurationManager, FileSystemManager, UserDataManager, JsonSerializer, LocalizationManager);
|
||||
RegisterSingleInstance(ChannelManager);
|
||||
|
||||
TVSeriesManager = new TVSeriesManager(UserManager, UserDataManager, LibraryManager);
|
||||
RegisterSingleInstance(TVSeriesManager);
|
||||
|
||||
var appThemeManager = new AppThemeManager(ApplicationPaths, FileSystemManager, JsonSerializer, Logger);
|
||||
RegisterSingleInstance<IAppThemeManager>(appThemeManager);
|
||||
|
||||
@@ -487,7 +493,7 @@ namespace MediaBrowser.ServerApplication
|
||||
UserViewManager = new UserViewManager(LibraryManager, LocalizationManager, FileSystemManager, UserManager, ChannelManager, LiveTvManager, ApplicationPaths, playlistManager);
|
||||
RegisterSingleInstance(UserViewManager);
|
||||
|
||||
var contentDirectory = new ContentDirectory(dlnaManager, UserDataManager, ImageProcessor, LibraryManager, ServerConfigurationManager, UserManager, LogManager.GetLogger("UpnpContentDirectory"), HttpClient, UserViewManager, ChannelManager);
|
||||
var contentDirectory = new ContentDirectory(dlnaManager, UserDataManager, ImageProcessor, LibraryManager, ServerConfigurationManager, UserManager, LogManager.GetLogger("UpnpContentDirectory"), HttpClient);
|
||||
RegisterSingleInstance<IContentDirectory>(contentDirectory);
|
||||
|
||||
NotificationManager = new NotificationManager(LogManager, UserManager, ServerConfigurationManager);
|
||||
@@ -682,9 +688,10 @@ namespace MediaBrowser.ServerApplication
|
||||
Folder.UserManager = UserManager;
|
||||
BaseItem.FileSystem = FileSystemManager;
|
||||
BaseItem.UserDataManager = UserDataManager;
|
||||
ChannelVideoItem.ChannelManager = ChannelManager;
|
||||
BaseItem.ChannelManager = ChannelManager;
|
||||
BaseItem.LiveTvManager = LiveTvManager;
|
||||
UserView.UserViewManager = UserViewManager;
|
||||
Folder.UserViewManager = UserViewManager;
|
||||
UserView.TVSeriesManager = TVSeriesManager;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Persistence;
|
||||
using MediaBrowser.Model.Library;
|
||||
using MediaBrowser.Model.Querying;
|
||||
using MediaBrowser.Model.Serialization;
|
||||
using System;
|
||||
@@ -16,17 +19,17 @@ namespace MediaBrowser.ServerApplication
|
||||
{
|
||||
private readonly IJsonSerializer _jsonSerializer;
|
||||
private readonly ILibraryManager _libraryManager;
|
||||
private readonly IItemRepository _itemRepository;
|
||||
private readonly IUserViewManager _userViewManager;
|
||||
|
||||
private User _currentUser;
|
||||
|
||||
public LibraryViewer(IJsonSerializer jsonSerializer, IUserManager userManager, ILibraryManager libraryManager, IItemRepository itemRepo)
|
||||
public LibraryViewer(IJsonSerializer jsonSerializer, IUserManager userManager, ILibraryManager libraryManager, IUserViewManager userViewManager)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
_jsonSerializer = jsonSerializer;
|
||||
_libraryManager = libraryManager;
|
||||
_itemRepository = itemRepo;
|
||||
_userViewManager = userViewManager;
|
||||
|
||||
foreach (var user in userManager.Users)
|
||||
selectUser.Items.Add(user);
|
||||
@@ -72,23 +75,50 @@ namespace MediaBrowser.ServerApplication
|
||||
LoadTree();
|
||||
}
|
||||
|
||||
private IEnumerable<BaseItem> GetItems(Folder parent, User user)
|
||||
{
|
||||
if (parent == null)
|
||||
{
|
||||
var task = _userViewManager.GetUserViews(new UserViewQuery
|
||||
{
|
||||
UserId = user.Id.ToString("N")
|
||||
|
||||
}, CancellationToken.None);
|
||||
|
||||
task.RunSynchronously();
|
||||
|
||||
return task.Result;
|
||||
}
|
||||
else
|
||||
{
|
||||
var task = parent.GetUserItems(new UserItemsQuery
|
||||
{
|
||||
User = user,
|
||||
SortBy = new[] { ItemSortBy.SortName }
|
||||
|
||||
});
|
||||
|
||||
task.RunSynchronously();
|
||||
|
||||
return task.Result.Items;
|
||||
}
|
||||
}
|
||||
|
||||
private void LoadTree()
|
||||
{
|
||||
treeView1.Nodes.Clear();
|
||||
|
||||
var isPhysical = _currentUser.Name == "Physical";
|
||||
IEnumerable<BaseItem> children = isPhysical ? new[] { _libraryManager.RootFolder } : _libraryManager.RootFolder.GetChildren(_currentUser, true);
|
||||
children = OrderByName(children, _currentUser);
|
||||
IEnumerable<BaseItem> children = isPhysical ? new[] { _libraryManager.RootFolder } : GetItems(null, _currentUser);
|
||||
|
||||
foreach (Folder folder in children)
|
||||
foreach (var folder in children.OfType<Folder>())
|
||||
{
|
||||
|
||||
var currentFolder = folder;
|
||||
|
||||
var node = new TreeNode { Tag = currentFolder };
|
||||
|
||||
var subChildren = isPhysical ? currentFolder.Children : currentFolder.GetChildren(_currentUser, true);
|
||||
subChildren = OrderByName(subChildren, _currentUser);
|
||||
var subChildren = isPhysical ? currentFolder.Children.OrderBy(i => i.SortName) : GetItems(currentFolder, _currentUser);
|
||||
|
||||
AddChildren(node, subChildren, _currentUser, isPhysical);
|
||||
node.Text = currentFolder.Name + " (" +
|
||||
node.Nodes.Count + ")";
|
||||
@@ -111,9 +141,9 @@ namespace MediaBrowser.ServerApplication
|
||||
var subFolder = item as Folder;
|
||||
if (subFolder != null)
|
||||
{
|
||||
var subChildren = isPhysical ? subFolder.Children : subFolder.GetChildren(_currentUser, true);
|
||||
var subChildren = isPhysical ? subFolder.Children.OrderBy(i => i.SortName) : GetItems(subFolder, _currentUser);
|
||||
|
||||
AddChildren(node, OrderBy(subChildren, user, ItemSortBy.SortName), user, isPhysical);
|
||||
AddChildren(node, subChildren, user, isPhysical);
|
||||
node.Text = item.Name + " (" + node.Nodes.Count + ")";
|
||||
}
|
||||
else
|
||||
@@ -124,28 +154,6 @@ namespace MediaBrowser.ServerApplication
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Orders the name of the by.
|
||||
/// </summary>
|
||||
/// <param name="items">The items.</param>
|
||||
/// <param name="user">The user.</param>
|
||||
/// <returns>IEnumerable{BaseItem}.</returns>
|
||||
private IEnumerable<BaseItem> OrderByName(IEnumerable<BaseItem> items, User user)
|
||||
{
|
||||
return OrderBy(items, user, ItemSortBy.SortName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Orders the name of the by.
|
||||
/// </summary>
|
||||
/// <param name="items">The items.</param>
|
||||
/// <param name="user">The user.</param>
|
||||
/// <returns>IEnumerable{BaseItem}.</returns>
|
||||
private IEnumerable<BaseItem> OrderBy(IEnumerable<BaseItem> items, User user, string order)
|
||||
{
|
||||
return _libraryManager.Sort(items, user, new[] { order }, SortOrder.Ascending);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The INDEN t_ STRING
|
||||
/// </summary>
|
||||
|
||||
@@ -249,7 +249,7 @@ namespace MediaBrowser.ServerApplication
|
||||
{
|
||||
//Application.EnableVisualStyles();
|
||||
//Application.SetCompatibleTextRenderingDefault(false);
|
||||
_serverNotifyIcon = new ServerNotifyIcon(_appHost.LogManager, _appHost, _appHost.ServerConfigurationManager, _appHost.UserManager, _appHost.LibraryManager, _appHost.JsonSerializer, _appHost.ItemRepository, _appHost.LocalizationManager);
|
||||
_serverNotifyIcon = new ServerNotifyIcon(_appHost.LogManager, _appHost, _appHost.ServerConfigurationManager, _appHost.UserManager, _appHost.LibraryManager, _appHost.JsonSerializer, _appHost.LocalizationManager, _appHost.UserViewManager);
|
||||
Application.Run();
|
||||
}
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace MediaBrowser.ServerApplication
|
||||
private readonly IUserManager _userManager;
|
||||
private readonly ILibraryManager _libraryManager;
|
||||
private readonly IJsonSerializer _jsonSerializer;
|
||||
private readonly IItemRepository _itemRepository;
|
||||
private readonly IUserViewManager _userViewManager;
|
||||
private readonly ILocalizationManager _localization;
|
||||
private LogForm _logForm;
|
||||
|
||||
@@ -61,11 +61,11 @@ namespace MediaBrowser.ServerApplication
|
||||
IServerConfigurationManager configurationManager,
|
||||
IUserManager userManager, ILibraryManager libraryManager,
|
||||
IJsonSerializer jsonSerializer,
|
||||
IItemRepository itemRepo, ILocalizationManager localization)
|
||||
ILocalizationManager localization, IUserViewManager userViewManager)
|
||||
{
|
||||
_logger = logManager.GetLogger("MainWindow");
|
||||
_itemRepository = itemRepo;
|
||||
_localization = localization;
|
||||
_userViewManager = userViewManager;
|
||||
_appHost = appHost;
|
||||
_logManager = logManager;
|
||||
_configurationManager = configurationManager;
|
||||
@@ -318,7 +318,7 @@ namespace MediaBrowser.ServerApplication
|
||||
|
||||
void cmdLibraryExplorer_Click(object sender, EventArgs e)
|
||||
{
|
||||
new LibraryViewer(_jsonSerializer, _userManager, _libraryManager, _itemRepository).Show();
|
||||
new LibraryViewer(_jsonSerializer, _userManager, _libraryManager, _userViewManager).Show();
|
||||
}
|
||||
|
||||
void cmdRestart_Click(object sender, EventArgs e)
|
||||
|
||||
Reference in New Issue
Block a user