public async Task InitializeAsync()
        {
            var settingsLoader = new SettingsLoader();

            VideosPerPage = int.Parse((await settingsLoader.GetSettingAsync(Setting.MAXVIDEOSPERPAGE))?.Value ?? "50");
            ThumpnailSize = int.Parse((await settingsLoader.GetSettingAsync(Setting.THUMPNAILSIZE))?.Value ?? "320");

            var videos = await _VideoProvider.GetVideos();

            videos = videos.OrderBy(x => x.Artist.Name).ThenBy(x => x.Name).ToList();
            foreach (var video in videos)
            {
                var vidVM = new VideoViewModel(video);
                Videos.Add(vidVM);
            }

            FilteredVideos = Videos.ToList();

            // Add all videos to CurrentPageVideos, page filtering is done via SourceCollectionView.Filter
            foreach (var video in Videos)
            {
                CurrentPageVideos.Add(video);
            }

            VideoCollectionView.MoveCurrentToFirst();

            MaxPage = Videos.Count / VideosPerPage;

            GroupAfterArtist(null);

            foreach (var video in Videos)
            {
                video.ThumbailBitmap = await video.GetThumbnailBitmap().ConfigureAwait(false);
            }
        }
        private void SetCurrentPage()
        {
            // Depends on beeing sorted
            var page = FilteredVideos.Skip(VideosPerPage * CurrentPage).Take(VideosPerPage);

            foreach (var video in page.Where(x => !CurrentPageVideos.Contains(x)).ToArray())
            {
                CurrentPageVideos.Add(video);
            }

            VideoCollectionView.Filter = x => page.Contains(x);

            if (!CurrentPageVideos.Contains(SelectedVideo))
            {
                VideoCollectionView.MoveCurrentToFirst();
                RequestScrollToFirstItem?.Invoke(this, null);
            }

            MaxPage = FilteredVideos.Count / VideosPerPage;

            if (CurrentPage > MaxPage)
            {
                CurrentPage = MaxPage;
            }
        }
        private void NextVideo(object obj)
        {
            if (obj is int tabIndex && tabIndex != 0)
            {
                return;
            }

            VideoCollectionView.MoveCurrentToNext();

            if (VideoCollectionView.IsCurrentAfterLast)
            {
                VideoCollectionView.MoveCurrentToFirst();
            }
        }
        private void PreviousVideo(object obj)
        {
            if (obj is int tabIndex && tabIndex != 0)
            {
                return;
            }

            VideoCollectionView.MoveCurrentToPrevious();

            if (VideoCollectionView.IsCurrentBeforeFirst)
            {
                VideoCollectionView.MoveCurrentToLast();
            }
        }
Пример #5
0
 public VideoDataSource(VideoCollectionView controller)
 {
     // Initialize
     this.ViewController = controller;
     PopulateVideos();
 }