add new sync methods

This commit is contained in:
Luke Pulverenti
2014-12-15 00:16:23 -05:00
parent ed31b883f4
commit e92e036574
21 changed files with 169 additions and 59 deletions

View File

@@ -1380,11 +1380,11 @@ namespace MediaBrowser.Model.ApiClient
Task UpdateItem(BaseItemDto item);
/// <summary>
/// Requests the synchronize.
/// Creates the synchronize job.
/// </summary>
/// <param name="request">The request.</param>
/// <returns>Task&lt;SyncJob&gt;.</returns>
Task<SyncJob> RequestSync(SyncJobRequest request);
Task<SyncJob> CreateSyncJob(SyncJobRequest request);
/// <summary>
/// Opens the web socket.

View File

@@ -887,7 +887,7 @@ namespace MediaBrowser.Model.Dto
[IgnoreDataMember]
public bool IsVideo
{
get { return StringHelper.EqualsIgnoreCase(MediaType, MediaBrowser.Model.Entities.MediaType.Video); }
get { return StringHelper.EqualsIgnoreCase(MediaType, Entities.MediaType.Video); }
}
/// <summary>
@@ -897,7 +897,7 @@ namespace MediaBrowser.Model.Dto
[IgnoreDataMember]
public bool IsAudio
{
get { return StringHelper.EqualsIgnoreCase(MediaType, MediaBrowser.Model.Entities.MediaType.Audio); }
get { return StringHelper.EqualsIgnoreCase(MediaType, Entities.MediaType.Audio); }
}
/// <summary>
@@ -907,7 +907,7 @@ namespace MediaBrowser.Model.Dto
[IgnoreDataMember]
public bool IsGame
{
get { return StringHelper.EqualsIgnoreCase(MediaType, MediaBrowser.Model.Entities.MediaType.Game); }
get { return StringHelper.EqualsIgnoreCase(MediaType, Entities.MediaType.Game); }
}
/// <summary>
@@ -951,7 +951,13 @@ namespace MediaBrowser.Model.Dto
[IgnoreDataMember]
public bool IsArtist
{
get { return StringHelper.EqualsIgnoreCase(Type, "Artist"); }
get { return StringHelper.EqualsIgnoreCase(Type, "MusicArtist"); }
}
[IgnoreDataMember]
public bool IsAlbum
{
get { return StringHelper.EqualsIgnoreCase(Type, "MusicAlbum"); }
}
[IgnoreDataMember]

View File

@@ -362,6 +362,7 @@
<Compile Include="Session\TranscodingInfo.cs" />
<Compile Include="Session\UserDataChangeInfo.cs" />
<Compile Include="Devices\ContentUploadHistory.cs" />
<Compile Include="Sync\SyncHelper.cs" />
<Compile Include="Sync\SyncJob.cs" />
<Compile Include="Sync\SyncJobCreationResult.cs" />
<Compile Include="Sync\SyncJobItem.cs" />
@@ -370,6 +371,7 @@
<Compile Include="Sync\SyncJobQuery.cs" />
<Compile Include="Sync\SyncJobRequest.cs" />
<Compile Include="Sync\SyncJobStatus.cs" />
<Compile Include="Sync\SyncOptions.cs" />
<Compile Include="Sync\SyncQuality.cs" />
<Compile Include="Sync\SyncTarget.cs" />
<Compile Include="System\LogFile.cs" />

View File

@@ -0,0 +1,51 @@
using MediaBrowser.Model.Dto;
using System.Collections.Generic;
namespace MediaBrowser.Model.Sync
{
public static class SyncHelper
{
public static List<SyncOptions> GetSyncOptions(List<BaseItemDto> items)
{
List<SyncOptions> options = new List<SyncOptions>();
if (items.Count > 1)
{
options.Add(SyncOptions.Name);
}
foreach (BaseItemDto item in items)
{
if (item.SupportsSync ?? false)
{
if (item.IsVideo)
{
options.Add(SyncOptions.Quality);
options.Add(SyncOptions.UnwatchedOnly);
break;
}
if (item.IsFolder && !item.IsMusicGenre && !item.IsArtist && !item.IsType("musicalbum") && !item.IsGameGenre)
{
options.Add(SyncOptions.Quality);
options.Add(SyncOptions.UnwatchedOnly);
break;
}
}
}
foreach (BaseItemDto item in items)
{
if (item.SupportsSync ?? false)
{
if (item.IsFolder || item.IsGameGenre || item.IsMusicGenre || item.IsGenre || item.IsArtist || item.IsStudio || item.IsPerson)
{
options.Add(SyncOptions.SyncNewContent);
break;
}
}
}
return options;
}
}
}

View File

@@ -46,11 +46,6 @@ namespace MediaBrowser.Model.Sync
/// <value><c>true</c> if [unwatched only]; otherwise, <c>false</c>.</value>
public bool UnwatchedOnly { get; set; }
/// <summary>
/// Gets or sets a value indicating whether [remove when watched].
/// </summary>
/// <value><c>true</c> if [remove when watched]; otherwise, <c>false</c>.</value>
public bool RemoveWhenWatched { get; set; }
/// <summary>
/// Gets or sets a value indicating whether [synchronize new content].
/// </summary>
/// <value><c>true</c> if [synchronize new content]; otherwise, <c>false</c>.</value>

View File

@@ -35,11 +35,6 @@ namespace MediaBrowser.Model.Sync
/// <value><c>true</c> if [unwatched only]; otherwise, <c>false</c>.</value>
public bool UnwatchedOnly { get; set; }
/// <summary>
/// Gets or sets a value indicating whether [remove when watched].
/// </summary>
/// <value><c>true</c> if [remove when watched]; otherwise, <c>false</c>.</value>
public bool RemoveWhenWatched { get; set; }
/// <summary>
/// Gets or sets a value indicating whether [synchronize new content].
/// </summary>
/// <value><c>true</c> if [synchronize new content]; otherwise, <c>false</c>.</value>

View File

@@ -0,0 +1,11 @@

namespace MediaBrowser.Model.Sync
{
public enum SyncOptions
{
Name = 0,
Quality = 1,
UnwatchedOnly = 2,
SyncNewContent
}
}