Ejemplo n.º 1
0
        public static List<SyncOptions> GetSyncOptions(SyncCategory category)
        {
            List<SyncOptions> options = new List<SyncOptions>();

            options.Add(SyncOptions.Quality);
            options.Add(SyncOptions.UnwatchedOnly);
            options.Add(SyncOptions.SyncNewContent);
            options.Add(SyncOptions.ItemLimit);

            return options;
        }
        private async Task <IEnumerable <BaseItem> > GetItemsForSync(SyncCategory category, string parentId, User user)
        {
            var parent = string.IsNullOrWhiteSpace(parentId)
                ? user.RootFolder
                : (Folder)_libraryManager.GetItemById(parentId);

            InternalItemsQuery query;

            switch (category)
            {
            case SyncCategory.Latest:
                query = new InternalItemsQuery
                {
                    IsFolder  = false,
                    SortBy    = new[] { ItemSortBy.DateCreated, ItemSortBy.SortName },
                    SortOrder = SortOrder.Descending,
                    Recursive = true
                };
                break;

            case SyncCategory.Resume:
                query = new InternalItemsQuery
                {
                    IsFolder    = false,
                    SortBy      = new[] { ItemSortBy.DatePlayed, ItemSortBy.SortName },
                    SortOrder   = SortOrder.Descending,
                    Recursive   = true,
                    IsResumable = true,
                    MediaTypes  = new[] { MediaType.Video }
                };
                break;

            case SyncCategory.NextUp:
                return(_tvSeriesManager.GetNextUp(new NextUpQuery
                {
                    ParentId = parentId,
                    UserId = user.Id.ToString("N")
                }).Items);

            default:
                throw new ArgumentException("Unrecognized category: " + category);
            }

            if (parent == null)
            {
                return(new List <BaseItem>());
            }

            query.User = user;

            var result = await parent.GetItems(query).ConfigureAwait(false);

            return(result.Items);
        }
Ejemplo n.º 3
0
        public static List <SyncJobOption> GetSyncOptions(SyncCategory category)
        {
            List <SyncJobOption> options = new List <SyncJobOption>();

            options.Add(SyncJobOption.Quality);
            options.Add(SyncJobOption.Profile);
            options.Add(SyncJobOption.UnwatchedOnly);
            options.Add(SyncJobOption.SyncNewContent);
            options.Add(SyncJobOption.ItemLimit);

            return(options);
        }
Ejemplo n.º 4
0
        public static List <SyncOptions> GetSyncOptions(SyncCategory category)
        {
            List <SyncOptions> options = new List <SyncOptions>();

            options.Add(SyncOptions.Name);
            options.Add(SyncOptions.Quality);
            options.Add(SyncOptions.UnwatchedOnly);
            options.Add(SyncOptions.SyncNewContent);
            options.Add(SyncOptions.ItemLimit);

            return(options);
        }
Ejemplo n.º 5
0
        public static List<SyncJobOption> GetSyncOptions(SyncCategory category)
        {
            List<SyncJobOption> options = new List<SyncJobOption>();

            options.Add(SyncJobOption.Quality);
            options.Add(SyncJobOption.Profile);
            options.Add(SyncJobOption.UnwatchedOnly);
            options.Add(SyncJobOption.SyncNewContent);
            options.Add(SyncJobOption.ItemLimit);

            return options;
        }
Ejemplo n.º 6
0
 public DetailsBackedSchemaSyncGroup(
     SyncGroupList list,
     SyncRulesView view,
     SyncCategory type,
     bool inOverfill)
     : base(list, type)
 {
     this._view                   = view;
     this._index                  = -1;
     this._inOverfill             = inOverfill;
     this._resortTimer            = new Timer(this);
     this._resortTimer.AutoRepeat = false;
     this._resortTimer.Tick      += new EventHandler(this.OnResortTimerTick);
     this._resortTimer.Interval   = 527;
     this._masterList             = new System.Collections.Generic.List <SyncGroup>();
     this._sortedList             = new System.Collections.Generic.List <SyncGroup>();
     this._active                 = true;
 }
Ejemplo n.º 7
0
        public async Task<IEnumerable<BaseItem>> GetItemsForSync(SyncCategory? category, string parentId, IEnumerable<string> itemIds, User user, bool unwatchedOnly)
        {
            var items = category.HasValue ?
                await GetItemsForSync(category.Value, parentId, user).ConfigureAwait(false) :
                itemIds.SelectMany(i => GetItemsForSync(i, user))
                .Where(_syncManager.SupportsSync);

            if (unwatchedOnly)
            {
                // Avoid implicitly captured closure
                var currentUser = user;

                items = items.Where(i =>
                {
                    var video = i as Video;

                    if (video != null)
                    {
                        return !video.IsPlayed(currentUser);
                    }

                    return true;
                });
            }

            return items.DistinctBy(i => i.Id);
        }
Ejemplo n.º 8
0
 public void send_reportContacts(long syncOpRevision, SyncCategory category, List<ContactReport> contactReports, SyncActionType actionType)
 #endif
 {
   oprot_.WriteMessageBegin(new TMessage("reportContacts", TMessageType.Call, seqid_));
   reportContacts_args args = new reportContacts_args();
   args.SyncOpRevision = syncOpRevision;
   args.Category = category;
   args.ContactReports = contactReports;
   args.ActionType = actionType;
   args.Write(oprot_);
   oprot_.WriteMessageEnd();
   #if SILVERLIGHT
   return oprot_.Transport.BeginFlush(callback, state);
   #else
   oprot_.Transport.Flush();
   #endif
 }
