diff --git a/src/ViewModels/CommitDetail.cs b/src/ViewModels/CommitDetail.cs index 55618897..cf26d529 100644 --- a/src/ViewModels/CommitDetail.cs +++ b/src/ViewModels/CommitDetail.cs @@ -213,13 +213,13 @@ namespace SourceGit.ViewModels var bitmap = fileSize > 0 ? new Bitmap(stream) : null; var imageType = ext!.Substring(1).ToUpper(CultureInfo.CurrentCulture); var image = new Models.RevisionImageFile() { Image = bitmap, FileSize = fileSize, ImageType = imageType }; - Dispatcher.UIThread.Invoke(() => ViewRevisionFileContent = image); + Dispatcher.UIThread.Invoke(() => ViewRevisionFileContent = new FileContent(file.Path, image)); } else { var size = new Commands.QueryFileSize(_repo.FullPath, file.Path, _commit.SHA).Result(); var binary = new Models.RevisionBinaryFile() { Size = size }; - Dispatcher.UIThread.Invoke(() => ViewRevisionFileContent = binary); + Dispatcher.UIThread.Invoke(() => ViewRevisionFileContent = new FileContent(file.Path, binary)); } return; @@ -233,12 +233,12 @@ namespace SourceGit.ViewModels var obj = new Models.RevisionLFSObject() { Object = new Models.LFSObject() }; obj.Object.Oid = matchLFS.Groups[1].Value; obj.Object.Size = long.Parse(matchLFS.Groups[2].Value); - Dispatcher.UIThread.Invoke(() => ViewRevisionFileContent = obj); + Dispatcher.UIThread.Invoke(() => ViewRevisionFileContent = new FileContent(file.Path, obj)); } else { var txt = new Models.RevisionTextFile() { FileName = file.Path, Content = content }; - Dispatcher.UIThread.Invoke(() => ViewRevisionFileContent = txt); + Dispatcher.UIThread.Invoke(() => ViewRevisionFileContent = new FileContent(file.Path, txt)); } }); break; @@ -256,17 +256,17 @@ namespace SourceGit.ViewModels FullMessage = new Models.CommitFullMessage { Message = body } }; - Dispatcher.UIThread.Invoke(() => ViewRevisionFileContent = submodule); + Dispatcher.UIThread.Invoke(() => ViewRevisionFileContent = new FileContent(file.Path, submodule)); } else { Dispatcher.UIThread.Invoke(() => { - ViewRevisionFileContent = new Models.RevisionSubmodule() + ViewRevisionFileContent = new FileContent(file.Path, new Models.RevisionSubmodule() { Commit = new Models.Commit() { SHA = file.SHA }, FullMessage = null, - }; + }); }); } }); diff --git a/src/ViewModels/FileContent.cs b/src/ViewModels/FileContent.cs new file mode 100644 index 00000000..86f2e2b0 --- /dev/null +++ b/src/ViewModels/FileContent.cs @@ -0,0 +1,8 @@ +namespace SourceGit.ViewModels +{ + public class FileContent(string path, object content) + { + public string Path { get; set; } = path; + public object Content { get; set; } = content; + } +} diff --git a/src/ViewModels/FileHistories.cs b/src/ViewModels/FileHistories.cs index 0e474af2..4927362e 100644 --- a/src/ViewModels/FileHistories.cs +++ b/src/ViewModels/FileHistories.cs @@ -12,12 +12,6 @@ using CommunityToolkit.Mvvm.ComponentModel; namespace SourceGit.ViewModels { - public class FileHistoriesRevisionFile(string path, object content) - { - public string Path { get; set; } = path; - public object Content { get; set; } = content; - } - public partial class FileHistoriesSingleRevision : ObservableObject { public bool IsDiffMode @@ -65,7 +59,7 @@ namespace SourceGit.ViewModels var objs = new Commands.QueryRevisionObjects(_repo.FullPath, _revision.SHA, _file).Result(); if (objs.Count == 0) { - ViewContent = new FileHistoriesRevisionFile(_file, null); + ViewContent = new FileContent(_file, null); return; } @@ -86,13 +80,13 @@ namespace SourceGit.ViewModels var bitmap = fileSize > 0 ? new Bitmap(stream) : null; var imageType = Path.GetExtension(_file)!.TrimStart('.').ToUpper(CultureInfo.CurrentCulture); var image = new Models.RevisionImageFile() { Image = bitmap, FileSize = fileSize, ImageType = imageType }; - Dispatcher.UIThread.Invoke(() => ViewContent = new FileHistoriesRevisionFile(_file, image)); + Dispatcher.UIThread.Invoke(() => ViewContent = new FileContent(_file, image)); } else { var size = new Commands.QueryFileSize(_repo.FullPath, _file, _revision.SHA).Result(); var binaryFile = new Models.RevisionBinaryFile() { Size = size }; - Dispatcher.UIThread.Invoke(() => ViewContent = new FileHistoriesRevisionFile(_file, binaryFile)); + Dispatcher.UIThread.Invoke(() => ViewContent = new FileContent(_file, binaryFile)); } return; @@ -106,12 +100,12 @@ namespace SourceGit.ViewModels var lfs = new Models.RevisionLFSObject() { Object = new() }; lfs.Object.Oid = matchLFS.Groups[1].Value; lfs.Object.Size = long.Parse(matchLFS.Groups[2].Value); - Dispatcher.UIThread.Invoke(() => ViewContent = new FileHistoriesRevisionFile(_file, lfs)); + Dispatcher.UIThread.Invoke(() => ViewContent = new FileContent(_file, lfs)); } else { var txt = new Models.RevisionTextFile() { FileName = obj.Path, Content = content }; - Dispatcher.UIThread.Invoke(() => ViewContent = new FileHistoriesRevisionFile(_file, txt)); + Dispatcher.UIThread.Invoke(() => ViewContent = new FileContent(_file, txt)); } }); break; @@ -128,7 +122,7 @@ namespace SourceGit.ViewModels Commit = commit, FullMessage = new Models.CommitFullMessage { Message = message } }; - Dispatcher.UIThread.Invoke(() => ViewContent = new FileHistoriesRevisionFile(_file, module)); + Dispatcher.UIThread.Invoke(() => ViewContent = new FileContent(_file, module)); } else { @@ -137,12 +131,12 @@ namespace SourceGit.ViewModels Commit = new Models.Commit() { SHA = obj.SHA }, FullMessage = null }; - Dispatcher.UIThread.Invoke(() => ViewContent = new FileHistoriesRevisionFile(_file, module)); + Dispatcher.UIThread.Invoke(() => ViewContent = new FileContent(_file, module)); } }); break; default: - ViewContent = new FileHistoriesRevisionFile(_file, null); + ViewContent = new FileContent(_file, null); break; } } diff --git a/src/Views/FileContentViewer.axaml b/src/Views/FileContentViewer.axaml new file mode 100644 index 00000000..716b56d4 --- /dev/null +++ b/src/Views/FileContentViewer.axaml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + diff --git a/src/Views/FileContentViewer.axaml.cs b/src/Views/FileContentViewer.axaml.cs new file mode 100644 index 00000000..4f60608c --- /dev/null +++ b/src/Views/FileContentViewer.axaml.cs @@ -0,0 +1,12 @@ +using Avalonia.Controls; + +namespace SourceGit.Views +{ + public partial class FileContentViewer : UserControl + { + public FileContentViewer() + { + InitializeComponent(); + } + } +} diff --git a/src/Views/FileHistories.axaml b/src/Views/FileHistories.axaml index e7a5c072..f636ee78 100644 --- a/src/Views/FileHistories.axaml +++ b/src/Views/FileHistories.axaml @@ -133,26 +133,8 @@ - - - - - - - - - - - - - + + diff --git a/src/Views/RevisionFiles.axaml b/src/Views/RevisionFiles.axaml index 6575dc66..03350c04 100644 --- a/src/Views/RevisionFiles.axaml +++ b/src/Views/RevisionFiles.axaml @@ -113,7 +113,7 @@ - +