fixed client type display for ios. also fixed display preferences saving.

This commit is contained in:
LukePulverenti 2013-03-17 23:10:21 -04:00
parent c1d38106c7
commit cf61ac0264
20 changed files with 81 additions and 168 deletions

View File

@ -51,11 +51,7 @@ namespace MediaBrowser.Api
{ {
var user = UserManager.GetUserById(new Guid(auth["UserId"])); var user = UserManager.GetUserById(new Guid(auth["UserId"]));
ClientType clientType; UserManager.LogUserActivity(user, auth["Client"], auth["DeviceId"], auth["Device"] ?? string.Empty);
Enum.TryParse(auth["Client"] ?? string.Empty, out clientType);
UserManager.LogUserActivity(user, clientType, auth["DeviceId"], auth["Device"] ?? string.Empty);
} }
} }

View File

@ -5,8 +5,7 @@ using MediaBrowser.Model.Connectivity;
using MediaBrowser.Model.Dto; using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Querying; using MediaBrowser.Model.Querying;
using MediaBrowser.Server.Implementations.HttpServer; using MediaBrowser.Model.Serialization;
using MediaBrowser.Server.Implementations.Library;
using ServiceStack.ServiceHost; using ServiceStack.ServiceHost;
using ServiceStack.Text.Controller; using ServiceStack.Text.Controller;
using System; using System;
@ -356,16 +355,18 @@ namespace MediaBrowser.Api.UserLibrary
private readonly IUserManager _userManager; private readonly IUserManager _userManager;
private readonly ILibraryManager _libraryManager; private readonly ILibraryManager _libraryManager;
private readonly IJsonSerializer _jsonSerializer;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="UserLibraryService" /> class. /// Initializes a new instance of the <see cref="UserLibraryService" /> class.
/// </summary> /// </summary>
/// <exception cref="System.ArgumentNullException">jsonSerializer</exception> /// <exception cref="System.ArgumentNullException">jsonSerializer</exception>
public UserLibraryService(IUserManager userManager, ILibraryManager libraryManager) public UserLibraryService(IUserManager userManager, ILibraryManager libraryManager, IJsonSerializer jsonSerializer)
: base() : base()
{ {
_userManager = userManager; _userManager = userManager;
_libraryManager = libraryManager; _libraryManager = libraryManager;
_jsonSerializer = jsonSerializer;
} }
/// <summary> /// <summary>
@ -481,7 +482,8 @@ namespace MediaBrowser.Api.UserLibrary
var item = (Folder)DtoBuilder.GetItemByClientId(itemId, _userManager, _libraryManager, user.Id); var item = (Folder)DtoBuilder.GetItemByClientId(itemId, _userManager, _libraryManager, user.Id);
var displayPreferences = request; // Serialize to json and then back so that the core doesn't see the request dto type
var displayPreferences = _jsonSerializer.DeserializeFromString<DisplayPreferences>(_jsonSerializer.SerializeToString(request));
var task = _libraryManager.SaveDisplayPreferencesForFolder(user, item, displayPreferences); var task = _libraryManager.SaveDisplayPreferencesForFolder(user, item, displayPreferences);
@ -597,11 +599,7 @@ namespace MediaBrowser.Api.UserLibrary
if (auth != null) if (auth != null)
{ {
ClientType clientType; _userManager.OnPlaybackStart(user, item, auth["Client"], auth["DeviceId"], auth["Device"] ?? string.Empty);
Enum.TryParse(auth["Client"] ?? string.Empty, out clientType);
_userManager.OnPlaybackStart(user, item, clientType, auth["DeviceId"], auth["Device"] ?? string.Empty);
} }
} }
@ -619,11 +617,7 @@ namespace MediaBrowser.Api.UserLibrary
if (auth != null) if (auth != null)
{ {
ClientType clientType; var task = _userManager.OnPlaybackProgress(user, item, request.PositionTicks, auth["Client"], auth["DeviceId"], auth["Device"] ?? string.Empty);
Enum.TryParse(auth["Client"] ?? string.Empty, out clientType);
var task = _userManager.OnPlaybackProgress(user, item, request.PositionTicks, clientType, auth["DeviceId"], auth["Device"] ?? string.Empty);
Task.WaitAll(task); Task.WaitAll(task);
} }
@ -633,7 +627,7 @@ namespace MediaBrowser.Api.UserLibrary
/// Posts the specified request. /// Posts the specified request.
/// </summary> /// </summary>
/// <param name="request">The request.</param> /// <param name="request">The request.</param>
public void Post(OnPlaybackStopped request) public void Delete(OnPlaybackStopped request)
{ {
var user = _userManager.GetUserById(request.UserId); var user = _userManager.GetUserById(request.UserId);
@ -643,11 +637,7 @@ namespace MediaBrowser.Api.UserLibrary
if (auth != null) if (auth != null)
{ {
ClientType clientType; var task = _userManager.OnPlaybackStopped(user, item, request.PositionTicks, auth["Client"], auth["DeviceId"], auth["Device"] ?? string.Empty);
Enum.TryParse(auth["Client"] ?? string.Empty, out clientType);
var task = _userManager.OnPlaybackStopped(user, item, request.PositionTicks, clientType, auth["DeviceId"], auth["Device"] ?? string.Empty);
Task.WaitAll(task); Task.WaitAll(task);
} }

View File

@ -35,7 +35,7 @@ namespace MediaBrowser.Controller.Entities
/// Allow different display preferences for each collection folder /// Allow different display preferences for each collection folder
/// </summary> /// </summary>
/// <value>The display prefs id.</value> /// <value>The display prefs id.</value>
public override Guid DisplayPrefsId public override Guid DisplayPreferencesId
{ {
get get
{ {

View File

@ -64,7 +64,7 @@ namespace MediaBrowser.Controller.Entities
/// </summary> /// </summary>
/// <value>The display prefs id.</value> /// <value>The display prefs id.</value>
[IgnoreDataMember] [IgnoreDataMember]
public virtual Guid DisplayPrefsId public virtual Guid DisplayPreferencesId
{ {
get get
{ {
@ -76,35 +76,35 @@ namespace MediaBrowser.Controller.Entities
/// <summary> /// <summary>
/// The _display prefs /// The _display prefs
/// </summary> /// </summary>
private IEnumerable<DisplayPreferences> _displayPrefs; private IEnumerable<DisplayPreferences> _displayPreferences;
/// <summary> /// <summary>
/// The _display prefs initialized /// The _display prefs initialized
/// </summary> /// </summary>
private bool _displayPrefsInitialized; private bool _displayPreferencesInitialized;
/// <summary> /// <summary>
/// The _display prefs sync lock /// The _display prefs sync lock
/// </summary> /// </summary>
private object _displayPrefsSyncLock = new object(); private object _displayPreferencesSyncLock = new object();
/// <summary> /// <summary>
/// Gets the display prefs. /// Gets the display prefs.
/// </summary> /// </summary>
/// <value>The display prefs.</value> /// <value>The display prefs.</value>
[IgnoreDataMember] [IgnoreDataMember]
public IEnumerable<DisplayPreferences> DisplayPrefs public IEnumerable<DisplayPreferences> DisplayPreferences
{ {
get get
{ {
// Call ToList to exhaust the stream because we'll be iterating over this multiple times // Call ToList to exhaust the stream because we'll be iterating over this multiple times
LazyInitializer.EnsureInitialized(ref _displayPrefs, ref _displayPrefsInitialized, ref _displayPrefsSyncLock, () => Kernel.Instance.DisplayPreferencesRepository.RetrieveDisplayPrefs(this).ToList()); LazyInitializer.EnsureInitialized(ref _displayPreferences, ref _displayPreferencesInitialized, ref _displayPreferencesSyncLock, () => Kernel.Instance.DisplayPreferencesRepository.RetrieveDisplayPreferences(this).ToList());
return _displayPrefs; return _displayPreferences;
} }
private set private set
{ {
_displayPrefs = value; _displayPreferences = value;
if (value == null) if (value == null)
{ {
_displayPrefsInitialized = false; _displayPreferencesInitialized = false;
} }
} }
} }
@ -116,29 +116,29 @@ namespace MediaBrowser.Controller.Entities
/// <param name="createIfNull">if set to <c>true</c> [create if null].</param> /// <param name="createIfNull">if set to <c>true</c> [create if null].</param>
/// <returns>DisplayPreferences.</returns> /// <returns>DisplayPreferences.</returns>
/// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="System.ArgumentNullException"></exception>
public DisplayPreferences GetDisplayPrefs(User user, bool createIfNull) public DisplayPreferences GetDisplayPreferences(User user, bool createIfNull)
{ {
if (user == null) if (user == null)
{ {
throw new ArgumentNullException(); throw new ArgumentNullException();
} }
if (DisplayPrefs == null) if (DisplayPreferences == null)
{ {
if (!createIfNull) if (!createIfNull)
{ {
return null; return null;
} }
AddOrUpdateDisplayPrefs(user, new DisplayPreferences { UserId = user.Id }); AddOrUpdateDisplayPreferences(user, new DisplayPreferences { UserId = user.Id });
} }
var data = DisplayPrefs.FirstOrDefault(u => u.UserId == user.Id); var data = DisplayPreferences.FirstOrDefault(u => u.UserId == user.Id);
if (data == null && createIfNull) if (data == null && createIfNull)
{ {
data = new DisplayPreferences { UserId = user.Id }; data = new DisplayPreferences { UserId = user.Id };
AddOrUpdateDisplayPrefs(user, data); AddOrUpdateDisplayPreferences(user, data);
} }
return data; return data;
@ -150,7 +150,7 @@ namespace MediaBrowser.Controller.Entities
/// <param name="user">The user.</param> /// <param name="user">The user.</param>
/// <param name="data">The data.</param> /// <param name="data">The data.</param>
/// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="System.ArgumentNullException"></exception>
public void AddOrUpdateDisplayPrefs(User user, DisplayPreferences data) public void AddOrUpdateDisplayPreferences(User user, DisplayPreferences data)
{ {
if (user == null) if (user == null)
{ {
@ -164,15 +164,15 @@ namespace MediaBrowser.Controller.Entities
data.UserId = user.Id; data.UserId = user.Id;
if (DisplayPrefs == null) if (DisplayPreferences == null)
{ {
DisplayPrefs = new[] { data }; DisplayPreferences = new[] { data };
} }
else else
{ {
var list = DisplayPrefs.Where(u => u.UserId != user.Id).ToList(); var list = DisplayPreferences.Where(u => u.UserId != user.Id).ToList();
list.Add(data); list.Add(data);
DisplayPrefs = list; DisplayPreferences = list;
} }
} }

View File

@ -175,7 +175,7 @@ namespace MediaBrowser.Controller.Library
if (item.IsFolder && fields.Contains(ItemFields.DisplayPreferences)) if (item.IsFolder && fields.Contains(ItemFields.DisplayPreferences))
{ {
dto.DisplayPreferences = ((Folder)item).GetDisplayPrefs(user, false) ?? new DisplayPreferences { UserId = user.Id }; dto.DisplayPreferences = ((Folder)item).GetDisplayPreferences(user, false) ?? new DisplayPreferences { UserId = user.Id };
} }
if (item.IsFolder) if (item.IsFolder)

View File

@ -73,7 +73,7 @@ namespace MediaBrowser.Controller.Library
/// <param name="deviceName">Name of the device.</param> /// <param name="deviceName">Name of the device.</param>
/// <returns>Task.</returns> /// <returns>Task.</returns>
/// <exception cref="System.ArgumentNullException">user</exception> /// <exception cref="System.ArgumentNullException">user</exception>
Task LogUserActivity(User user, ClientType clientType, string deviceId, string deviceName); Task LogUserActivity(User user, string clientType, string deviceId, string deviceName);
/// <summary> /// <summary>
/// Refreshes metadata for each user /// Refreshes metadata for each user
@ -128,7 +128,7 @@ namespace MediaBrowser.Controller.Library
/// <param name="deviceId">The device id.</param> /// <param name="deviceId">The device id.</param>
/// <param name="deviceName">Name of the device.</param> /// <param name="deviceName">Name of the device.</param>
/// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="System.ArgumentNullException"></exception>
void OnPlaybackStart(User user, BaseItem item, ClientType clientType, string deviceId, string deviceName); void OnPlaybackStart(User user, BaseItem item, string clientType, string deviceId, string deviceName);
/// <summary> /// <summary>
/// Used to report playback progress for an item /// Used to report playback progress for an item
@ -141,7 +141,7 @@ namespace MediaBrowser.Controller.Library
/// <param name="deviceName">Name of the device.</param> /// <param name="deviceName">Name of the device.</param>
/// <returns>Task.</returns> /// <returns>Task.</returns>
/// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="System.ArgumentNullException"></exception>
Task OnPlaybackProgress(User user, BaseItem item, long? positionTicks, ClientType clientType, string deviceId, string deviceName); Task OnPlaybackProgress(User user, BaseItem item, long? positionTicks, string clientType, string deviceId, string deviceName);
/// <summary> /// <summary>
/// Used to report that playback has ended for an item /// Used to report that playback has ended for an item
@ -154,7 +154,7 @@ namespace MediaBrowser.Controller.Library
/// <param name="deviceName">Name of the device.</param> /// <param name="deviceName">Name of the device.</param>
/// <returns>Task.</returns> /// <returns>Task.</returns>
/// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="System.ArgumentNullException"></exception>
Task OnPlaybackStopped(User user, BaseItem item, long? positionTicks, ClientType clientType, string deviceId, string deviceName); Task OnPlaybackStopped(User user, BaseItem item, long? positionTicks, string clientType, string deviceId, string deviceName);
/// <summary> /// <summary>
/// Saves user data for an item /// Saves user data for an item

View File

@ -17,13 +17,13 @@ namespace MediaBrowser.Controller.Persistence
/// <param name="item">The item.</param> /// <param name="item">The item.</param>
/// <param name="cancellationToken">The cancellation token.</param> /// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns> /// <returns>Task.</returns>
Task SaveDisplayPrefs(Folder item, CancellationToken cancellationToken); Task SaveDisplayPreferences(Folder item, CancellationToken cancellationToken);
/// <summary> /// <summary>
/// Gets display preferences for an item /// Gets display preferences for an item
/// </summary> /// </summary>
/// <param name="item">The item.</param> /// <param name="item">The item.</param>
/// <returns>IEnumerable{DisplayPreferences}.</returns> /// <returns>IEnumerable{DisplayPreferences}.</returns>
IEnumerable<DisplayPreferences> RetrieveDisplayPrefs(Folder item); IEnumerable<DisplayPreferences> RetrieveDisplayPreferences(Folder item);
} }
} }

View File

@ -22,7 +22,7 @@ namespace MediaBrowser.Model.Connectivity
/// </summary> /// </summary>
/// <value>The type of the client.</value> /// <value>The type of the client.</value>
[ProtoMember(2)] [ProtoMember(2)]
public ClientType ClientType { get; set; } public string Client { get; set; }
/// <summary> /// <summary>
/// Gets or sets the last activity date. /// Gets or sets the last activity date.

View File

@ -1,41 +0,0 @@
namespace MediaBrowser.Model.Connectivity
{
/// <summary>
/// Enum ClientType
/// </summary>
public enum ClientType
{
/// <summary>
/// The other
/// </summary>
Other,
/// <summary>
/// The android
/// </summary>
Android,
/// <summary>
/// The dashboard
/// </summary>
Dashboard,
/// <summary>
/// The dlna
/// </summary>
Dlna,
/// <summary>
/// The ios
/// </summary>
Ios,
/// <summary>
/// The pc
/// </summary>
Pc,
/// <summary>
/// The windows phone
/// </summary>
WindowsPhone,
/// <summary>
/// The windows RT
/// </summary>
WindowsRT
}
}

View File

@ -21,8 +21,6 @@ namespace MediaBrowser.Model.Entities
/// </summary> /// </summary>
public DisplayPreferences() public DisplayPreferences()
{ {
ViewType = ViewTypes.Poster;
PrimaryImageType = ImageType.Primary;
RememberIndexing = false; RememberIndexing = false;
PrimaryImageHeight = 250; PrimaryImageHeight = 250;
PrimaryImageWidth = 250; PrimaryImageWidth = 250;
@ -40,13 +38,7 @@ namespace MediaBrowser.Model.Entities
/// </summary> /// </summary>
/// <value>The type of the view.</value> /// <value>The type of the view.</value>
[ProtoMember(2)] [ProtoMember(2)]
public ViewTypes ViewType { get; set; } public string ViewType { get; set; }
/// <summary>
/// Gets or sets the type of the primary image.
/// </summary>
/// <value>The type of the primary image.</value>
[ProtoMember(3)]
public ImageType PrimaryImageType { get; set; }
/// <summary> /// <summary>
/// Gets or sets the sort by. /// Gets or sets the sort by.
/// </summary> /// </summary>
@ -127,29 +119,6 @@ namespace MediaBrowser.Model.Entities
} }
} }
/// <summary>
/// Enum ViewTypes
/// </summary>
public enum ViewTypes
{
/// <summary>
/// The poster
/// </summary>
Poster,
/// <summary>
/// The cover flow
/// </summary>
CoverFlow,
/// <summary>
/// The thumb strip
/// </summary>
ThumbStrip,
/// <summary>
/// The list
/// </summary>
List
}
/// <summary> /// <summary>
/// Enum ScrollDirection /// Enum ScrollDirection
/// </summary> /// </summary>

View File

@ -49,7 +49,6 @@
<Compile Include="Querying\ItemsByNameQuery.cs" /> <Compile Include="Querying\ItemsByNameQuery.cs" />
<Compile Include="Entities\BaseItemInfo.cs" /> <Compile Include="Entities\BaseItemInfo.cs" />
<Compile Include="Connectivity\ClientConnectionInfo.cs" /> <Compile Include="Connectivity\ClientConnectionInfo.cs" />
<Compile Include="Connectivity\ClientType.cs" />
<Compile Include="Entities\ImageDownloadOptions.cs" /> <Compile Include="Entities\ImageDownloadOptions.cs" />
<Compile Include="Logging\ILogManager.cs" /> <Compile Include="Logging\ILogManager.cs" />
<Compile Include="MediaInfo\BlurayDiscInfo.cs" /> <Compile Include="MediaInfo\BlurayDiscInfo.cs" />

View File

@ -466,7 +466,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
/// Gets the routes. /// Gets the routes.
/// </summary> /// </summary>
/// <returns>IEnumerable{RouteInfo}.</returns> /// <returns>IEnumerable{RouteInfo}.</returns>
public IEnumerable<RouteInfo> GetRoutes() public virtual IEnumerable<RouteInfo> GetRoutes()
{ {
return new RouteInfo[] {}; return new RouteInfo[] {};
} }

View File

@ -664,15 +664,15 @@ namespace MediaBrowser.Server.Implementations.Library
/// <returns>Task.</returns> /// <returns>Task.</returns>
public Task SaveDisplayPreferencesForFolder(User user, Folder folder, DisplayPreferences data) public Task SaveDisplayPreferencesForFolder(User user, Folder folder, DisplayPreferences data)
{ {
// Need to update all items with the same DisplayPrefsId // Need to update all items with the same DisplayPreferencesId
foreach (var child in RootFolder.GetRecursiveChildren(user) foreach (var child in RootFolder.GetRecursiveChildren(user)
.OfType<Folder>() .OfType<Folder>()
.Where(i => i.DisplayPrefsId == folder.DisplayPrefsId)) .Where(i => i.DisplayPreferencesId == folder.DisplayPreferencesId))
{ {
child.AddOrUpdateDisplayPrefs(user, data); child.AddOrUpdateDisplayPreferences(user, data);
} }
return Kernel.DisplayPreferencesRepository.SaveDisplayPrefs(folder, CancellationToken.None); return Kernel.DisplayPreferencesRepository.SaveDisplayPreferences(folder, CancellationToken.None);
} }
/// <summary> /// <summary>

View File

@ -226,7 +226,7 @@ namespace MediaBrowser.Server.Implementations.Library
/// <param name="deviceName">Name of the device.</param> /// <param name="deviceName">Name of the device.</param>
/// <returns>Task.</returns> /// <returns>Task.</returns>
/// <exception cref="System.ArgumentNullException">user</exception> /// <exception cref="System.ArgumentNullException">user</exception>
public Task LogUserActivity(User user, ClientType clientType, string deviceId, string deviceName) public Task LogUserActivity(User user, string clientType, string deviceId, string deviceName)
{ {
if (user == null) if (user == null)
{ {
@ -252,7 +252,7 @@ namespace MediaBrowser.Server.Implementations.Library
/// <param name="deviceName">Name of the device.</param> /// <param name="deviceName">Name of the device.</param>
/// <param name="item">The item.</param> /// <param name="item">The item.</param>
/// <param name="currentPositionTicks">The current position ticks.</param> /// <param name="currentPositionTicks">The current position ticks.</param>
private void UpdateNowPlayingItemId(User user, ClientType clientType, string deviceId, string deviceName, BaseItem item, long? currentPositionTicks = null) private void UpdateNowPlayingItemId(User user, string clientType, string deviceId, string deviceName, BaseItem item, long? currentPositionTicks = null)
{ {
var conn = GetConnection(user.Id, clientType, deviceId, deviceName); var conn = GetConnection(user.Id, clientType, deviceId, deviceName);
@ -269,7 +269,7 @@ namespace MediaBrowser.Server.Implementations.Library
/// <param name="deviceId">The device id.</param> /// <param name="deviceId">The device id.</param>
/// <param name="deviceName">Name of the device.</param> /// <param name="deviceName">Name of the device.</param>
/// <param name="item">The item.</param> /// <param name="item">The item.</param>
private void RemoveNowPlayingItemId(User user, ClientType clientType, string deviceId, string deviceName, BaseItem item) private void RemoveNowPlayingItemId(User user, string clientType, string deviceId, string deviceName, BaseItem item)
{ {
var conn = GetConnection(user.Id, clientType, deviceId, deviceName); var conn = GetConnection(user.Id, clientType, deviceId, deviceName);
@ -288,7 +288,7 @@ namespace MediaBrowser.Server.Implementations.Library
/// <param name="deviceId">The device id.</param> /// <param name="deviceId">The device id.</param>
/// <param name="deviceName">Name of the device.</param> /// <param name="deviceName">Name of the device.</param>
/// <param name="lastActivityDate">The last activity date.</param> /// <param name="lastActivityDate">The last activity date.</param>
private void LogConnection(Guid userId, ClientType clientType, string deviceId, string deviceName, DateTime lastActivityDate) private void LogConnection(Guid userId, string clientType, string deviceId, string deviceName, DateTime lastActivityDate)
{ {
GetConnection(userId, clientType, deviceId, deviceName).LastActivityDate = lastActivityDate; GetConnection(userId, clientType, deviceId, deviceName).LastActivityDate = lastActivityDate;
} }
@ -301,18 +301,18 @@ namespace MediaBrowser.Server.Implementations.Library
/// <param name="deviceId">The device id.</param> /// <param name="deviceId">The device id.</param>
/// <param name="deviceName">Name of the device.</param> /// <param name="deviceName">Name of the device.</param>
/// <returns>ClientConnectionInfo.</returns> /// <returns>ClientConnectionInfo.</returns>
private ClientConnectionInfo GetConnection(Guid userId, ClientType clientType, string deviceId, string deviceName) private ClientConnectionInfo GetConnection(Guid userId, string clientType, string deviceId, string deviceName)
{ {
lock (_activeConnections) lock (_activeConnections)
{ {
var conn = _activeConnections.FirstOrDefault(c => c.ClientType == clientType && string.Equals(deviceId, c.DeviceId)); var conn = _activeConnections.FirstOrDefault(c => string.Equals(c.Client, clientType, StringComparison.OrdinalIgnoreCase) && string.Equals(deviceId, c.DeviceId));
if (conn == null) if (conn == null)
{ {
conn = new ClientConnectionInfo conn = new ClientConnectionInfo
{ {
UserId = userId, UserId = userId,
ClientType = clientType, Client = clientType,
DeviceName = deviceName, DeviceName = deviceName,
DeviceId = deviceId DeviceId = deviceId
}; };
@ -541,7 +541,7 @@ namespace MediaBrowser.Server.Implementations.Library
/// <param name="deviceId">The device id.</param> /// <param name="deviceId">The device id.</param>
/// <param name="deviceName">Name of the device.</param> /// <param name="deviceName">Name of the device.</param>
/// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="System.ArgumentNullException"></exception>
public void OnPlaybackStart(User user, BaseItem item, ClientType clientType, string deviceId, string deviceName) public void OnPlaybackStart(User user, BaseItem item, string clientType, string deviceId, string deviceName)
{ {
if (user == null) if (user == null)
{ {
@ -574,7 +574,7 @@ namespace MediaBrowser.Server.Implementations.Library
/// <param name="deviceName">Name of the device.</param> /// <param name="deviceName">Name of the device.</param>
/// <returns>Task.</returns> /// <returns>Task.</returns>
/// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="System.ArgumentNullException"></exception>
public async Task OnPlaybackProgress(User user, BaseItem item, long? positionTicks, ClientType clientType, string deviceId, string deviceName) public async Task OnPlaybackProgress(User user, BaseItem item, long? positionTicks, string clientType, string deviceId, string deviceName)
{ {
if (user == null) if (user == null)
{ {
@ -614,7 +614,7 @@ namespace MediaBrowser.Server.Implementations.Library
/// <param name="deviceName">Name of the device.</param> /// <param name="deviceName">Name of the device.</param>
/// <returns>Task.</returns> /// <returns>Task.</returns>
/// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="System.ArgumentNullException"></exception>
public async Task OnPlaybackStopped(User user, BaseItem item, long? positionTicks, ClientType clientType, string deviceId, string deviceName) public async Task OnPlaybackStopped(User user, BaseItem item, long? positionTicks, string clientType, string deviceId, string deviceName)
{ {
if (user == null) if (user == null)
{ {

View File

@ -97,7 +97,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite
/// <param name="cancellationToken">The cancellation token.</param> /// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns> /// <returns>Task.</returns>
/// <exception cref="System.ArgumentNullException">item</exception> /// <exception cref="System.ArgumentNullException">item</exception>
public Task SaveDisplayPrefs(Folder item, CancellationToken cancellationToken) public Task SaveDisplayPreferences(Folder item, CancellationToken cancellationToken)
{ {
if (item == null) if (item == null)
{ {
@ -116,17 +116,17 @@ namespace MediaBrowser.Server.Implementations.Sqlite
var cmd = connection.CreateCommand(); var cmd = connection.CreateCommand();
cmd.CommandText = "delete from display_prefs where item_id = @guid"; cmd.CommandText = "delete from display_prefs where item_id = @guid";
cmd.AddParam("@guid", item.DisplayPrefsId); cmd.AddParam("@guid", item.DisplayPreferencesId);
QueueCommand(cmd); QueueCommand(cmd);
if (item.DisplayPrefs != null) if (item.DisplayPreferences != null)
{ {
foreach (var data in item.DisplayPrefs) foreach (var data in item.DisplayPreferences)
{ {
cmd = connection.CreateCommand(); cmd = connection.CreateCommand();
cmd.CommandText = "insert into display_prefs (item_id, user_id, data) values (@1, @2, @3)"; cmd.CommandText = "insert into display_prefs (item_id, user_id, data) values (@1, @2, @3)";
cmd.AddParam("@1", item.DisplayPrefsId); cmd.AddParam("@1", item.DisplayPreferencesId);
cmd.AddParam("@2", data.UserId); cmd.AddParam("@2", data.UserId);
cmd.AddParam("@3", _protobufSerializer.SerializeToBytes(data)); cmd.AddParam("@3", _protobufSerializer.SerializeToBytes(data));
@ -143,7 +143,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite
/// <param name="item">The item.</param> /// <param name="item">The item.</param>
/// <returns>IEnumerable{DisplayPreferences}.</returns> /// <returns>IEnumerable{DisplayPreferences}.</returns>
/// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="System.ArgumentNullException"></exception>
public IEnumerable<DisplayPreferences> RetrieveDisplayPrefs(Folder item) public IEnumerable<DisplayPreferences> RetrieveDisplayPreferences(Folder item)
{ {
if (item == null) if (item == null)
{ {
@ -153,7 +153,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite
var cmd = connection.CreateCommand(); var cmd = connection.CreateCommand();
cmd.CommandText = "select data from display_prefs where item_id = @guid"; cmd.CommandText = "select data from display_prefs where item_id = @guid";
var guidParam = cmd.Parameters.Add("@guid", DbType.Guid); var guidParam = cmd.Parameters.Add("@guid", DbType.Guid);
guidParam.Value = item.DisplayPrefsId; guidParam.Value = item.DisplayPreferencesId;
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult)) using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult))
{ {

View File

@ -89,7 +89,7 @@ namespace MediaBrowser.ServerApplication
var currentFolder = folder; var currentFolder = folder;
Task.Factory.StartNew(() => Task.Factory.StartNew(() =>
{ {
var prefs = ddlProfile.SelectedItem != null ? currentFolder.GetDisplayPrefs(ddlProfile.SelectedItem as User, false) ?? new DisplayPreferences {SortBy = ItemSortBy.SortName} : new DisplayPreferences {SortBy = ItemSortBy.SortName}; var prefs = ddlProfile.SelectedItem != null ? currentFolder.GetDisplayPreferences(ddlProfile.SelectedItem as User, false) ?? new DisplayPreferences {SortBy = ItemSortBy.SortName} : new DisplayPreferences {SortBy = ItemSortBy.SortName};
var node = new TreeViewItem { Tag = currentFolder }; var node = new TreeViewItem { Tag = currentFolder };
var subChildren = currentFolder.GetChildren(CurrentUser, prefs.IndexBy); var subChildren = currentFolder.GetChildren(CurrentUser, prefs.IndexBy);
@ -142,7 +142,7 @@ namespace MediaBrowser.ServerApplication
var subFolder = item as Folder; var subFolder = item as Folder;
if (subFolder != null) if (subFolder != null)
{ {
var prefs = subFolder.GetDisplayPrefs(user, false) ?? new DisplayPreferences {SortBy = LocalizedStrings.Instance.GetString("NameDispPref")}; var prefs = subFolder.GetDisplayPreferences(user, false) ?? new DisplayPreferences {SortBy = LocalizedStrings.Instance.GetString("NameDispPref")};
AddChildren(node, OrderBy(subFolder.GetChildren(user), user, prefs.SortBy), user); AddChildren(node, OrderBy(subFolder.GetChildren(user), user, prefs.SortBy), user);
node.Header = item.Name + " (" + node.Items.Count + ")"; node.Header = item.Name + " (" + node.Items.Count + ")";
} }
@ -196,7 +196,7 @@ namespace MediaBrowser.ServerApplication
ItemSortBy.Runtime ItemSortBy.Runtime
}; };
var prefs = folder.GetDisplayPrefs(ddlProfile.SelectedItem as User, false); var prefs = folder.GetDisplayPreferences(ddlProfile.SelectedItem as User, false);
ddlIndexBy.SelectedItem = prefs != null ddlIndexBy.SelectedItem = prefs != null
? prefs.IndexBy ?? LocalizedStrings.Instance.GetString("NoneDispPref") ? prefs.IndexBy ?? LocalizedStrings.Instance.GetString("NoneDispPref")
: LocalizedStrings.Instance.GetString("NoneDispPref"); : LocalizedStrings.Instance.GetString("NoneDispPref");
@ -354,7 +354,7 @@ namespace MediaBrowser.ServerApplication
var folder = treeItem != null var folder = treeItem != null
? treeItem.Tag as Folder ? treeItem.Tag as Folder
: null; : null;
var prefs = folder != null ? folder.GetDisplayPrefs(CurrentUser, true) : new DisplayPreferences {SortBy = ItemSortBy.SortName}; var prefs = folder != null ? folder.GetDisplayPreferences(CurrentUser, true) : new DisplayPreferences {SortBy = ItemSortBy.SortName};
if (folder != null && prefs.IndexBy != ddlIndexBy.SelectedItem as string) if (folder != null && prefs.IndexBy != ddlIndexBy.SelectedItem as string)
{ {
//grab UI context so we can update within the below task //grab UI context so we can update within the below task
@ -395,7 +395,7 @@ namespace MediaBrowser.ServerApplication
var folder = treeItem != null var folder = treeItem != null
? treeItem.Tag as Folder ? treeItem.Tag as Folder
: null; : null;
var prefs = folder != null ? folder.GetDisplayPrefs(CurrentUser, true) : new DisplayPreferences(); var prefs = folder != null ? folder.GetDisplayPreferences(CurrentUser, true) : new DisplayPreferences();
if (folder != null && prefs.SortBy != ddlSortBy.SelectedItem as string) if (folder != null && prefs.SortBy != ddlSortBy.SelectedItem as string)
{ {
//grab UI context so we can update within the below task //grab UI context so we can update within the below task

View File

@ -114,36 +114,36 @@
getClientType: function (connection) { getClientType: function (connection) {
if (connection.ClientType == "Dashboard") { if (connection.Client.toLowerCase() == "dashboard") {
return "<img src='css/images/clients/html5.png' alt='Dashboard' title='Dashboard' />"; return "<img src='css/images/clients/html5.png' alt='Dashboard' title='Dashboard' />";
} }
if (connection.ClientType == "Pc") { if (connection.Client.toLowerCase() == "mediabrowsertheater") {
return "<img src='css/images/clients/mb.png' alt='Media Browser' title='Media Browser' />"; return "<img src='css/images/clients/mb.png' alt='Media Browser Theater' title='Media Browser Theater' />";
} }
if (connection.ClientType == "Android") { if (connection.Client.toLowerCase() == "android") {
return "<img src='css/images/clients/android.png' alt='Android' title='Android' />"; return "<img src='css/images/clients/android.png' alt='Android' title='Android' />";
} }
if (connection.ClientType == "Ios") { if (connection.Client.toLowerCase() == "ios") {
return "<img src='css/images/clients/ios.png' alt='iOS' title='iOS' />"; return "<img src='css/images/clients/ios.png' alt='iOS' title='iOS' />";
} }
if (connection.ClientType == "WindowsRT") { if (connection.Client.toLowerCase() == "windowsrt") {
return "<img src='css/images/clients/windowsrt.png' alt='Windows RT' title='Windows RT' />"; return "<img src='css/images/clients/windowsrt.png' alt='Windows RT' title='Windows RT' />";
} }
if (connection.ClientType == "WindowsPhone") { if (connection.Client.toLowerCase() == "windowsphone") {
return "<img src='css/images/clients/windowsphone.png' alt='Windows Phone' title='Windows Phone' />"; return "<img src='css/images/clients/windowsphone.png' alt='Windows Phone' title='Windows Phone' />";
} }
if (connection.ClientType == "Dlna") { if (connection.Client.toLowerCase() == "dlna") {
return "<img src='css/images/clients/dlna.png' alt='Dlna' title='Dlna' />"; return "<img src='css/images/clients/dlna.png' alt='Dlna' title='Dlna' />";
} }
return connection.ClientType; return connection.Client;
}, },
getNowPlayingImage: function (item) { getNowPlayingImage: function (item) {

View File

@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata> <metadata>
<id>MediaBrowser.Common.Internal</id> <id>MediaBrowser.Common.Internal</id>
<version>3.0.49</version> <version>3.0.51</version>
<title>MediaBrowser.Common.Internal</title> <title>MediaBrowser.Common.Internal</title>
<authors>Luke</authors> <authors>Luke</authors>
<owners>ebr,Luke,scottisafool</owners> <owners>ebr,Luke,scottisafool</owners>
@ -12,7 +12,7 @@
<description>Contains common components shared by Media Browser Theatre and Media Browser Server. Not intended for plugin developer consumption.</description> <description>Contains common components shared by Media Browser Theatre and Media Browser Server. Not intended for plugin developer consumption.</description>
<copyright>Copyright © Media Browser 2013</copyright> <copyright>Copyright © Media Browser 2013</copyright>
<dependencies> <dependencies>
<dependency id="MediaBrowser.Common" version="3.0.49" /> <dependency id="MediaBrowser.Common" version="3.0.51" />
<dependency id="NLog" version="2.0.0.2000" /> <dependency id="NLog" version="2.0.0.2000" />
<dependency id="ServiceStack.Text" version="3.9.38" /> <dependency id="ServiceStack.Text" version="3.9.38" />
<dependency id="protobuf-net" version="2.0.0.621" /> <dependency id="protobuf-net" version="2.0.0.621" />

View File

@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata> <metadata>
<id>MediaBrowser.Common</id> <id>MediaBrowser.Common</id>
<version>3.0.49</version> <version>3.0.51</version>
<title>MediaBrowser.Common</title> <title>MediaBrowser.Common</title>
<authors>Media Browser Team</authors> <authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners> <owners>ebr,Luke,scottisafool</owners>

View File

@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata> <metadata>
<id>MediaBrowser.Server.Core</id> <id>MediaBrowser.Server.Core</id>
<version>3.0.49</version> <version>3.0.51</version>
<title>Media Browser.Server.Core</title> <title>Media Browser.Server.Core</title>
<authors>Media Browser Team</authors> <authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners> <owners>ebr,Luke,scottisafool</owners>
@ -12,7 +12,7 @@
<description>Contains core components required to build plugins for Media Browser Server.</description> <description>Contains core components required to build plugins for Media Browser Server.</description>
<copyright>Copyright © Media Browser 2013</copyright> <copyright>Copyright © Media Browser 2013</copyright>
<dependencies> <dependencies>
<dependency id="MediaBrowser.Common" version="3.0.49" /> <dependency id="MediaBrowser.Common" version="3.0.51" />
</dependencies> </dependencies>
</metadata> </metadata>
<files> <files>