Exemplo n.º 1
0
        /// <summary>
        /// 刷新照片列表
        /// </summary>
        /// <param name="imageFolderList"></param>
        /// <returns></returns>
        public async Task <ImageFolderList> RefreshAsync(ImageFolderList imageFolderList)
        {
            var folder = await _folderModelService.GetFolder(imageFolderList.FolderModel.AccessToken);

            // TODO 这里文件夹可能为空
            // 找到全部文件
            var files = await folder.GetFilesAsync();

            foreach (var file in files)
            {
                // 确认后缀名必须是图片
                if (file.FileType != ".jpg" && file.FileType != ".png" && file.FileType != ".jpeg")
                {
                    continue;
                }
                var accessToken = StorageApplicationPermissions.FutureAccessList.Add(file);
                var imageModel  = await _imageModelService.GetInstanceAsync(imageFolderList.FolderModel.KeyNo, file.Path, accessToken);

                if (imageFolderList.ImageModels.Contains(imageModel))
                {
                    continue;
                }
                imageFolderList.DatabaseHelper.ImageDatabase.Insert(imageModel.FolderKeyNo, imageModel.ImagePath, imageModel.AccessToken);
                imageFolderList.ImageModels.Add(imageModel);
            }

            var x = imageFolderList.GetHashCode();

            return(imageFolderList);
        }
        /// <summary>
        /// 添加新文件夹时的具体添加操作
        /// 在这里应该可以实现递归添加
        /// </summary>
        /// <param name="folderModel"></param>
        /// <param name="folderList"></param>
        /// <returns></returns>
        public async Task <FolderList> OpenAsync(FolderModel folderModel, FolderList folderList)
        {
            if (folderModel == null)
            {
                return(folderList);
            }
            if (folderModel.IsDeleteVisibility == Visibility.Collapsed)
            {
                // 如果是添加新文件夹的按钮
                var folderPicker = new FolderPicker();
                folderPicker.FileTypeFilter.Add("*");
                folderPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
                var folder = await folderPicker.PickSingleFolderAsync();

                if (folder == null)
                {
                    return(folderList);
                }
                var accessToken = StorageApplicationPermissions.FutureAccessList.Add(folder);
                folderModel = new FolderModel
                {
                    FolderPath  = folder.Path,
                    AccessToken = accessToken
                };
                folderList = Add(folderModel, folderList);
            }
            else
            {
                var folder = await _folderModelService.GetFolder(folderModel.AccessToken);

                await Launcher.LaunchFolderAsync(folder);
            }
            return(folderList);
        }