Skip to content

Commit d6b21ba

Browse files
committed
feature: now image file previewer shows the image size and file size
1 parent 7f87ce3 commit d6b21ba

File tree

7 files changed

+388
-331
lines changed

7 files changed

+388
-331
lines changed

src/Models/RevisionFile.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ public class RevisionBinaryFile
1010
public class RevisionImageFile
1111
{
1212
public Bitmap Image { get; set; } = null;
13+
public long FileSize { get; set; } = 0;
14+
public string ImageType { get; set; } = string.Empty;
15+
public string ImageSize => Image != null ? $"{Image.PixelSize.Width} x {Image.PixelSize.Height}" : "0 x 0";
1316
}
1417

1518
public class RevisionTextFile

src/ViewModels/CommitDetail.cs

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Globalization;
34
using System.IO;
45
using System.Text.RegularExpressions;
56
using System.Threading.Tasks;
@@ -176,19 +177,17 @@ public void ViewRevisionFile(Models.Object file)
176177
if (IMG_EXTS.Contains(ext))
177178
{
178179
var stream = Commands.QueryFileContent.Run(_repo.FullPath, _commit.SHA, file.Path);
179-
var bitmap = stream.Length > 0 ? new Bitmap(stream) : null;
180-
Dispatcher.UIThread.Invoke(() =>
181-
{
182-
ViewRevisionFileContent = new Models.RevisionImageFile() { Image = bitmap };
183-
});
180+
var fileSize = stream.Length;
181+
var bitmap = fileSize > 0 ? new Bitmap(stream) : null;
182+
var imageType = Path.GetExtension(file.Path).TrimStart('.').ToUpper(CultureInfo.CurrentCulture);
183+
var image = new Models.RevisionImageFile() { Image = bitmap, FileSize = fileSize, ImageType = imageType };
184+
Dispatcher.UIThread.Invoke(() => ViewRevisionFileContent = image);
184185
}
185186
else
186187
{
187188
var size = new Commands.QueryFileSize(_repo.FullPath, file.Path, _commit.SHA).Result();
188-
Dispatcher.UIThread.Invoke(() =>
189-
{
190-
ViewRevisionFileContent = new Models.RevisionBinaryFile() { Size = size };
191-
});
189+
var binary = new Models.RevisionBinaryFile() { Size = size };
190+
Dispatcher.UIThread.Invoke(() => ViewRevisionFileContent = binary);
192191
}
193192

194193
return;
@@ -202,7 +201,6 @@ public void ViewRevisionFile(Models.Object file)
202201
var obj = new Models.RevisionLFSObject() { Object = new Models.LFSObject() };
203202
obj.Object.Oid = matchLFS.Groups[1].Value;
204203
obj.Object.Size = long.Parse(matchLFS.Groups[2].Value);
205-
206204
Dispatcher.UIThread.Invoke(() => ViewRevisionFileContent = obj);
207205
}
208206
else
@@ -220,14 +218,8 @@ public void ViewRevisionFile(Models.Object file)
220218
if (commit != null)
221219
{
222220
var body = new Commands.QueryCommitFullMessage(submoduleRoot, file.SHA).Result();
223-
Dispatcher.UIThread.Invoke(() =>
224-
{
225-
ViewRevisionFileContent = new Models.RevisionSubmodule()
226-
{
227-
Commit = commit,
228-
FullMessage = body,
229-
};
230-
});
221+
var submodule = new Models.RevisionSubmodule() { Commit = commit, FullMessage = body };
222+
Dispatcher.UIThread.Invoke(() => ViewRevisionFileContent = submodule);
231223
}
232224
else
233225
{

src/ViewModels/FileHistories.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Collections.Generic;
2+
using System.Globalization;
23
using System.IO;
34
using System.Text.RegularExpressions;
45
using System.Threading.Tasks;
@@ -120,8 +121,10 @@ private void SetViewContentAsRevisionFile()
120121
if (IMG_EXTS.Contains(ext))
121122
{
122123
var stream = Commands.QueryFileContent.Run(_repo.FullPath, _selectedCommit.SHA, _file);
123-
var bitmap = stream.Length > 0 ? new Bitmap(stream) : null;
124-
var image = new Models.RevisionImageFile() { Image = bitmap };
124+
var fileSize = stream.Length;
125+
var bitmap = fileSize > 0 ? new Bitmap(stream) : null;
126+
var imageType = Path.GetExtension(_file).TrimStart('.').ToUpper(CultureInfo.CurrentCulture);
127+
var image = new Models.RevisionImageFile() { Image = bitmap, FileSize = fileSize, ImageType = imageType };
125128
Dispatcher.UIThread.Invoke(() => ViewContent = new FileHistoriesRevisionFile(_file, image));
126129
}
127130
else

0 commit comments

Comments
 (0)