// 分组文件夹
        private async void btnFolderGroup_Click(object sender, RoutedEventArgs e)
        {
            lblMsg.Text = "";

            StorageFolder picturesFolder = await KnownFolders.GetFolderForUserAsync(null, KnownFolderId.PicturesLibrary);

            // 文件夹按月分组查询参数,其他多种分组方式请参见 CommonFolderQuery 枚举
            CommonFolderQuery folderQuery = CommonFolderQuery.GroupByMonth;

            // 判断一下 picturesFolder 是否支持指定的查询参数
            if (picturesFolder.IsCommonFolderQuerySupported(folderQuery))
            {
                // 创建查询
                StorageFolderQueryResult queryResult = picturesFolder.CreateFolderQuery(folderQuery);

                // 执行查询
                IReadOnlyList <StorageFolder> folderList = await queryResult.GetFoldersAsync();

                foreach (StorageFolder storageFolder in folderList) // 这里的 storageFolder 就是按月份分组后的月份文件夹(当然,物理上并没有月份文件夹)
                {
                    IReadOnlyList <StorageFile> fileList = await storageFolder.GetFilesAsync();

                    lblMsg.Text += storageFolder.Name + " (" + fileList.Count + ")";
                    lblMsg.Text += Environment.NewLine;
                    foreach (StorageFile file in fileList) // 月份文件夹内的文件
                    {
                        lblMsg.Text += "    " + file.Name;
                        lblMsg.Text += Environment.NewLine;
                    }
                }
            }
        }
Exemple #2
0
 public override bool IsCommonFolderQuerySupported(CommonFolderQuery query) => false;
Exemple #3
0
 public override IAsyncOperation <IReadOnlyList <BaseStorageFolder> > GetFoldersAsync(CommonFolderQuery query)
 {
     return(AsyncInfo.Run <IReadOnlyList <BaseStorageFolder> >(async(cancellationToken) =>
     {
         return await GetFoldersAsync();
     }));
 }
Exemple #4
0
 public override IAsyncOperation <IReadOnlyList <BaseStorageFolder> > GetFoldersAsync(CommonFolderQuery query, uint startIndex, uint maxItemsToRetrieve)
 {
     return(AsyncInfo.Run <IReadOnlyList <BaseStorageFolder> >(async(cancellationToken) =>
     {
         var items = await GetFoldersAsync();
         return items.Skip((int)startIndex).Take((int)maxItemsToRetrieve).ToList();
     }));
 }
Exemple #5
0
 public override StorageFolderQueryResult CreateFolderQuery(CommonFolderQuery query) => throw new NotSupportedException();
Exemple #6
0
        private async void GetThumbnailButton_Click(object sender, RoutedEventArgs e)
        {
            rootPage.ResetOutput(ThumbnailImage, OutputTextBlock, OutputDetails);

            // Pick a folder
            FolderPicker folderPicker = new FolderPicker();

            foreach (string extension in FileExtensions.Image)
            {
                folderPicker.FileTypeFilter.Add(extension);
            }

            StorageFolder folder = await folderPicker.PickSingleFolderAsync();

            if (folder != null)
            {
                const CommonFolderQuery monthShape = CommonFolderQuery.GroupByMonth;
                // Verify queries are supported because they are not supported in all picked locations.
                if (folder.IsCommonFolderQuerySupported(monthShape))
                {
                    // Convert folder to file group and query for items
                    IReadOnlyList <StorageFolder> months = await folder.CreateFolderQuery(monthShape).GetFoldersAsync();

                    if (months != null && months.Count > 0)
                    {
                        const ThumbnailMode thumbnailMode = ThumbnailMode.PicturesView;
                        const uint          size          = 200;
                        StorageFolder       firstMonth    = months[0];
                        using (StorageItemThumbnail thumbnail = await firstMonth.GetThumbnailAsync(thumbnailMode, size))
                        {
                            if (thumbnail != null)
                            {
                                MainPage.DisplayResult(ThumbnailImage, OutputTextBlock, thumbnailMode.ToString(), size, firstMonth, thumbnail, true);

                                // Also display the hierarchy of the file group to better visualize where the thumbnail comes from
                                IReadOnlyList <StorageFile> files = await firstMonth.GetFilesAsync();

                                if (files != null)
                                {
                                    StringBuilder output = new StringBuilder("\nList of files in this group:\n\n");
                                    foreach (StorageFile file in files)
                                    {
                                        output.AppendFormat("{0}\n", file.Name);
                                    }
                                    OutputDetails.Text = output.ToString();
                                }
                            }
                            else
                            {
                                rootPage.NotifyUser(Errors.NoImages, NotifyType.StatusMessage);
                            }
                        }
                    }
                    else
                    {
                        rootPage.NotifyUser(Errors.FileGroupEmpty, NotifyType.StatusMessage);
                    }
                }
                else
                {
                    rootPage.NotifyUser(Errors.FileGroupLocation, NotifyType.StatusMessage);
                }
            }
            else
            {
                rootPage.NotifyUser(Errors.Cancel, NotifyType.StatusMessage);
            }
        }
Exemple #7
0
 IAsyncOperation <IReadOnlyList <StorageFolder> > IStorageFolderQueryOperations.GetFoldersAsync(CommonFolderQuery query)
 {
     return(AsyncInfo.Run <IReadOnlyList <StorageFolder> >(async(cancellationToken) =>
     {
         return await Task.WhenAll((await GetFoldersAsync(query)).Select(x => x.ToStorageFolderAsync().AsTask()));
     }));
 }
Exemple #8
0
 IAsyncOperation <IReadOnlyList <StorageFolder> > IStorageFolderQueryOperations.GetFoldersAsync(CommonFolderQuery query, uint startIndex, uint maxItemsToRetrieve)
 {
     return(AsyncInfo.Run <IReadOnlyList <StorageFolder> >(async(cancellationToken) =>
     {
         return await Task.WhenAll((await GetFoldersAsync(query, startIndex, maxItemsToRetrieve)).Select(x => x.ToStorageFolderAsync().AsTask()));
     }));
 }
Exemple #9
0
 public abstract bool IsCommonFolderQuerySupported(CommonFolderQuery query);
Exemple #10
0
 public abstract IAsyncOperation <IReadOnlyList <BaseStorageFolder> > GetFoldersAsync(CommonFolderQuery query);
Exemple #11
0
 public abstract IAsyncOperation <IReadOnlyList <BaseStorageFolder> > GetFoldersAsync(CommonFolderQuery query, uint startIndex, uint maxItemsToRetrieve);
Exemple #12
0
 public abstract StorageFolderQueryResult CreateFolderQuery(CommonFolderQuery query);
Exemple #13
0
 public override bool IsCommonFolderQuerySupported(CommonFolderQuery query)
 {
     return(Folder.IsCommonFolderQuerySupported(query));
 }
Exemple #14
0
 public override IAsyncOperation <IReadOnlyList <BaseStorageFolder> > GetFoldersAsync(CommonFolderQuery query)
 {
     return(AsyncInfo.Run <IReadOnlyList <BaseStorageFolder> >(async(cancellationToken) =>
     {
         var items = await Folder.GetFoldersAsync(query);
         return items.Select(x => new SystemStorageFolder(x)).ToList();
     }));
 }
Exemple #15
0
 public override StorageFolderQueryResult CreateFolderQuery(CommonFolderQuery query)
 {
     return(Folder.CreateFolderQuery(query));
 }