From 89b6d41a0c767008907729d40443cb4dc8c42954 Mon Sep 17 00:00:00 2001 From: alcexhim Date: Wed, 29 Apr 2015 12:55:50 -0400 Subject: [PATCH] Implement GetAllObjects() to return both files and folders --- .../FileSystem/FileSystemObjectModel.cs | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/CSharp/Plugins/UniversalEditor.Essential/ObjectModels/FileSystem/FileSystemObjectModel.cs b/CSharp/Plugins/UniversalEditor.Essential/ObjectModels/FileSystem/FileSystemObjectModel.cs index 4d4afe5f..1faf02a0 100644 --- a/CSharp/Plugins/UniversalEditor.Essential/ObjectModels/FileSystem/FileSystemObjectModel.cs +++ b/CSharp/Plugins/UniversalEditor.Essential/ObjectModels/FileSystem/FileSystemObjectModel.cs @@ -338,5 +338,43 @@ namespace UniversalEditor.ObjectModels.FileSystem GetAllFilesRecursively(folder1, ref files, parentPath + pathSeparator + folder1.Name, pathSeparator, searchPattern); } } + + public IFileSystemObject[] GetAllObjects(string pathSeparator = null) + { + if (pathSeparator == null) pathSeparator = "/"; + + List files = new List(); + 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); + } + return files.ToArray(); + } + + private void GetAllObjectsRecursively(Folder folder, ref List files, string parentPath, string pathSeparator, string searchPattern = null) + { + 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); + } + for (int i = 0; i < folder.Folders.Count; i++) + { + Folder folder1 = folder.Folders[i]; + files.Add(folder1); + GetAllObjectsRecursively(folder1, ref files, parentPath + pathSeparator + folder1.Name, pathSeparator, searchPattern); + } + } } }