ebr11 Eric Reed spam 13 years ago
parent
commit
51ce69d9db

+ 26 - 1
MediaBrowser.Api/ApiService.cs

@@ -31,9 +31,14 @@ namespace MediaBrowser.Api
                 UserItemData = Kernel.Instance.GetUserItemData(userId, item.Id),
                 Type = item.GetType().Name,
                 IsFolder = (item is Folder),
-                ParentId = item.Parent == null ? Guid.Empty : item.Parent.Id
+                ParentLogoItemId = GetParentLogoItemId(item)
             };
 
+            if (item.Parent != null)
+            {
+                wrapper.ParentId = item.Parent.Id;
+            }
+
             if (includeChildren)
             {
                 var folder = item as Folder;
@@ -46,5 +51,25 @@ namespace MediaBrowser.Api
 
             return wrapper;
         }
+
+        private static Guid? GetParentLogoItemId(BaseItem item)
+        {
+            if (string.IsNullOrEmpty(item.LogoImagePath))
+            {
+                var parent = item.Parent;
+
+                while (parent != null)
+                {
+                    if (!string.IsNullOrEmpty(parent.LogoImagePath))
+                    {
+                        return parent.Id;
+                    }
+
+                    parent = parent.Parent;
+                }
+            }
+
+            return null;
+        }
     }
 }

+ 17 - 1
MediaBrowser.ApiInteraction/BaseClient.cs

@@ -8,7 +8,23 @@ namespace MediaBrowser.ApiInteraction
     /// </summary>
     public abstract class BaseClient : IDisposable
     {
-        public string ApiUrl { get; set; }
+        /// <summary>
+        /// Gets or sets the server host name (myserver or 192.168.x.x)
+        /// </summary>
+        public string ServerHostName { get; set; }
+
+        /// <summary>
+        /// Gets or sets the port number used by the API
+        /// </summary>
+        public int ApiPort { get; set; }
+
+        protected string ApiUrl
+        {
+            get
+            {
+                return string.Format("http://{0}:{1}/mediabrowser/api", ServerHostName, ApiPort);
+            }
+        }
 
         protected HttpClient HttpClient { get; private set; }
 

+ 2 - 2
MediaBrowser.Common/Kernel/BaseKernel.cs

@@ -141,7 +141,7 @@ namespace MediaBrowser.Common.Kernel
         /// <summary>
         /// Reloads application configuration from the config file
         /// </summary>
-        private void ReloadConfiguration()
+        protected virtual void ReloadConfiguration()
         {
             //Configuration information for anything other than server-specific configuration will have to come via the API... -ebr
 
@@ -199,7 +199,7 @@ namespace MediaBrowser.Common.Kernel
         /// <summary>
         /// Disposes all resources currently in use.
         /// </summary>
-        public void Dispose()
+        public virtual void Dispose()
         {
             DisposeHttpServer();
             DisposeLogger();

+ 6 - 1
MediaBrowser.Model/Entities/ApiBaseItem.cs

@@ -26,7 +26,7 @@ namespace MediaBrowser.Model.Entities
 
         public bool IsFolder { get; set; }
 
-        public Guid ParentId { get; set; }
+        public Guid? ParentId { get; set; }
 
         public string Type { get; set; }
 
@@ -39,5 +39,10 @@ namespace MediaBrowser.Model.Entities
         {
             return Type.Equals(type, StringComparison.OrdinalIgnoreCase);
         }
+
+        /// <summary>
+        /// If the item does not have a logo, this will hold the Id of the Parent that has one.
+        /// </summary>
+        public Guid? ParentLogoItemId { get; set; }
     }
 }