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(); } }
public VideoDataSource(VideoCollectionView controller) { // Initialize this.ViewController = controller; PopulateVideos(); }