コード例 #1
0
        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;
            }
        }
コード例 #2
0
ファイル: DlnaContentsLoader.cs プロジェクト: locana/uwpmm
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
ファイル: DummyContentsLoader.cs プロジェクト: locana/uwpmm
        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);
        }
コード例 #5
0
        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;
            }
        }
コード例 #6
0
        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();
        }
コード例 #7
0
        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());
            }
        }
コード例 #8
0
ファイル: DlnaContentsLoader.cs プロジェクト: locana/uwpmm
 public override async Task LoadRemainingAsync(RemainingContentsHolder holder, ContentsSet contentsSet, CancellationTokenSource cancel)
 {
     await BrowseRemainingChild(holder.GroupTitle, holder.CdsContainerId, cancel, holder.StartsFrom, holder.RemainingCount);
 }
コード例 #9
0
ファイル: ContentsLoader.cs プロジェクト: locana/uwpmm
 public abstract Task LoadRemainingAsync(RemainingContentsHolder holder, ContentsSet contentsSet, CancellationTokenSource cancel);
コード例 #10
0
 public abstract Task LoadRemainingContents(RemainingContentsHolder holder);
コード例 #11
0
 public override Task LoadRemainingContents(RemainingContentsHolder holder)
 {
     throw new NotImplementedException();
 }
コード例 #12
0
 public override Task LoadRemainingAsync(RemainingContentsHolder holder, ContentsSet contentsSet, CancellationTokenSource cancel)
 {
     throw new NotImplementedException();
 }