소스 검색

update video osd

Luke Pulverenti 8 년 전
부모
커밋
85cd90d6e6

+ 5 - 21
Emby.Server.Implementations/Data/SqliteItemRepository.cs

@@ -3208,6 +3208,11 @@ namespace Emby.Server.Implementations.Data
 
         private List<string> GetWhereClauses(InternalItemsQuery query, IStatement statement, string paramSuffix = "")
         {
+            if (query.IsResumable ?? false)
+            {
+                query.IsVirtualItem = false;
+            }
+
             var whereClauses = new List<string>();
 
             if (EnableJoinUserData(query))
@@ -4081,27 +4086,6 @@ namespace Emby.Server.Implementations.Data
 
                 whereClauses.Add("LocationType in (" + val + ")");
             }
-            if (query.ExcludeLocationTypes.Length == 1)
-            {
-                if (query.ExcludeLocationTypes[0] == LocationType.Virtual && _config.Configuration.SchemaVersion >= 90)
-                {
-                    query.IsVirtualItem = false;
-                }
-                else
-                {
-                    whereClauses.Add("LocationType<>@ExcludeLocationTypes");
-                    if (statement != null)
-                    {
-                        statement.TryBind("@ExcludeLocationTypes", query.ExcludeLocationTypes[0].ToString());
-                    }
-                }
-            }
-            else if (query.ExcludeLocationTypes.Length > 1)
-            {
-                var val = string.Join(",", query.ExcludeLocationTypes.Select(i => "'" + i + "'").ToArray());
-
-                whereClauses.Add("LocationType not in (" + val + ")");
-            }
             if (query.IsVirtualItem.HasValue)
             {
                 whereClauses.Add("IsVirtualItem=@IsVirtualItem");

+ 2 - 2
Emby.Server.Implementations/Library/SearchEngine.cs

@@ -157,6 +157,7 @@ namespace Emby.Server.Implementations.Library
             }
 
             AddIfMissing(excludeItemTypes, typeof(CollectionFolder).Name);
+            AddIfMissing(excludeItemTypes, typeof(Folder).Name);
 
             var mediaItems = _libraryManager.GetItemList(new InternalItemsQuery(user)
             {
@@ -164,8 +165,7 @@ namespace Emby.Server.Implementations.Library
                 ExcludeItemTypes = excludeItemTypes.ToArray(),
                 IncludeItemTypes = includeItemTypes.ToArray(),
                 Limit = query.Limit,
-                IncludeItemsByName = true,
-                IsVirtualItem = false
+                IncludeItemsByName = true
             });
 
             // Add search hints based on item name

+ 1 - 1
Emby.Server.Implementations/Library/UserViewManager.cs

@@ -287,7 +287,7 @@ namespace Emby.Server.Implementations.Library
                 SortBy = new[] { ItemSortBy.DateCreated },
                 IsFolder = includeItemTypes.Length == 0 ? false : (bool?)null,
                 ExcludeItemTypes = excludeItemTypes,
-                ExcludeLocationTypes = new[] { LocationType.Virtual },
+                IsVirtualItem = false,
                 Limit = limit * 5,
                 SourceTypes = parents.Count == 0 ? new[] { SourceType.Library } : new SourceType[] { },
                 IsPlayed = request.IsPlayed

+ 1 - 1
Emby.Server.Implementations/LiveTv/LiveTvManager.cs

@@ -1602,7 +1602,7 @@ namespace Emby.Server.Implementations.LiveTv
                 Recursive = true,
                 AncestorIds = folders.Select(i => i.Id.ToString("N")).ToArray(),
                 IsFolder = false,
-                ExcludeLocationTypes = new[] { LocationType.Virtual },
+                IsVirtualItem = false,
                 Limit = query.Limit,
                 SortBy = new[] { ItemSortBy.DateCreated },
                 SortOrder = SortOrder.Descending,

+ 1 - 1
MediaBrowser.Api/Library/LibraryService.cs

@@ -666,7 +666,7 @@ namespace MediaBrowser.Api.Library
                 IncludeItemTypes = new[] { type.Name },
                 Limit = 0,
                 Recursive = true,
-                ExcludeLocationTypes = new[] { LocationType.Virtual },
+                IsVirtualItem = false,
                 SourceTypes = new[] { SourceType.Library },
                 IsFavorite = request.IsFavorite
             };

+ 5 - 1
MediaBrowser.Api/Reports/ReportsService.cs

@@ -293,7 +293,11 @@ namespace MediaBrowser.Api.Reports
             // ExcludeLocationTypes
             if (!string.IsNullOrEmpty(request.ExcludeLocationTypes))
             {
-                query.ExcludeLocationTypes = request.ExcludeLocationTypes.Split(',').Select(d => (LocationType)Enum.Parse(typeof(LocationType), d, true)).ToArray();
+                var excludeLocationTypes = request.ExcludeLocationTypes.Split(',').Select(d => (LocationType)Enum.Parse(typeof(LocationType), d, true)).ToArray();
+                if (excludeLocationTypes.Contains(LocationType.Virtual))
+                {
+                    query.IsVirtualItem = false;
+                }
             }
 
             if (!string.IsNullOrEmpty(request.LocationTypes))

