public FolderInfoM ShallowCopy() { FolderInfoM returnValue = (FolderInfoM)this.MemberwiseClone(); returnValue.Files = new ObservableCollection <FileInfoM>(); return(returnValue); }
/// <summary> /// WriteableBitmap Save /// </summary> /// <param name="saveFolder"></param> /// <param name="saveFile"></param> /// <param name="isShareTarget"></param> /// <returns></returns> public abstract Task SaveFileWriteableBitmapAsync(FolderInfoM saveFolder, FileInfoM saveFile, bool isShareTarget = false);
/// <summary> /// GetFiles /// </summary> /// <returns></returns> public abstract Task<IList<FileInfoM>> GetFilesAsync(FolderInfoM folderInfo);
/// <summary> /// Folder에서 SubFolder를 반환한다. /// </summary> /// <param name="folderInfo"></param> /// <returns></returns> public abstract Task<IList<FolderInfoM>> GetSubFolderAsync(FolderInfoM folderInfo);
/// <summary> /// FutureAccessList에서 폴더 접근 권한을 가지고 폴더 정보를 반환받아서 넣어 준다. /// </summary> /// <param name="folderInfo"></param> /// <returns></returns> public abstract Task GetFolderAsync(FolderInfoM folderInfo);
public abstract Task<FolderInfoM> CreateFolderAsync(FolderInfoM parentFolder, string createFolderName);
/// <summary> /// Move Folder /// </summary> /// <param name="sourceFiles"></param> /// <param name="destFolder"></param> /// <returns></returns> public abstract Task<string> MoveFilesAsync(IList<FileInfoM> sourceFiles, FolderInfoM destFolder);
/// <summary> /// Delete Folder /// </summary> /// <param name="folder"></param> /// <returns></returns> public abstract Task<string> DeleteFolderAsync(FolderInfoM folder);
public override async Task<string> MoveFilesAsync(IList<FileInfoM> sourceFiles, FolderInfoM destFolder) { var errorMessage = string.Empty; if (destFolder == null || destFolder.StorageFolder == null || !(destFolder.StorageFolder is StorageFolder)) { errorMessage = "Folder information is not correct."; return errorMessage; } foreach (var file in sourceFiles) { var storageFile = file.StorageFile as StorageFile; if (storageFile != null) { try { await storageFile.MoveAsync(destFolder.StorageFolder as StorageFolder); } catch (Exception ex) { errorMessage = ex.Message; break; } } } return errorMessage; }
public override async Task<string> DeleteFolderAsync(FolderInfoM folder) { var errorMessage = string.Empty; if (folder != null && folder.StorageFolder is StorageFolder) { try { await ((StorageFolder)folder.StorageFolder).DeleteAsync(); } catch (Exception ex) { errorMessage = ex.Message; } } return errorMessage; }
/// <summary> /// 이미지 저장 /// </summary> public override async Task SaveFileWriteableBitmapAsync(FolderInfoM saveFolder, FileInfoM saveFile, bool isShareTarget = false) { if (saveFolder == null || saveFolder.StorageFolder == null) return; var folder = (StorageFolder) saveFolder.StorageFolder; IStorageItem createFile = await folder.TryGetItemAsync(saveFile.FileName + saveFile.ExtName) ?? await folder.CreateFileAsync(saveFile.FileName + saveFile.ExtName); using (IRandomAccessStream stream = await ((StorageFile) createFile).OpenAsync(FileAccessMode.ReadWrite)) { var wb = (WriteableBitmap) ((ImageInfoM) saveFile).WorkedImage; BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, stream); Stream pixelStream = wb.PixelBuffer.AsStream(); var pixels = new byte[pixelStream.Length]; await pixelStream.ReadAsync(pixels, 0, pixels.Length); encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint) wb.PixelWidth, (uint) wb.PixelHeight, 96.0, 96.0, pixels); await encoder.FlushAsync(); } saveFile.StorageFile = createFile; if(isShareTarget == false) saveFile.IsLocalFile = true; }
/// <summary> /// 폴더에 있는 파일 목록 반환 /// </summary> /// <returns></returns> public override async Task<IList<FileInfoM>> GetFilesAsync(FolderInfoM folderInfo) { if (folderInfo == null) return null; var workFolder = (StorageFolder) folderInfo.StorageFolder; var files = await workFolder.GetFilesAsync(); if (files == null) return null; var returnFiles = (from kkk in files orderby kkk.DateCreated descending select new FileInfoM { FileName = kkk.DisplayName, ExtName = kkk.FileType, StorageFile = kkk, IsLocalFile = false, Path = kkk.Path, DateCreated = kkk.DateCreated.ToString(), }).ToList(); return returnFiles; }
public override async Task<IList<FolderInfoM>> GetSubFolderAsync(FolderInfoM folderInfo) { var folder = folderInfo.StorageFolder as StorageFolder; if (folder == null) return null; var subFolders = await folder.GetFoldersAsync(); var returnFolders = (from kkk in subFolders select new FolderInfoM { StorageFolder = kkk, FolderName = kkk.DisplayName, Path = kkk.Path, Token = Cipher.encrypt(kkk.Path), }).ToList(); return returnFolders; }
public override async Task GetFolderAsync(FolderInfoM folderInfo) { var returnValue = await StorageApplicationPermissions.FutureAccessList.GetFolderAsync(folderInfo.Token); folderInfo.StorageFolder = returnValue; }
/// <summary> /// Folder Picker /// </summary> /// <param name="suggestedStartLocation"></param> /// <param name="fileTypeFilters"></param> /// <returns>FolderInfoM</returns> public override async Task<FolderInfoM> GetFolderAsync(CFPickerLocationId suggestedStartLocation, IList<string> fileTypeFilters) { var folderPicker = new FolderPicker { SuggestedStartLocation = (PickerLocationId) Enum.Parse(typeof (PickerLocationId), ((int) suggestedStartLocation).ToString()) }; foreach (string item in fileTypeFilters) { folderPicker.FileTypeFilter.Add(item); } var folder = await folderPicker.PickSingleFolderAsync(); if (folder == null) return null; var folderInfo = new FolderInfoM { StorageFolder = folder, FolderName = folder.DisplayName, Path = folder.Path, Token = Cipher.encrypt(folder.Path), }; StorageApplicationPermissions.FutureAccessList.AddOrReplace(folderInfo.Token, folder); return folderInfo; }
/// <summary> /// Create folder /// </summary> /// <param name="parentFolder"></param> /// <param name="createFolderName"></param> /// <returns></returns> public override async Task<FolderInfoM> CreateFolderAsync(FolderInfoM parentFolder, string createFolderName) { var storageFolder = parentFolder.StorageFolder as StorageFolder; if (storageFolder == null) return null; try { var createFolder = await storageFolder.CreateFolderAsync(createFolderName); return new FolderInfoM { StorageFolder = createFolder, FolderName = createFolder.DisplayName, Path = createFolder.Path, Token = Cipher.encrypt(createFolder.Path), }; } catch (Exception) { return null; } }