Ejemplo n.º 9
0
 public IAsyncResult send_reportContacts(AsyncCallback callback, object state, long syncOpRevision, SyncCategory category, List<ContactReport> contactReports, SyncActionType actionType)
Ejemplo n.º 10
0
      public List<ContactReportResult> reportContacts(long syncOpRevision, SyncCategory category, List<ContactReport> contactReports, SyncActionType actionType)
      {
        #if !SILVERLIGHT
        send_reportContacts(syncOpRevision, category, contactReports, actionType);
        return recv_reportContacts();

        #else
        var asyncResult = Begin_reportContacts(null, null, syncOpRevision, category, contactReports, actionType);
        return End_reportContacts(asyncResult);

        #endif
      }
Ejemplo n.º 11
0
 public void send_report(long syncOpRevision, SyncCategory category, string report)
 #endif
 {
   oprot_.WriteMessageBegin(new TMessage("report", TMessageType.Call, seqid_));
   report_args args = new report_args();
   args.SyncOpRevision = syncOpRevision;
   args.Category = category;
   args.Report = report;
   args.Write(oprot_);
   oprot_.WriteMessageEnd();
   #if SILVERLIGHT
   return oprot_.Transport.BeginFlush(callback, state);
   #else
   oprot_.Transport.Flush();
   #endif
 }
Ejemplo n.º 12
0
 public IAsyncResult send_report(AsyncCallback callback, object state, long syncOpRevision, SyncCategory category, string report)
Ejemplo n.º 13
0
      public void report(long syncOpRevision, SyncCategory category, string report)
      {
        #if !SILVERLIGHT
        send_report(syncOpRevision, category, report);
        recv_report();

        #else
        var asyncResult = Begin_report(null, null, syncOpRevision, category, report);
        End_report(asyncResult);

        #endif
      }
Ejemplo n.º 14
0
 public IAsyncResult Begin_report(AsyncCallback callback, object state, long syncOpRevision, SyncCategory category, string report)
 {
   return send_report(callback, state, syncOpRevision, category, report);
 }
Ejemplo n.º 15
0
 public SchemaSyncGroup(SyncGroupList list, SyncCategory type)
     : base(list)
     => this._type = type;
Ejemplo n.º 16
0
        private async Task<IEnumerable<BaseItem>> GetItemsForSync(SyncCategory category, string parentId, User user)
        {
            var parent = string.IsNullOrWhiteSpace(parentId)
                ? user.RootFolder
                : (Folder)_libraryManager.GetItemById(parentId);

            InternalItemsQuery query;

            switch (category)
            {
                case SyncCategory.Latest:
                    query = new InternalItemsQuery
                    {
                        IsFolder = false,
                        SortBy = new[] { ItemSortBy.DateCreated, ItemSortBy.SortName },
                        SortOrder = SortOrder.Descending,
                        Recursive = true
                    };
                    break;
                case SyncCategory.Resume:
                    query = new InternalItemsQuery
                    {
                        IsFolder = false,
                        SortBy = new[] { ItemSortBy.DatePlayed, ItemSortBy.SortName },
                        SortOrder = SortOrder.Descending,
                        Recursive = true,
                        IsResumable = true,
                        MediaTypes = new[] { MediaType.Video }
                    };
                    break;

                case SyncCategory.NextUp:
                    return _tvSeriesManager.GetNextUp(new NextUpQuery
                    {
                        ParentId = parentId,
                        UserId = user.Id.ToString("N")
                    }).Items;

                default:
                    throw new ArgumentException("Unrecognized category: " + category);
            }

            query.User = user;

            var result = await parent.GetItems(query).ConfigureAwait(false);
            return result.Items;
        }
Ejemplo n.º 17
0
 public IAsyncResult Begin_reportContacts(AsyncCallback callback, object state, long syncOpRevision, SyncCategory category, List<ContactReport> contactReports, SyncActionType actionType)
 {
   return send_reportContacts(callback, state, syncOpRevision, category, contactReports, actionType);
 }
Ejemplo n.º 18
0
        public async Task<IEnumerable<BaseItem>> GetItemsForSync(SyncCategory? category, string parentId, IEnumerable<string> itemIds, User user, bool unwatchedOnly)
        {
            var list = new List<BaseItem>();

            if (category.HasValue)
            {
                list = (await GetItemsForSync(category.Value, parentId, user).ConfigureAwait(false)).ToList();
            }
            else
            {
                foreach (var itemId in itemIds)
                {
                    var subList = await GetItemsForSync(itemId, user).ConfigureAwait(false);
                    list.AddRange(subList);
                }
            }

            IEnumerable<BaseItem> items = list;
            items = items.Where(_syncManager.SupportsSync);

            if (unwatchedOnly)
            {
                // Avoid implicitly captured closure
                var currentUser = user;

                items = items.Where(i =>
                {
                    var video = i as Video;

                    if (video != null)
                    {
                        return !video.IsPlayed(currentUser);
                    }

                    return true;
                });
            }

            return items.DistinctBy(i => i.Id);
        }