From 7c266fbf623cb5a695e6e1f80b1d8095b6fe34e0 Mon Sep 17 00:00:00 2001 From: alcexhim Date: Wed, 29 Apr 2015 14:22:57 -0400 Subject: [PATCH] Fixed bugs --- .../FileSystem/FileSystemObjectModel.cs | 40 ++++++++++++------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/CSharp/Plugins/UniversalEditor.Essential/ObjectModels/FileSystem/FileSystemObjectModel.cs b/CSharp/Plugins/UniversalEditor.Essential/ObjectModels/FileSystem/FileSystemObjectModel.cs index 1faf02a0..d9b249bf 100644 --- a/CSharp/Plugins/UniversalEditor.Essential/ObjectModels/FileSystem/FileSystemObjectModel.cs +++ b/CSharp/Plugins/UniversalEditor.Essential/ObjectModels/FileSystem/FileSystemObjectModel.cs @@ -339,40 +339,52 @@ namespace UniversalEditor.ObjectModels.FileSystem } } - public IFileSystemObject[] GetAllObjects(string pathSeparator = null) + public IFileSystemObject[] GetAllObjects(string pathSeparator = null, System.IO.SearchOption option = System.IO.SearchOption.AllDirectories, IFileSystemObjectType objectTypes = IFileSystemObjectType.All) { if (pathSeparator == null) pathSeparator = "/"; List files = new List(); - for (int i = 0; i < mvarFiles.Count; i++) + if ((objectTypes & IFileSystemObjectType.File) == IFileSystemObjectType.File) { - File file = mvarFiles[i]; - files.Add(file); + for (int i = 0; i < mvarFiles.Count; i++) + { + File file = mvarFiles[i]; + files.Add(file); + } } for (int i = 0; i < mvarFolders.Count; i++) { Folder folder = mvarFolders[i]; - files.Add(folder); - GetAllObjectsRecursively(folder, ref files, folder.Name, pathSeparator); + if ((objectTypes & IFileSystemObjectType.Folder) == IFileSystemObjectType.Folder) + { + files.Add(folder); + } + if (option == System.IO.SearchOption.AllDirectories) GetAllObjectsRecursively(folder, ref files, folder.Name, pathSeparator, null, objectTypes); } return files.ToArray(); } - private void GetAllObjectsRecursively(Folder folder, ref List files, string parentPath, string pathSeparator, string searchPattern = null) + private void GetAllObjectsRecursively(Folder folder, ref List files, string parentPath, string pathSeparator, string searchPattern = null, IFileSystemObjectType objectTypes = IFileSystemObjectType.All) { - for (int i = 0; i < folder.Files.Count; i++) + if ((objectTypes & IFileSystemObjectType.File) == IFileSystemObjectType.File) { - File file = folder.Files[i]; - if (searchPattern != null && !file.Name.Match(searchPattern)) continue; + for (int i = 0; i < folder.Files.Count; i++) + { + File file = folder.Files[i]; + if (searchPattern != null && !file.Name.Match(searchPattern)) continue; - File file2 = (file.Clone() as File); - file2.Name = parentPath + pathSeparator + file.Name; - files.Add(file2); + File file2 = (file.Clone() as File); + file2.Name = parentPath + pathSeparator + file.Name; + files.Add(file2); + } } for (int i = 0; i < folder.Folders.Count; i++) { Folder folder1 = folder.Folders[i]; - files.Add(folder1); + if ((objectTypes & IFileSystemObjectType.Folder) == IFileSystemObjectType.Folder) + { + files.Add(folder1); + } GetAllObjectsRecursively(folder1, ref files, parentPath + pathSeparator + folder1.Name, pathSeparator, searchPattern); } }