Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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();
        }
Esempio n. 4
0
        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();
        }
Esempio n. 5
0
 protected Task LoadThumbnailsAsync()
 {
     return(GroupedStorageItems.WhenAllAsync(g => g.Items.WhenAllAsync(i => i.LoadThumbnailAsync())));
 }