display sln folder files

This commit is contained in:
Matt Parker
2025-08-02 18:47:56 +10:00
parent 0f25d8e59a
commit 8365e3859e
4 changed files with 36 additions and 5 deletions

View File

@@ -15,6 +15,7 @@ public class IntermediateSlnFolderModel
public required SolutionFolderModel Model { get; set; }
public required List<IntermediateSlnFolderModel> Folders { get; set; }
public required List<IntermediateProjectModel> Projects { get; set; }
public required List<IntermediateSlnFolderFileModel> 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; }
}

View File

@@ -14,6 +14,7 @@ public class SharpIdeSolutionFolder : ISharpIdeNode
public required string Name { get; set; }
public required List<SharpIdeSolutionFolder> Folders { get; set; }
public required List<SharpIdeProjectModel> Projects { get; set; }
public required List<SharpIdeFile> Files { get; set; }
public bool Expanded { get; set; }
}
public class SharpIdeProjectModel : ISharpIdeNode

View File

@@ -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<IntermediateSolutionModel> 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
};
}
}

View File

@@ -56,6 +56,10 @@
{
@GetProjectFragment(childProject)
}
@foreach(var file in slnFolder.Files)
{
@GetFileFragment(file)
}
}
</MudTreeViewItem>
</text>;