diff --git a/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/IntermediateModels.cs b/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/IntermediateModels.cs index 1f1a18f..1f71ec6 100644 --- a/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/IntermediateModels.cs +++ b/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/IntermediateModels.cs @@ -15,6 +15,7 @@ public class IntermediateSlnFolderModel public required SolutionFolderModel Model { get; set; } public required List Folders { get; set; } public required List Projects { get; set; } + public required List Files { get; set; } } public class IntermediateProjectModel @@ -23,3 +24,9 @@ public class IntermediateProjectModel public required string FullFilePath { get; set; } public required Guid Id { get; set; } } + +public class IntermediateSlnFolderFileModel +{ + public required string Name { get; set; } + public required string FullPath { get; set; } +} diff --git a/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs b/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs index 4e755b4..5f45770 100644 --- a/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs +++ b/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/SharpIdeModels.cs @@ -14,6 +14,7 @@ public class SharpIdeSolutionFolder : ISharpIdeNode public required string Name { get; set; } public required List Folders { get; set; } public required List Projects { get; set; } + public required List Files { get; set; } public bool Expanded { get; set; } } public class SharpIdeProjectModel : ISharpIdeNode diff --git a/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/VsPersistenceMapper.cs b/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/VsPersistenceMapper.cs index 2cfaa08..3522cfd 100644 --- a/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/VsPersistenceMapper.cs +++ b/src/SharpIDE.Application/Features/SolutionDiscovery/VsPersistence/VsPersistenceMapper.cs @@ -22,6 +22,11 @@ public static class VsPersistenceMapper Folders = intermediateModel.SolutionFolders.Select(s => new SharpIdeSolutionFolder { Name = s.Model.Name, + Files = s.Files.Select(x => new SharpIdeFile + { + Path = x.FullPath, + Name = x.Name + }).ToList(), Folders = s.Folders.Select(GetSharpIdeSolutionFolder).ToList(), Projects = s.Projects.Select(GetSharpIdeProjectModel).ToList() }).ToList(), @@ -41,11 +46,16 @@ public static class VsPersistenceMapper }; private static SharpIdeSolutionFolder GetSharpIdeSolutionFolder(IntermediateSlnFolderModel folderModel) => new SharpIdeSolutionFolder() + { + Name = folderModel.Model.Name, + Files = folderModel.Files.Select(x => new SharpIdeFile { - Name = folderModel.Model.Name, - Folders = folderModel.Folders.Select(GetSharpIdeSolutionFolder).ToList(), - Projects = folderModel.Projects.Select(GetSharpIdeProjectModel).ToList() - }; + Path = x.FullPath, + Name = x.Name + }).ToList(), + Folders = folderModel.Folders.Select(GetSharpIdeSolutionFolder).ToList(), + Projects = folderModel.Projects.Select(GetSharpIdeProjectModel).ToList() + }; private static async Task GetIntermediateModel(string solutionFilePath, CancellationToken cancellationToken = default) @@ -92,11 +102,20 @@ public static class VsPersistenceMapper }) .ToList(); + var filesInFolder = folder.Files? + .Select(f => new IntermediateSlnFolderFileModel + { + Name = Path.GetFileName(f), + FullPath = new FileInfo(Path.Join(Path.GetDirectoryName(solutionFilePath), f)).FullName + }) + .ToList() ?? []; + return new IntermediateSlnFolderModel { Model = folder, Folders = childFolders, - Projects = projectsInFolder + Projects = projectsInFolder, + Files = filesInFolder }; } } diff --git a/src/SharpIDE.Photino/Components/SolutionExplorer.razor b/src/SharpIDE.Photino/Components/SolutionExplorer.razor index 5a53ceb..d7cc939 100644 --- a/src/SharpIDE.Photino/Components/SolutionExplorer.razor +++ b/src/SharpIDE.Photino/Components/SolutionExplorer.razor @@ -56,6 +56,10 @@ { @GetProjectFragment(childProject) } + @foreach(var file in slnFolder.Files) + { + @GetFileFragment(file) + } } ;