public override async Task LoadRemainingContents(RemainingContentsHolder holder) { var loader = new DummyContentsLoader(); loader.PartLoaded += RemoteContentsLoader_PartLoaded; try { await loader.LoadRemainingAsync(holder, ContentsSet.Images, Canceller).ConfigureAwait(false); } finally { loader.PartLoaded -= RemoteContentsLoader_PartLoaded; } }
private async Task <IList <Container> > BrowseChild(string containerName, string containerId, CancellationTokenSource cancel, int loadedForLayer) { var res = await UpnpDevice.Services[URN.ContentDirectory].Control(new BrowseRequest { ObjectID = containerId, BrowseFlag = BrowseFlag.BrowseDirectChildren, StartingIndex = loadedForLayer, RequestedCount = sum > MAX_AUTO_LOAD_THUMBNAILS ? 1 : CONTENT_LOOP_STEP, }).ConfigureAwait(false); if (cancel != null && cancel.IsCancellationRequested) { OnCancelled(); return(null); } var contents = res as RetrievedContents; OnPartLoaded(Translate(containerName, contents.Result.Items)); loadedForLayer += contents.NumberReturned; sum += contents.Result.Items.Count; var containers = new List <Container>(contents.Result.Containers); var diff = sum - MAX_AUTO_LOAD_THUMBNAILS; if (sum > MAX_AUTO_LOAD_THUMBNAILS) { var remainingNum = contents.TotalMatches - loadedForLayer; if (remainingNum != 0) { var remaining = new RemainingContentsHolder(containerId, FormatDateTitle(containerName), UpnpDevice.UDN, loadedForLayer, remainingNum); var list = new List <Thumbnail>(); list.Add(remaining); OnPartLoaded(list); } return(containers); } if (contents.TotalMatches > loadedForLayer) { var nextContainers = await BrowseChild(containerName, containerId, cancel, loadedForLayer).ConfigureAwait(false); containers.AddRange(nextContainers); } return(containers); }
private async Task <int> GetContentsOfDaySeparatelyAsync(DateInfo date, ContentsSet contentsSet, CancellationTokenSource cancel, int sum) { DebugUtil.Log("Loading: " + date.Title); var count = await AvContentApi.GetContentCountAsync(new CountingTarget { Grouping = ContentGroupingMode.Date, Uri = date.Uri, Types = ContentsSetToTypes(contentsSet), }).ConfigureAwait(false); DebugUtil.Log(count.NumOfContents + " contents exist."); var loops = count.NumOfContents / CONTENT_LOOP_STEP + (count.NumOfContents % CONTENT_LOOP_STEP == 0 ? 0 : 1); var loaded = 0; for (var i = 0; i < loops; i++) { if (loaded + sum > MAX_AUTO_LOAD_THUMBNAILS) { break; } var contents = await GetContentsOfDayAsync(date, i *CONTENT_LOOP_STEP, CONTENT_LOOP_STEP, contentsSet).ConfigureAwait(false); if (cancel != null && cancel.IsCancellationRequested) { DebugUtil.Log("Loading task cancelled"); OnCancelled(); break; } loaded += contents.Count; DebugUtil.Log(contents.Count + " contents fetched"); OnPartLoaded(contents.Select(content => new Thumbnail(content, Udn)).ToList()); } if (loaded < count.NumOfContents) { var remaining = new RemainingContentsHolder(date, Udn, loaded, count.NumOfContents - loaded); var list = new List <Thumbnail>(); list.Add(remaining); OnPartLoaded(list); } return(loaded); }
public override async Task LoadRemainingAsync(RemainingContentsHolder holder, ContentsSet contentsSet, CancellationTokenSource cancel) { var list = new List <Thumbnail>(); var contents = RandomContentList(holder.RemainingCount, true); await Task.Delay(200).ConfigureAwait(false); foreach (var content in contents) { content.GroupName = holder.AlbumGroup.Title; Kazyx.Uwpmm.Utility.DebugUtil.Log("Add content for " + content.GroupName); list.Add(new Thumbnail(content, CurrentUuid)); } OnPartLoaded(list); }
public override async Task LoadRemainingContents(RemainingContentsHolder holder) { var loader = new RemoteApiContentsLoader(TargetDevice); loader.PartLoaded += RemoteContentsLoader_PartLoaded; try { await loader.LoadRemainingAsync(holder, ApplicationSettings.GetInstance().RemoteContentsSet, Canceller); } catch (Exception e) { DebugUtil.Log(() => e.StackTrace); OnErrorMessage("Viewer_FailedToLoadContents"); } finally { loader.PartLoaded -= RemoteContentsLoader_PartLoaded; } }
public override async Task Load(ContentsSet contentsSet, CancellationTokenSource cancel) { await Task.Delay(500).ConfigureAwait(false); var loaded = 0; foreach (var date in RandomDateList(10)) { await Task.Delay(200).ConfigureAwait(false); if (cancel != null && cancel.IsCancellationRequested) { OnCancelled(); break; } var list = new List <Thumbnail>(); var contents = RandomContentList(30); if (MAX_AUTO_LOAD_THUMBNAILS < loaded) { var remaining = new RemainingContentsHolder(date, CurrentUuid, 0, contents.Count); var tmplist = new List <Thumbnail>(); tmplist.Add(remaining); OnPartLoaded(tmplist); continue; } foreach (var content in contents) { content.GroupName = date.Title; var thumb = new Thumbnail(content, CurrentUuid); thumb.IsPlayable = !thumb.IsMovie; list.Add(thumb); } OnPartLoaded(list); loaded += list.Count; } OnCompleted(); }
public override async Task LoadRemainingAsync(RemainingContentsHolder holder, ContentsSet contentsSet, CancellationTokenSource cancel) { var loops = holder.RemainingCount / CONTENT_LOOP_STEP + (holder.RemainingCount % CONTENT_LOOP_STEP == 0 ? 0 : 1); for (var i = 0; i < loops; i++) { var contents = await GetContentsOfDayAsync(holder.AlbumGroup, i *CONTENT_LOOP_STEP, CONTENT_LOOP_STEP, contentsSet).ConfigureAwait(false); if (cancel != null && cancel.IsCancellationRequested) { DebugUtil.Log("Loading task cancelled"); OnCancelled(); break; } DebugUtil.Log(contents.Count + " contents fetched"); OnPartLoaded(contents.Select(content => new Thumbnail(content, Udn)).ToList()); } }
public override async Task LoadRemainingAsync(RemainingContentsHolder holder, ContentsSet contentsSet, CancellationTokenSource cancel) { await BrowseRemainingChild(holder.GroupTitle, holder.CdsContainerId, cancel, holder.StartsFrom, holder.RemainingCount); }
public abstract Task LoadRemainingAsync(RemainingContentsHolder holder, ContentsSet contentsSet, CancellationTokenSource cancel);
public abstract Task LoadRemainingContents(RemainingContentsHolder holder);
public override Task LoadRemainingContents(RemainingContentsHolder holder) { throw new NotImplementedException(); }
public override Task LoadRemainingAsync(RemainingContentsHolder holder, ContentsSet contentsSet, CancellationTokenSource cancel) { throw new NotImplementedException(); }