protected override async void OnInitialize() { base.OnInitialize(); var localFolders = new[] { KnownFolders.MusicLibrary, KnownFolders.PicturesLibrary, KnownFolders.VideosLibrary }; var serverFolders = await KnownFolders.MediaServerDevices.GetFoldersAsync(); var queryOptions = new QueryOptions { FolderDepth = FolderDepth.Deep, UserSearchFilter = Query }; queryOptions.SetThumbnailPrefetch(ThumbnailMode.ListView, 150, ThumbnailOptions.UseCurrentScale); foreach (var folder in localFolders.Concat(serverFolders)) { var itemQuery = folder.CreateItemQueryWithOptions(queryOptions); var items = await itemQuery.GetItemsAsync(); if (items.Count == 0) { continue; } var itemViewModels = items.Select <IStorageItem, StorageItemViewModel>(i => { if (i.IsOfType(StorageItemTypes.Folder)) { return(new StorageFolderViewModel((StorageFolder)i)); } if (i.IsOfType(StorageItemTypes.File)) { return(new StorageFileViewModel((StorageFile)i)); } return(null); }).Where(v => v != null); GroupedStorageItems.Add(new StorageItemGroupViewModel(folder.DisplayName, itemViewModels)); } await LoadThumbnailsAsync(); }
public async void OnSelectedSortOptionChanged() { // We want to supress the reload during the first setup if (GroupedStorageItems.Count == 0) { return; } settingsService.Sort = SelectedSortOption.Sort; GroupedStorageItems.Clear(); await BindFilesAndFoldersAsync(); }
private async Task BindPlayHistoryAsync() { using (Loading()) { var history = playHistoryService.GetPlayHistory(); var groups = await history .SelectMany(k => k.Value) .GroupBy(i => i.PlayedOn.Date) .SelectAsync(async g => new StorageItemGroupViewModel(g.Key.ToString("D"), await g.SelectAsync(async f => new StorageFileViewModel( await StorageApplicationPermissions.FutureAccessList.GetFileAsync(f.Token))))); GroupedStorageItems.AddRange(groups); } await LoadThumbnailsAsync(); }
private async Task BindFilesAndFoldersAsync() { using (Loading()) { SelectedSortOption = SortOptions.Single(s => s.Sort == settingsService.Sort); var folders = await Parameter.GetFoldersAsync(); var files = await Parameter.GetFilesAsync(); var folderViewModels = folders.Select(f => new StorageFolderViewModel(f)).ToList(); var fileViewModels = files.Select(f => new StorageFileViewModel(f)).ToList(); var itemViewModels = folderViewModels.Concat <StorageItemViewModel>(fileViewModels); var groups = GroupItems(itemViewModels); GroupedStorageItems.AddRange(groups); } await LoadThumbnailsAsync(); }
protected Task LoadThumbnailsAsync() { return(GroupedStorageItems.WhenAllAsync(g => g.Items.WhenAllAsync(i => i.LoadThumbnailAsync()))); }