+ 5 - 1
MediaBrowser.Api/UserLibrary/ItemsService.cs

@@ -318,7 +318,11 @@ namespace MediaBrowser.Api.UserLibrary
             // ExcludeLocationTypes
             if (!string.IsNullOrEmpty(request.ExcludeLocationTypes))
             {
-                query.ExcludeLocationTypes = request.ExcludeLocationTypes.Split(',').Select(d => (LocationType)Enum.Parse(typeof(LocationType), d, true)).ToArray();
+                var excludeLocationTypes = request.ExcludeLocationTypes.Split(',').Select(d => (LocationType)Enum.Parse(typeof(LocationType), d, true)).ToArray();
+                if (excludeLocationTypes.Contains(LocationType.Virtual))
+                {
+                    query.IsVirtualItem = false;
+                }
             }
 
             if (!string.IsNullOrEmpty(request.LocationTypes))

+ 9 - 0
MediaBrowser.Controller/Entities/AudioBook.cs

@@ -16,6 +16,15 @@ namespace MediaBrowser.Controller.Entities
             }
         }
 
+        [IgnoreDataMember]
+        public override bool SupportsPlayedStatus
+        {
+            get
+            {
+                return true;
+            }
+        }
+
         [IgnoreDataMember]
         public string SeriesPresentationUniqueKey { get; set; }
         [IgnoreDataMember]

+ 2 - 2
MediaBrowser.Controller/Entities/Folder.cs

@@ -1336,7 +1336,7 @@ namespace MediaBrowser.Controller.Entities
 
             if (!user.Configuration.DisplayMissingEpisodes || !user.Configuration.DisplayUnairedEpisodes)
             {
-                query.ExcludeLocationTypes = new[] { LocationType.Virtual };
+                query.IsVirtualItem = false;
             }
 
             var itemsResult = await GetItems(query).ConfigureAwait(false);
@@ -1375,7 +1375,7 @@ namespace MediaBrowser.Controller.Entities
             {
                 Recursive = true,
                 IsFolder = false,
-                ExcludeLocationTypes = new[] { LocationType.Virtual },
+                IsVirtualItem = false,
                 EnableTotalRecordCount = false
 
             }).Result;

+ 0 - 2
MediaBrowser.Controller/Entities/InternalItemsQuery.cs

@@ -130,7 +130,6 @@ namespace MediaBrowser.Controller.Entities
         public string[] TopParentIds { get; set; }
 
         public LocationType[] LocationTypes { get; set; }
-        public LocationType[] ExcludeLocationTypes { get; set; }
         public string[] PresetViews { get; set; }
         public SourceType[] SourceTypes { get; set; }
         public SourceType[] ExcludeSourceTypes { get; set; }
@@ -233,7 +232,6 @@ namespace MediaBrowser.Controller.Entities
             ExcludeTags = new string[] { };
             ExcludeInheritedTags = new string[] { };
             LocationTypes = new LocationType[] { };
-            ExcludeLocationTypes = new LocationType[] { };
             PresetViews = new string[] { };
             SourceTypes = new SourceType[] { };
             ExcludeSourceTypes = new SourceType[] { };

+ 2 - 2
MediaBrowser.Controller/Entities/UserViewBuilder.cs

@@ -647,7 +647,7 @@ namespace MediaBrowser.Controller.Entities
             query.SetUser(user);
             query.Limit = GetSpecialItemsLimit();
             query.IncludeItemTypes = new[] { typeof(Episode).Name };
-            query.ExcludeLocationTypes = new[] { LocationType.Virtual };
+            query.IsVirtualItem = false;
 
             return ConvertToResult(_libraryManager.GetItemList(query));
         }
@@ -1199,7 +1199,7 @@ namespace MediaBrowser.Controller.Entities
                 return false;
             }
 
-            if (query.ExcludeLocationTypes.Length > 0 && query.ExcludeLocationTypes.Contains(item.LocationType))
+            if (query.IsVirtualItem.HasValue && item.IsVirtualItem != query.IsVirtualItem.Value)
             {
                 return false;
             }

+ 5 - 0
MediaBrowser.Controller/LiveTv/LiveTvProgram.cs

@@ -15,6 +15,11 @@ namespace MediaBrowser.Controller.LiveTv
 {
     public class LiveTvProgram : BaseItem, IHasLookupInfo<LiveTvProgramLookupInfo>, IHasStartDate, IHasProgramAttributes
     {
+        public LiveTvProgram()
+        {
+            IsVirtualItem = true;
+        }
+
         public override List<string> GetUserDataKeys()
         {
             var list = base.GetUserDataKeys();

+ 1 - 1
MediaBrowser.Providers/MediaInfo/SubtitleScheduledTask.cs

@@ -82,10 +82,10 @@ namespace MediaBrowser.Providers.MediaInfo
             {
                 MediaTypes = new string[] { MediaType.Video },
                 IsVirtualItem = false,
-                ExcludeLocationTypes = new LocationType[] { LocationType.Remote, LocationType.Virtual },
                 IncludeItemTypes = types.ToArray()
 
             }).OfType<Video>()
+                .Where(i => i.LocationType != LocationType.Remote)
                 .ToList();
 
             if (videos.Count == 0)